commit d3bba840176baa1587e53f91dffe1a0b734f37fd Author: Eric Fredricksen Date: Sun Dec 24 16:42:50 2006 +0000 This is an ex post facto rendering of pq6 in its various versions in svn, so that changes will be trackable thataway. As checked in, right here, this is PQ 6.0 diff --git a/Config.dcu b/Config.dcu new file mode 100644 index 0000000..9c04e5e Binary files /dev/null and b/Config.dcu differ diff --git a/Config.ddp b/Config.ddp new file mode 100644 index 0000000..cdc0ee8 Binary files /dev/null and b/Config.ddp differ diff --git a/Config.dfm b/Config.dfm new file mode 100644 index 0000000..bc448d3 --- /dev/null +++ b/Config.dfm @@ -0,0 +1,749 @@ +object K: TK + Left = 335 + Top = 119 + Width = 572 + Height = 567 + Caption = 'K' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 8 + Top = 116 + Width = 28 + Height = 13 + Caption = 'Spells' + end + object Label2: TLabel + Left = 168 + Top = 4 + Width = 64 + Height = 13 + Caption = 'Offense Attrib' + end + object Label3: TLabel + Left = 280 + Top = 228 + Width = 70 + Height = 13 + Caption = 'Defense Atrtrib' + end + object Label4: TLabel + Left = 140 + Top = 228 + Width = 34 + Height = 13 + Caption = 'Shields' + end + object Label5: TLabel + Left = 8 + Top = 228 + Width = 27 + Height = 13 + Caption = 'Armor' + end + object Label6: TLabel + Left = 8 + Top = 4 + Width = 41 + Height = 13 + Caption = 'Weapon' + end + object Label7: TLabel + Left = 164 + Top = 428 + Width = 40 + Height = 13 + Caption = 'Speicals' + end + object Label8: TLabel + Left = 8 + Top = 428 + Width = 47 + Height = 13 + Caption = 'Item Attrib' + end + object Label9: TLabel + Left = 320 + Top = 428 + Width = 34 + Height = 13 + Caption = 'Item Of' + end + object Label10: TLabel + Left = 172 + Top = 116 + Width = 58 + Height = 13 + Caption = 'Boring Items' + end + object Label11: TLabel + Left = 12 + Top = 344 + Width = 125 + Height = 13 + Caption = 'Monsters (name level item)' + end + object Label12: TLabel + Left = 236 + Top = 344 + Width = 162 + Height = 13 + Caption = 'Monster mods (adjustment pattern)' + end + object Label13: TLabel + Left = 324 + Top = 8 + Width = 56 + Height = 13 + Caption = 'OffenseBad' + end + object Label14: TLabel + Left = 404 + Top = 232 + Width = 59 + Height = 13 + Caption = 'DefenseBad' + end + object Spells: TMemo + Left = 8 + Top = 132 + Width = 153 + Height = 89 + Lines.Strings = ( + 'Slime Finger' + 'Rabbit Punch' + 'Hastiness' + 'Good Move' + 'Sadness' + 'Seasick' + 'Gyp' + 'Innoculate' + 'Cone of Annoyance' + 'Magnetic Orb' + 'Invisible Hands' + 'Revolting Cloud' + 'Aqueous Humor' + 'Spectral Miasma' + 'Clever Fellow' + 'Lockjaw' + 'Hydrophobia' + 'Mulligan' + 'Nestor'#39's Bright Idea' + 'Holy Batpole' + 'Tumor (Benign)' + 'Braingate' + 'Animate Nightstand' + 'Eye of the Troglodyte' + 'Curse Name' + 'Dropsy' + 'Vitreous Humor' + 'Roger'#39's Grand Illusion' + 'Covet' + 'Astral Miasma' + 'Spectral Oyster' + 'Acrid Hands' + 'Angioplasty' + 'Grognor'#39's Big Day Off' + 'Tumor (Malignant)' + 'Animate Tunic' + 'Ursine Armor' + 'Holy Roller' + 'Tonsilectomy' + 'Curse Family' + 'Infinite Confusion') + TabOrder = 0 + WordWrap = False + end + object OffenseAttrib: TMemo + Left = 168 + Top = 20 + Width = 141 + Height = 89 + Lines.Strings = ( + 'Polished|+1' + 'Serrated|+1' + 'Heavy|+1' + 'Pronged|+2' + 'Steely|+2' + 'Vicious|+3' + 'Venomed|+4' + 'Dancing|+5' + 'Invisible|+6' + 'Vorpal|+7') + TabOrder = 1 + WordWrap = False + end + object DefenseAttrib: TMemo + Left = 280 + Top = 244 + Width = 113 + Height = 89 + Lines.Strings = ( + 'Studded|+1' + 'Banded|+2' + 'Gilded|+2' + 'Festooned|+3' + 'Holy|+4' + 'Cambric|+1' + 'Fine|+4' + 'Impressive|+5' + 'Custom|+3') + TabOrder = 2 + WordWrap = False + end + object Shields: TMemo + Left = 140 + Top = 244 + Width = 133 + Height = 89 + Lines.Strings = ( + 'Parasol|0' + 'Pie Plate|1' + 'Garbage Can Lid|2' + 'Buckler|3' + 'Plexiglass|4' + 'Round Shield|5' + 'Scutum|6' + 'Kite Shield|7' + 'Pavise|8' + 'Tower Shield|9' + 'Baroque Shield|11' + 'Magnetic Field|18') + TabOrder = 3 + WordWrap = False + end + object Armors: TMemo + Left = 8 + Top = 244 + Width = 129 + Height = 89 + Lines.Strings = ( + 'Lace|1' + 'Macrame|2' + 'Burlap|3' + 'Canvas|4' + 'Flannel|5' + 'Chamois|6' + 'Pleathers|7' + 'Leathers|8' + 'Ringmail|10' + 'Scale Mail|12' + 'Chainmail|14' + 'Splint Mail|15' + 'Platemail|16' + 'ABS|17' + 'Kevlar|18' + 'Titanium|19' + 'Mithril Mail|20' + 'Diamond Mail|25' + 'Plasma|30') + TabOrder = 4 + WordWrap = False + end + object Weapons: TMemo + Left = 8 + Top = 20 + Width = 153 + Height = 89 + Lines.Strings = ( + 'Stick|0' + 'Broken Bottle|1' + 'Shiv|1' + 'Bowie Knife|2' + 'Claw Hammer|2' + 'Andiron|3' + 'Hatchet|3' + 'Crowbar|4' + 'Mace|4' + 'Shortsword|5' + 'Longiron|5' + 'Zip Gun|6' + 'Longsword|6' + 'Broadsword|7' + 'Morning Star|8' + 'Bastard Sword|9' + 'Lance|10' + 'Halberd|11' + 'Poleax|12' + 'Bandyclef|15' + 'Bandyclef|15') + TabOrder = 5 + WordWrap = False + end + object Specials: TMemo + Left = 164 + Top = 444 + Width = 149 + Height = 89 + Lines.Strings = ( + 'Diadem' + 'Festoon' + 'Gemstone' + 'Phial' + 'Tiara' + 'Scabbard' + 'Arrow' + 'Lens' + 'Lamp' + 'Hymnal' + 'Fleece' + 'Laurel' + 'Brooch' + 'Gimlet' + 'Cobble' + 'Albatross' + 'Brazier' + 'Bandolier' + 'Tome' + 'Garnet' + 'Amethyst' + 'Candelabra' + 'Corset' + 'Sphere' + 'Sceptre' + 'Ankh' + 'Talisman' + 'Orb' + 'Gammel') + TabOrder = 6 + WordWrap = False + end + object ItemAttrib: TMemo + Left = 8 + Top = 444 + Width = 149 + Height = 89 + Lines.Strings = ( + 'Golden' + 'Gilded' + 'Spectral' + 'Astral' + 'Garlanded' + 'Precious' + 'Crafted' + 'Dual' + 'Filigreed' + 'Cruciate' + 'Arcane' + 'Blessed' + 'Reverential' + 'Lucky' + 'Enchanted' + 'Gleaming' + 'Grandiose' + 'Sacred' + 'Legendary' + 'Mythic' + 'Crystalline' + 'Austere' + 'Ostentatious' + 'One True' + 'Proverbial') + TabOrder = 7 + WordWrap = False + end + object ItemOfs: TMemo + Left = 320 + Top = 444 + Width = 149 + Height = 89 + Lines.Strings = ( + 'Foreboding' + 'Foreshadowing' + 'Nervousness' + 'Happiness' + 'Torpor' + 'Danger' + 'Craft' + 'Silence' + 'Invisibility' + 'Rapidity' + 'Pleasure' + 'Practicality' + 'Hurting' + 'Joy' + 'Petulance' + 'Intrusion' + 'Chaos' + 'Suffering' + 'Extroversion' + 'Frenzy' + 'Solitude' + 'Punctuality' + 'Efficiency' + 'Comfort' + 'Patience' + 'Internment' + 'Incarceration' + 'Misapprehension' + 'Loyalty' + 'Envy' + 'Acrimony' + 'Worry' + 'Fear' + 'Awe' + 'Guile' + 'Prurience' + 'Fortune' + 'Perspicacity' + 'Domination' + 'Submission' + 'Fealty' + 'Hunger' + 'Despair' + 'Cruelty' + 'Grob' + 'Dignard' + 'Ra' + 'the Bone' + 'Diamonique' + 'Electrum') + TabOrder = 8 + WordWrap = False + end + object BoringItems: TMemo + Left = 168 + Top = 132 + Width = 149 + Height = 89 + Lines.Strings = ( + 'nail' + 'lunchpail' + 'sock' + 'I.O.U.' + 'cookie' + 'pint' + 'toothpick' + 'writ' + 'newspaper' + 'letter' + 'plank' + 'hat' + 'egg' + 'coin' + 'needle' + 'bucket' + 'ladder' + 'chicken' + 'twig' + 'dirtclod' + 'counterpane' + 'vest' + 'teratoma' + 'bunny' + 'rock' + 'pole' + 'carrot' + 'canoe' + 'inkwell' + 'hoe' + 'bandage' + 'trowel' + 'planter box' + 'anvil' + 'axle' + 'tuppence' + 'casket') + TabOrder = 9 + WordWrap = False + end + object Monsters: TMemo + Left = 8 + Top = 360 + Width = 221 + Height = 61 + Lines.Strings = ( + 'Anhkheg|6|chitin' + 'Ant|0|antenna' + 'Ape|4|ass' + 'Baluchitherium|14|ear' + 'Beholder|10|eyestalk' + 'Black Pudding|10|saliva' + 'Blink Dog|4|eyelid' + 'Cub Scout|1|neckercheif' + 'Girl Scout|2|cookie' + 'Boy Scout|3|merit badge' + 'Eagle Scout|4|merit badge' + 'Bugbear|3|skin' + 'Bugboar|3|tusk' + 'Boogie|3|slime' + 'Camel|2|hump' + 'Carrion Crawler|3|egg' + 'Catoblepas|6|neck' + 'Centaur|4|rib' + 'Centipede|0|leg' + 'Cockatrice|5|wattle' + 'Couatl|9|wing' + 'Crayfish|0|antenna' + 'Demogorgon|53|tentacle' + 'Jubilex|17|gel' + 'Manes|1|tooth' + 'Orcus|27|wand' + 'Succubus|6|bra' + 'Vrock|8|neck' + 'Hezrou|9|leg' + 'Glabrezu|10|collar' + 'Nalfeshnee|11|tusk' + 'Marilith|7|arm' + 'Balor|8|whip' + 'Yeenoghu|25|flail' + 'Asmodeus|52|leathers' + 'Baalzebul|43|pants' + 'Barbed Devil|8|flame' + 'Bone Devil|9|hook' + 'Dispater|30|matches' + 'Erinyes|6|thong' + 'Geryon|30|cornucopia' + 'Malebranche|5|fork' + 'Ice Devil|11|snow' + 'Lemure|3|blob' + 'Pit Fiend|13|seed' + 'Anklyosaurus|9|tail' + 'Brontosaurus|30|brain' + 'Diplodocus|24|fin' + 'Elasmosaurus|15|neck' + 'Gorgosaurus|13|arm' + 'Iguanadon|6|thumb' + 'Megalosaurus|12|jaw' + 'Monoclonius|8|horn' + 'Pentasaurus|12|head' + 'Stegosaurus|18|plate' + 'Triceratops|16|horn' + 'Tyranosauraus Rex|18|forearm' + 'Djinn|7|lamp' + 'Doppleganger|4|face' + 'Black Dragon|7|*' + 'Plaid Dragon|7|sporrin' + 'Blue Dragon|9|*' + 'Beige Dragon|9|*' + 'Brass Dragon|7|pole' + 'Tin Dragon|8|*' + 'Bronze Dragon|9|medal' + 'Chromatic Dragon|16|mineral water' + 'Copper Dragon|8|loafer' + 'Gold Dragon|8|filling' + 'Green Dragon|8|*' + 'Platinum Dragon|21|*' + 'Red Dragon|10|cocktail' + 'Silver Dragon|10|*' + 'White Dragon|6|tooth' + 'Dragon Turtle|13|shell' + 'Dryad|2|acorn' + 'Dwarf|1|drawers' + 'Eel|2|sashimi' + 'Efreet|10|cinder' + 'Sand Elemental|8|glass' + 'Bacon Elemental|10|bit' + 'Porn Elemental|12|lube' + 'Cheese Elemental|14|curd' + 'Hair Elemental|16|follicle' + 'Swamp Elf|1|lilypad' + 'Brown Elf|1|tusk' + 'Sea Elf|1|jerkin' + 'Ettin|10|fur' + 'Frog|0|leg' + 'Violet Fungi|3|spore' + 'Gargoyle|4|gravel' + 'Gelatinous Cube|4|jam' + 'Ghast|4|vomit' + 'Ghost|10|*' + 'Ghoul|2|muscle' + 'Humidity Giant|12|drops' + 'Beef Giant|11|steak' + 'Quartz Giant|10|crystal' + 'Porcelain Giant|9|fixture' + 'Rice Giant|8|grain' + 'Cloud Giant|12|condensation' + 'Fire Giant|11|cigarettes' + 'Frost Giant|10|snowman' + 'Hill Giant|8|corpse' + 'Stone Giant|9|hatchling' + 'Storm Giant|15|barometer' + 'Gnoll|2|collar' + 'Gnome|1|hat' + 'Goblin|1|ear' + 'Jellyrock|9|seedling' + 'Beer Golem|15|foam' + 'Cardboard Golem|14|recycling' + 'Rubber Golem|16|ball' + 'Leather Golem|15|fob' + 'Gorgon|8|testicle' + 'Gray Ooze|3|gravy' + 'Green Slime|2|sample' + 'Griffon|7|nest' + 'Banshee|7|larynx' + 'Harpy|3|mascara' + 'Hell Hound|5|tongue' + 'Hippocampus|4|mane' + 'Hippogriff|3|egg' + 'Hobgoblin|1|patella' + 'Homonculus|2|fluid' + 'Hydra|8|liver' + 'Imp|2|tail' + 'Invisible Stalker|8|*' + 'Kobold|1|penis' + 'Leprechaun|1|wallet' + 'Leucrotta|6|hoof' + 'Lich|11|crown' + 'Lizard Man|2|tail' + 'Lurker|10|sac' + 'Manticore|6|spike' + 'Mastodon|12|tusk' + 'Medusa|6|eye' + 'Pirate|1|booty' + 'Berserker|1|shirt' + 'Caveman|2|club' + 'Dervish|1|robe' + 'Merman|1|trident' + 'Mermaid|1|gills' + 'Mimic|9|hinge' + 'Mind Flayer|8|tentacle' + 'Minotaur|6|map' + 'Yellow Mold|1|spore' + 'Morkoth|7|teeth' + 'Mummy|6|gauze' + 'Naga|9|rattle' + 'Neo-Otyugh|11|organ ' + 'Nixie|1|webbing' + 'Nymph|3|hanky' + 'Ochre Jelly|6|nucleus' + 'Octopus|2|beak' + 'Ogre|4|talon' + 'Ogre Mage|5|apparel' + 'Orc|1|snout' + 'Otyugh|7|organ' + 'Owlbear|5|feather' + 'Pegasus|4|aileron' + 'Peryton|4|antler' + 'Piercer|3|tip' + 'Pixie|1|dust' + 'Man-o-war|3|tentacle' + 'Purple Worm|15|dung' + 'Quasit|3|tail' + 'Rakshasa|7|pajamas' + 'Rat|0|tail' + 'Remorhaz|11|protrusion' + 'Roc|18|wing' + 'Roper|11|twine' + 'Rot Grub|1|eggsac' + 'Rust Monster|5|shavings' + 'Satyr|5|hoof' + 'Sea Hag|3|wart' + 'Shadow|3|silhouette' + 'Shambling Mound|10|mulch' + 'Shedu|9|hoof' + 'Shrieker|3|stalk' + 'Skeleton|1|clavicle' + 'Spectre|7|vestige' + 'Sphinx|10|paw' + 'Spider|0|web' + 'Sprite|1|can' + 'Stirge|1|proboscis' + 'Su-monster|5|tail' + 'Sylph|3|thigh' + 'Titan|20|sandal' + 'Trapper|12|shag' + 'Treant|10|acorn' + 'Triton|3|scale' + 'Troglodyte|2|tail' + 'Troll|6|hide' + 'Umber Hulk|8|claw' + 'Unicorn|4|blood' + 'Vampire|8|pancreas' + 'Wight|4|lung' + 'Will-o-the-Wisp|9|wisp' + 'Wraith|5|finger' + 'Wyvern|7|poison' + 'Xorn|7|jaw' + 'Yeti|4|fur' + 'Zombie|2|forehead' + 'Wasp|0|stinger' + 'Rat|1|tail' + 'Bunny|0|ear' + 'Moth|0|dust' + 'Beagle|0|collar' + 'Midge|0|corpse' + 'Ostrich|1|beak' + 'Billy Goat|1|beard' + 'Bat|1|wing' + 'Koala|2|heart' + 'Wolf|2|paw' + 'Whippet|2|collar' + 'Uruk|2|boot') + TabOrder = 10 + WordWrap = False + end + object MonMods: TMemo + Left = 232 + Top = 360 + Width = 221 + Height = 61 + Lines.Strings = ( + '-4 f'#339'tal *' + '-4 dying *' + '-3 crippled *' + '-3 baby *' + '-2 adolescent' + '-2 very sick *' + '-1 lesser *' + '-1 undernourished *' + '+1 greater *' + '+1 * Elder' + '+2 war *' + '+2 Battle-*' + '+3 Were-*' + '+3 undead *' + '+4 giant *' + '+4 * Rex') + TabOrder = 11 + WordWrap = False + end + object OffenseBad: TMemo + Left = 316 + Top = 20 + Width = 141 + Height = 89 + Lines.Strings = ( + 'Dull|-2' + 'Tarnished|-1' + 'Rusty|-3' + 'Padded|-5' + 'Bent|-4' + 'Mini|-4' + 'Rubber|-6' + 'Nerf|-7' + 'Unbalanced|-2') + TabOrder = 12 + WordWrap = False + end + object DefenseBad: TMemo + Left = 396 + Top = 244 + Width = 141 + Height = 89 + Lines.Strings = ( + 'Holey|-1' + 'Patched|-1' + 'Threadbare|-2' + 'Faded|-1' + 'Rusty|-3' + 'Motheaten|-3' + 'Mildewed|-2' + 'Torn|-3' + 'Dented|-3' + 'Cursed|-5' + 'Plastic|-4' + 'Cracked|-4' + 'Warped|-3' + 'Corroded|-3') + TabOrder = 13 + WordWrap = False + end +end diff --git a/Config.pas b/Config.pas new file mode 100644 index 0000000..43dccf5 --- /dev/null +++ b/Config.pas @@ -0,0 +1,52 @@ +unit Config; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ComCtrls; + +type + TK = class(TForm) + Spells: TMemo; + Label1: TLabel; + OffenseAttrib: TMemo; + Label2: TLabel; + DefenseAttrib: TMemo; + Label3: TLabel; + Shields: TMemo; + Label4: TLabel; + Armors: TMemo; + Label5: TLabel; + Weapons: TMemo; + Label6: TLabel; + Specials: TMemo; + Label7: TLabel; + ItemAttrib: TMemo; + Label8: TLabel; + ItemOfs: TMemo; + Label9: TLabel; + BoringItems: TMemo; + Label10: TLabel; + Monsters: TMemo; + MonMods: TMemo; + Label11: TLabel; + Label12: TLabel; + OffenseBad: TMemo; + Label13: TLabel; + DefenseBad: TMemo; + Label14: TLabel; + private + { Private declarations } + public + { Public declarations } + end; + +var + K: TK; + +implementation + +{$R *.dfm} + +end. diff --git a/Front.dcu b/Front.dcu new file mode 100644 index 0000000..2bf2a98 Binary files /dev/null and b/Front.dcu differ diff --git a/Front.ddp b/Front.ddp new file mode 100644 index 0000000..cdc0ee8 Binary files /dev/null and b/Front.ddp differ diff --git a/Front.dfm b/Front.dfm new file mode 100644 index 0000000..78875d8 --- /dev/null +++ b/Front.dfm @@ -0,0 +1,1664 @@ +object Form3: TForm3 + Left = 389 + Top = 159 + AlphaBlendValue = 100 + BorderIcons = [] + BorderStyle = bsNone + BorderWidth = 2 + ClientHeight = 470 + ClientWidth = 291 + Color = clRed + TransparentColorValue = clWhite + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Icon.Data = { + 0000010001002020000000000000A80800001600000028000000200000004000 + 0000010008000000000080040000000000000000000000000000000000000000 + 0000000080000080000000808000800000008000800080800000C0C0C000C0DC + C000F0CAA60004040400080808000C0C0C0011111100161616001C1C1C002222 + 220029292900555555004D4D4D004242420039393900807CFF005050FF009300 + D600FFECCC00C6D6EF00D6E7E70090A9AD000000330000006600000099000000 + CC00003300000033330000336600003399000033CC000033FF00006600000066 + 330000666600006699000066CC000066FF000099000000993300009966000099 + 99000099CC000099FF0000CC000000CC330000CC660000CC990000CCCC0000CC + FF0000FF660000FF990000FFCC00330000003300330033006600330099003300 + CC003300FF00333300003333330033336600333399003333CC003333FF003366 + 00003366330033666600336699003366CC003366FF0033990000339933003399 + 6600339999003399CC003399FF0033CC000033CC330033CC660033CC990033CC + CC0033CCFF0033FF330033FF660033FF990033FFCC0033FFFF00660000006600 + 330066006600660099006600CC006600FF006633000066333300663366006633 + 99006633CC006633FF00666600006666330066666600666699006666CC006699 + 00006699330066996600669999006699CC006699FF0066CC000066CC330066CC + 990066CCCC0066CCFF0066FF000066FF330066FF990066FFCC00CC00FF00FF00 + CC009999000099339900990099009900CC009900000099333300990066009933 + CC009900FF00996600009966330099336600996699009966CC009933FF009999 + 330099996600999999009999CC009999FF0099CC000099CC330066CC660099CC + 990099CCCC0099CCFF0099FF000099FF330099CC660099FF990099FFCC0099FF + FF00CC00000099003300CC006600CC009900CC00CC0099330000CC333300CC33 + 6600CC339900CC33CC00CC33FF00CC660000CC66330099666600CC669900CC66 + CC009966FF00CC990000CC993300CC996600CC999900CC99CC00CC99FF00CCCC + 0000CCCC3300CCCC6600CCCC9900CCCCCC00CCCCFF00CCFF0000CCFF330099FF + 6600CCFF9900CCFFCC00CCFFFF00CC003300FF006600FF009900CC330000FF33 + 3300FF336600FF339900FF33CC00FF33FF00FF660000FF663300CC666600FF66 + 9900FF66CC00CC66FF00FF990000FF993300FF996600FF999900FF99CC00FF99 + FF00FFCC0000FFCC3300FFCC6600FFCC9900FFCCCC00FFCCFF00FFFF3300CCFF + 6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF + 66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7 + D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080 + 80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF005852 + 5151515151515258585858585858585858585858585858585852515151515852 + 51514A4A4A515152585858585858585858585858585858585251514B4A4B5852 + 514B4A4A4A4B51515258585858585858585858585858585251514B4A4A4A5852 + 150F4A4A4A4A4B5151515152525251525252525252525151514A0F154A4B580B + 0E0E0B4A4A4A4A4A5151515151515151515151515151514B4B0B0E0E0B512311 + 15220E514A4A4A4A4A4A4A4B4A4A4A4A4A4A4A4A4A4A4A4A4A0F22143D234313 + 22431151514A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A11432213435822 + 23296710294B4A4A44442244154422441544224444444A221012292322585858 + 58514443151D4B4A442215221522152215221522154B0E151544515252585858 + 5879294A43140D4A22150D0E2243100E1D0D2215220D14434A03525258585858 + 585852514A224A430E0E1443220D111543140E0E4344224A4A51515258585858 + 585858514B1514220E2243150D444444444322222214154B4B4B515258585858 + 585858585174151D4A434A4A15104422234A434A1D15742A4A4B515258585858 + 585858585222444B457422224B44224B222274454B4422524A4B515258585858 + 58585858510A4B4C3F4C44EA4A22224A6D444C3F4C4B0A4A4A51515258585858 + 585858580D15294B4523ECC8C44A4AE946EC23454B29150D4A51515858585858 + 58585858444A4A234AAEC8FCFCA7E9F9F946AE44234A4A435151525858585858 + 58585858232244224AEFA7FCFC62F9F9F946EF4A224422235151525858585858 + 585858584B434A110C4A8DA862F9F9F9698D4A0C114A43295151525858585858 + 5858585852222210514A8D46F9F9F962A78D4A51104322524B51525858585858 + 58585858524B0C034AEB46F9F9F962FCFCA7F84A030C4B4A4A51515258585858 + 5858585251514B4AED46F9F9F9E3A8FCFCFCA7ED4A4B4A4A4A4B515152585858 + 58585851514B4AED46F9F9F9E3F7F7E6FCFCFCA7ED4A4A4A4A4A4B5152585858 + 585852514B4AEB46F9F9F9E3ED525892E6FCFCFCA7EB4A4A4A4A4A4B51525858 + 585852514A6D46F9F9F9E3ED5858585892E6FCFCFCA76D4A4A4A4A4A51515858 + 5858514B14B5F047F9E3F7585858585858B5E6FCC8DDB5144A4A4A4A51515858 + 585852AE09F3F3BCE3B55858585858585858B5D0DDF3F309AE4A4B4B51515858 + 5858BCF4F5F4F4F4075858585858585858585807F4F4F4F5DEBC515151525858 + 58991BF5F5F2DDB6585858585858585858585858B6DDF3F5F51B995152585858 + 5892B51909B592585858585858585858585858585892B509DDB5925858585858 + 58720909ECEB58585858585858585858585858585858F8EC0909725858585858 + 58F78DAEED5858585858585858585858585858585858581CAE8D925858580000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000} + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 291 + Height = 470 + Align = alClient + BevelInner = bvLowered + Color = clWhite + TabOrder = 0 + object Logo: TImage + Left = 2 + Top = 15 + Width = 287 + Height = 200 + Cursor = crHandPoint + Align = alTop + AutoSize = True + Center = True + Picture.Data = { + 07544269746D617056B60000424D56B60000000000003604000028000000E300 + 0000C8000000010008000000000020B20000C40E0000C40E0000000100000000 + 000000000000000080000080000000808000800000008000800080800000C0C0 + C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020 + E00000400000004020000040400000406000004080000040A0000040C0000040 + E00000600000006020000060400000606000006080000060A0000060C0000060 + E00000800000008020000080400000806000008080000080A0000080C0000080 + E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0 + E00000C0000000C0200000C0400000C0600000C0800000C0A00000C0C00000C0 + E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0 + E00040000000400020004000400040006000400080004000A0004000C0004000 + E00040200000402020004020400040206000402080004020A0004020C0004020 + E00040400000404020004040400040406000404080004040A0004040C0004040 + E00040600000406020004060400040606000406080004060A0004060C0004060 + E00040800000408020004080400040806000408080004080A0004080C0004080 + E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0 + E00040C0000040C0200040C0400040C0600040C0800040C0A00040C0C00040C0 + E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0 + E00080000000800020008000400080006000800080008000A0008000C0008000 + E00080200000802020008020400080206000802080008020A0008020C0008020 + E00080400000804020008040400080406000804080008040A0008040C0008040 + E00080600000806020008060400080606000806080008060A0008060C0008060 + E00080800000808020008080400080806000808080008080A0008080C0008080 + E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0 + E00080C0000080C0200080C0400080C0600080C0800080C0A00080C0C00080C0 + E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0 + E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000 + E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020 + E000C0400000C0402000C0404000C0406000C0408000C040A000C040C000C040 + E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060 + E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080 + E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0 + E000C0C00000C0C02000C0C04000C0C06000C0C08000C0C0A000F0FBFF00A4A0 + A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF + FF00FFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F6FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F6FFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFF6F6F6F60808F6F6F6F6F6F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F60808F6F6F6F6FFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFF6F6F6080807070707070808F6F6 + F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F60808070707070708 + 08F6F6F6FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFF6F608080707F7F7F7F7F7 + 07070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F608070707F7F7 + F7F7F707070808F6F6FFFFFFFFFFFFFFFF00FFFFFFFFFFFFF6F6080707F7F7A4 + A4A4A4A4F7F707070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608070707 + F7F7A4A4A4A4A4F7F7070708F6F6FFFFFFFFFFFFFF00FFFFFFFFFFF6F60807F7 + F7A4A49B9B9B9BA4A4A4F7F7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608 + 0707F7F7A4A4A49B9B9B9BA4A4F7F70708F6F6FFFFFFFFFFFF00FFFFFFFFF6F6 + 0807F7F7A4A45B5B5B5B5B5B9B9BA4A4F70708F6F6FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF6F60807F7A4A49B9B5B5B5B5B5B5B9BA4F7F70708F6F6FFFFFFFFFF00FFFF + FFFFF6F60707F7A4A49BA4529B9B5252525B9BA4A4F70708F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF60807F7A4A49B9B9B529B9B9B52525B9BA4F70707F6F6FFFFFFFF + FF00FFFFFFF6F60807F7A49B9BA4A4075B49525B5B525B9BA4F70708F6F6FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6F608F7F7A4A45B495B07A4A49B5B5B525B9BA4F70708F6 + F6FFFFFFFF00FFFFFFF6F607F7F75BA4070708F7A4004952A45B5B9B9BA4F707 + 08F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF6F6F608F7A49BA4524900A4F7080707A4529B525B9B + A4F707F6F6FFFFFFFF00FFFFFFF608079B5200A4F7A4A4F7A4005352F7A45B9B + 9BA4F7F7070808F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFF6F6F608080808F6F6F6 + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F608080808F6F6F6 + FFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080807F75BA4F7525300A4F7A4A4F7A400 + 52525B9BA4F70708F6FFFFFFFF00FFFFF6F608F79B4949F7F74A52A49B49A4A4 + A4F75B9B5B9BA4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFF6F60807070707 + 070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807070707 + 070708F6F6FFFFFFFFFFFFFFFFFFFFF6F6F6080707F7A45BF7A4A4A4499BA452 + 4AF7F749495B5B9BA4F70708F6F6FFFFFF00FFFFF6F608F7A4A4A408A4A4F7A4 + 5252F7A407F79B5B5B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFF6F60807 + 07F7F7F7F7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807 + 07F7F7F7F7070708F6F6FFFFFFFFFFFFFFF6F6F6080707F7F7A4A49BF707A4F7 + 5252A4F7A4A408A4A4A4A49BA4F70708F6F6FFFFFF00FFFFFFF6F60752F708F7 + 0708F60752A4F7A4F7A4495252525B9BA4A4A4F7070708F6F6F6F6FFFFFFFFFF + F6F60707F7A4A4A4A4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F6F60807F7A4A4A4A4F70707F6F6FFFFFFFFFFF6F6F6F6080707F7A4A49B5249 + A4F7A4F7A45207F60807F708F75207F7A4F70708F6FFFFFFFF00FFFFFFF6FF07 + 49A407F708F6F65B5BF7F70707A452525B52525B5B9BA4A4F7F7070708F6F6F6 + F6F6F6F6F60807F7A4A49B9BA4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF6F60807F7A4A49BA4A4F70708F6F6F6F6F6F6F6F6080707F7F7A4A4 + 9B9B5252A40707F7F75B5BF6F608F707A44907F6F7F707F6F6FFFFFFFF00FFFF + FFFFF6A4A452A4A408F6F7499BF7A4F6F6A4A407529B5B525B5B5B9BA4A4F707 + 07070808F6F6F6080807F7F7A4A49B9BA4F70708F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6F60807F7A4A49B9B9BA4F7070808F6F6F60808070707F7 + A4A49BA4A45207A4A4F6F6A4F79B49F7F608A4A452A4A4F6070708F6F6FFFFFF + FF00FFFFFFFFF65B07A4525BA4A452529BA45B07F7A4F7F75B495B529B5B525B + 9BA4A4F7F7F707070707070707F7A45B529B9B9BA4F70708F6F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF608F7A49B525BA45B5BA4A4F707070707070707 + F7F7F7A4A4A4525B495BF7F7A4F7075BA49B5252A4A45B52A4075B08F607F6F6 + FFFFFFFFFF00FFFFFFFFF69B08F7A49B524949F70707F7A4A4F7A4A4F7A5529B + 5B9B5B525B5B9BA4A4A4F7F7F70707F7F7F752499B52A49B9BF70708F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F79BA4529B49529B5B9BA4A4F7F707 + 07F7F7F7A4A4A4A49B5B9B52A5F7A4A4F7A4A4F70707F74949529BA4F7085B07 + 0808F6FFFFFFFFFFFF00FFFFFFFFFFA4A407F7079B0052A407F6F69CA4F70707 + 0807A407F6A4529B9B525B5B9BA4A4A4A4A4F7A4A49B49A4F707F75B9BF70708 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A45BF707F7A4495B5B5B9B + A4A4A4F7F7A4A4A4A4A4A45BA4F607A407080707F7A49CF6F607A452009B07F7 + 07A49B0708F6F6FFFFFFFFFFFF00FFFFFFFFFF075208A4075B49F79B9BF607A4 + A4F70708F7A49B0708A4005BA45B52525B5B9B9B9BA4A49BA349A4F707F60852 + A4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6075B08F607F7A4 + 495B525B5B9B9BA4A49B9B9B9BA45B00A408079BA4F70807F7A4A407F69B9BF7 + 495B07A40852A40708F6FFFFFFFFFFFFFF00FFFFFFFFFFF652F70749499BF7F7 + 9B07A49BA40707F7F7F7A4075B52A4A49B5B9B5B525B525B5B5B5B9B52525B9B + F7F7A49BA4F7F70708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F608A4A4 + F7F79B5B525253525B5B5B5B9B5B9B9B5B9BA4A4525B07A4F7F7F70707A49BA4 + 079BF7F79B494907F7520708F6F6FFFFFFFFFFFFFF00FFFFFFFFFFFF07525B00 + 5B07A407F75B525B0707F7F7080752529BF70707A452A45B5B9B9B5252525252 + 5BA4A40708A4529B9BA4F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6 + 0807F75BA40807A4A45B52525252529B9B5B5BA452A40707F79B52520708F7F7 + 07075B525BF707A4075B005B52F70708F6FFFFFFFFFFFFFFFF00FFFFFFFFFFFF + F607F79BA4F69B07075200F707F70707079B9BA407F6F7A4F7F7F75B9BA45252 + 9B5B52005B9BA4F707A49B5B5B9BA4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 + F6F6080707F7F7A4A407F7A49B5B00525B9B5252A49B5BF7F7F7A4F7F607A49B + 9B070707F707F7005207079BF6A49BA4F70708F6F6FFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFFF6FF0752F6F7A4A44952529BF707F7A4F7070708089BF707A4A407 + F6F6A49B52A4529B9BF7F7079B52A4525B5B9BA4A4F707070808F6F6F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF6F6F608080707F7A4A4A4529B07F7F79B9B52A4529BA4F6F607A4A407F79B + 08080707F7A4F707F79B525B49F7A4F7F65207F60708F6F6FFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFFFFFFFFF652F7F652A4F70708A45252A4F707080708F69B9B + F7F707F6F6F707F7F7F7F7F707F6FF089B49A49B52525B9BA4A4F7F7070708F6 + F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF6F6F6080707F7F7A4A4A4A4499B08FFF607F7F7F7F7F707F7F6F607 + F7F79B9BF608070807F7A45252A40707F7A452F6F752F6F608F6F6F6FFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFA449A4A408F6F6FFFFF7525BF7F70708 + 08F79BF707F6F607F7F70807A4A4F7A4F7F7F7F7A407A49B9B52525B5B9BA4A4 + F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFF6F6F6080707F7F7A4A49BA49BA407A4F7F7F7F7A4F7A4A40708 + F7F707F6F607F79BF7080807F7F75B52F7F6F6FFFFF6A4A449A4FFF6F6F6F6FF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFF65BA408F6FFFFFFFFFF08F7 + A49BF7F7F7F7F708F607F7F707F7A45B525B5B9CA4F79B525BF7F752499B5B52 + 525B9B9BA4A4F707070808F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6F6F608080707F7A4A4A4A49B4952F7F75B529BF7A49C5B + 5B525BA4F707F7F707F608F7F7F7F7F79BA4A408F6FFFFFFFFFFF6A45BF6FFF6 + F6FFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFF6F6FFFFFFFFFF + FFFFFFFFF6075B52F707F608A4F707F7F7A45B52A4A408F7F6F607525B5BA49B + A4A45B5B5B52525B9BA4A4F7F7070708F6F6F6F6FFFFFFFFF6F6F6F6F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF6F6F6F6F6FFFFFFFFF6F6F6F6080707F7F7A4A49B9B5BA4A49BA45B5B5207 + F6F6F708A4A4525BA4F7F707F7A408F607F7525BF708F6F6FFFFFFFFFFFFFFF6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFF08A45B07A4A4A40708079BA407F60708A49C9B07F6F7 + F7F608FFF6FF0752525B5B525B5B9BA4A4F7F7070708F6F6F6F6F6F6F6F6F6F6 + F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF6F6F6F6F6F6F6F6F6F6F6F6F6080707F7F7A4A4A49B525207FFF6FF08 + F6F7F7F6079B9CA40807F607A49B070807A4A4A4075BA408F6F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF607A4A45BF7F608079BF7F6F7F7525252 + A49B07A407F6FFF6FFF6F6F6A452529B5B525B9B9BA4A4F7F707070808080808 + 080707070808F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFF6F608080707070808080808080707F7F7A4A4A4A45B52A4F6F6 + F6FFF6FFF607A4079BA4525252F7F7F6F79B0708F6F75BA4A407F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6A49B070708A4F7F6F7 + 9BF75207F6A4A49BA407F7F7F79BF707F6075B525B5B525B5B9BA4A4A4F7F707 + 070707070707F707070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFF6F608070707F707070707070707F7F7A4A4A49B9B525B + 07F607F79BF7F7F707A49BA4A4F60752F79BF7F6F7A40807079BA40708F6FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69BA4A407 + F79B0807A4525249F7A49B5B9BA449A49BF75A9BAC07F6075B525B52525B5B9B + A4A4A4F7F7F7F7F7F7F7A4F7F7F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF6F60807F7F7F7A4F7F7F7F7F7F7F7A4A4A49B9B + 525B07F607AC9B5AF79BA449A49B5B9BA4F7495252A407089BF707A4A45B0708 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F6F700A40752F7F69B52A49B495B07F70708F79B080707079BA4F708F6F7525B + 9B52525B5B9B9BA4A4A4A4A4A4A4A4A4A4F7070708F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6080707F7A4A4A4A4A4A4A4A4A4A49B + 9BA45B52F7F608F7A49B070707089BF70807F7075B499BA4529BF6F75207A400 + A4F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF089B9B085BA4F6F75B0807A49B07F7A4F608A4A4F707F6F6F7A4A4 + 070808A4529B5B52525B5B5B9B9B9B9B9B9B9B9BA4A4F70708F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807F7F7A49B9B9B9B9B9B + 9B9B9B9B9B52A4080807A4A4F7F6F607F7A4A408F6A4F7079BA407085BF7F6A4 + 5B089B52A4F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6F607499BF79B0708A4A4A4529BA4A452F708F75B9B0708 + 07F608F7A4F7F7F608A45B9B5B5B5252525B5B9B9B9B9B9BA4A4F70707F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60707A4A4A4A49B + 9B5B5B5B5B5B9B5BA408F6F7F7A4F708F60708079B5BF708F752A4A49B52A4A4 + A408079BF79B49A49BA4F707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF608070052F752F7FF0807A49B9B9BF707F70708 + F75BF7F707F6F6F607F7A4A407F608A49B5B5B5B9B9B5252005BA4A4A4A4F707 + 07F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F607F7A4 + 5B005B529B9B5B5B5B9BA408F607A4A4F707F6F6F607F7F75BF70807F707F79B + 9B9BA40708FFF752F75200A49BA4F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608075B4907F7A40708F7A407F6A4A4 + 0708F70708F7A4A407F6F608F6F607A4A4F708FF08F7A45B5B005249529BA45B + A4F7F70707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 + 08F75BA49B524952005B5BA4F708FF08F7A4A407F6F608F6F607A4A4F70807F7 + 0807A4A4F607A4F70807A4F707495BA49BA4F70708F6F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F607F75B52F7FFA49C5249F7 + F6FF0852A4A4A4A4F70707F7F7F707F6F608F6F6F7A4A407F6FFF6F6070707F6 + F79C07A45BF7F7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFF6F6085BA4079CF7F6070707F6F6FFF607A4A4F7F6F608F6F607F7F7F707 + 07F7A4A4A4A45208FFF6F749529CA4FFF7525BA45B9BA4F707F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608079B529B5B08F6 + 5B5B529BFFF6FFA4A4085B9BA4A4F707F7F7F7F707F6F6F6F608F7A4F708F6FF + F6F7F75BA452F7075A9BF7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFF6F6A45A07F752A45BF7F7F6FFF608F7A4F708F6F6F6F607F7F7 + F7F707F7A4A49B5B08A4A4FFF6FF9B525B5BF6085B9B525B9B9BA4F70708F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F75252 + A4A4A4075BA4075207F6F6079BA4A4F707F7A4A40707F7F7A4F7080808F6F607 + A5A407F7F7A4004949525BF7A300F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6F6F60800A4F79B5B494900A4F7F707A4A507F6F6080808 + F7A4F7F70707A4A4F707F7A4A49B07F6F6075207A45B07A4A4A452529B9BA4F7 + 0708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 + 08F79BA49B07F7A4495BF6A4A4FFF6F6F752A407080807F7A5F7070707F7A4F7 + 0708F6F6F6A45BA40707A45252525B9B9B52A4A4F7F7070808F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFF6F60808F752A4A4A49B5B53A40707A45BA4F6F6F6 + 0807F7A4F7070707F7A5F707080807A452F7F6F6FFA4A4F65B49A4F7079BA49B + A4A3A4F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF6089B9B08F7F7F6A452A49BA452F7FFFFF69B49F708F6F60807F7A407 + 070707F7F7F7F70708F70708FFF607F7A45B52525B9BA4A4A4F7F7070708F6F6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7A4A4A49B9BA4F707F6FF0807 + F70807F7F7F7F707070707A4F70708F6F608F7499BF6FFFFF752A49BA452A4F6 + F7F7089B5BA4F7F707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF08F7499B0708A452A4F70808A4525BF708FFF69C9BF708F6F6 + F607F7A40707070707EEF7A4A4A4F707F7FFFF0807F7A45B52525B5B9BA4A4F7 + F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4F70708FF + FFF707F7A4A4A4F7EE0707070707A4F707F6F6F608F79B9CF6FF08F75B52A408 + F607A452A408079B49A4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF08525B5BA4F60752F707F6F6F608F7A4A407F6F6F7 + A4F70708F6F608F7A4F7080707080708079BF7F7F7EEF6FFF608F7A49B5B5252 + 5B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49BA4A4A4F7 + 08F6FFF6EEF7F7F79B07080708070708F7A4F708F6F60807F7A4F7F6F607A4A4 + F707F6FFFFFF075207F6A45B5B52F707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65BF7A4A4F7F79B07F6F6F6FFFFFF08F7 + 9BA407FF08A4A4F707F6F6F6F79BF708080707080707F7A40789DB07F6FFF607 + F7A4A45252525B9B9BA4A4F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7A4A49B9BA4 + A4F707F6FFF607DB8907A4F707070807070808F79BF7F6F6F607F7A4A408FF07 + A49BF707F6FFFFFFFFFFF69BF7F7A4A4F75B07F6F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A4F7A45B52F7F6F6F6FFFF + FFFFFFFF079B9BF7F6F607A4A40708F6F607A4A407F60807F707A407DB040489 + E408F6FFF607A4A45B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A4 + 9B9BA4A407F6FFF608E4890404DB07A407F70708F607A4A407F6F60807A4A407 + F6F6F79B9B07F6F6FFFFFFFFFFFFFF07525BA4F7A4F7F6F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F7A4A452A5F6F6 + FFFFFFFFFFFFFFFFFFF6F79BA4F7F6F6A49BA40708F608A452F708F7F7F7F707 + 040404040489EDF6FFFF08F7A59B5B52525B5B9BA4A4F7F7070708F6F6F6FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7 + A4A49B9BA4A5F708FFFFF6ED89040404040407F7F7F7F708F752A408F60807A4 + 9BA4F6F6F7A49BF7F6F6FFFFFFFFFFFFFFFFFFF6F752A4A4F7F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A452 + A4F6FFFFFFFFFFFFFFFFFFFFFFFFFF07A45BA407F6079B9BF707F608A49BA4A4 + 07A407D2040404040404049207F6FFF607F7A49B5252525B5B9BA4A4F7F70708 + 08F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080807 + F7F7A4A49B9B9BA4F707F6FFF6079204040404040404D207A407A4A49BA408F6 + 07F79B9B07F607A45B9B07F6FFFFFFFFFFFFFFFFFFFFFFFFF6A452A4F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF07F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6079B9BF708F6F79BA4F708 + F6F7A4F7F7F7ED040404040404040404070707F6FFF607F7A45B5252525B9BA4 + A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6 + 080707F7F7A4A49B9BA4F707F6FFF6070707040404040404040404EDF7F7F7A4 + F7F608F7A49BF7F608F79B9B07F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFF607FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F75BA4F7F6 + F6F7A4A4F7AC0707A407890404040404040404E4F6E589E408F6FFF607F7A45B + 52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 + F6F6080707F7F7A4A49B9BA4F707F6FFF608E489E5F6E4040404040404040489 + 07A40707ACF7A4A4F7F6F6F7A45BF708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F6F7A4A407FFF6A4A44907F707E4040404040404040489080889040492EDF6FF + FF08F7A49B5B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFF + FFF6F6F6080707F7F7A4A49B9BA4A4F708FFFFF6ED9204048908088904040404 + 04040404E407F70749A4A4F6FF07A4A4F708F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF08F7F7F708FF079BF7F708890404040404040404E4F6E4040404 + 04049307F6FFF607F7A49B5252525B9B9BA4A4F707070808F6F6FFFFFFFFFFFF + FFFFFFFFF6F608080707F7A4A49B9B9BA4F707F6FFF607930404040404E4F6E4 + 04040404040404048908F7F79B07FF08F7A4A407F6FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFF08F75B07FFA4A4F7F707DB040404040404920807 + 8904040404040404DB07F6FFF607F7A45B52525B5B9BA4A4F7F7070708F6F6F6 + FFFFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4F707F6FFF607DB040404040404 + 0489070892040404040404DB07F7F7A4A4FF075BA4F708F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A49BF60752F6A4A407ED92040404 + 04ED08DB04040404040404048908ED08FFFFF607F7A45B52525B5B9BA4A4F7F7 + 070708F6F6F6F6F6F6F6F6080707F7F7A4A49B9BA4F707F6FFFF08ED08890404 + 040404040404DB08ED0404040492ED07A4A4F65207F69B5BF70708F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64907F65B9B07F7A4F7 + 07E48904DBF6ED04040404040404040407089292EDF6FFF608F7A49B5252525B + 5B9BA4A4F7F7070708F6F6F6F6080707F7F7A4A49B9B9BA4F708F6FFF6ED9292 + 0807040404040404040404EDF6DB0489E407F7A4F7079B5BF60749F70707F6F6 + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69B52FFF749 + 07F607F7A4F707DC0707920404040404040404DBF6ED0404049B07F6FFF607F7 + A49B5252525B9B9BA4A4F70707070808070707F7A4A49B9B9BA4F707F6FFF607 + 9B040404EDF6DB0404040404040404920707DC07F7A4F707F60749F7FF5252F7 + 0708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07 + 00070849F7F6FFF607F7A40707070404040404040404890708920404040404E4 + 08F6FFF607F7A45B52525B5B9BA4A4F7F7F70707F7F7F7A4A49B9BA4F707F6FF + F608E40404040404920807890404040404040404070707A4F707F6FFF6F74908 + 0700F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF08499B9B529B0707F6FF08F7A4A407ED89040404040404E4F6E4040404 + 0404040489ED07FFFF0807F79B5B52525B5B9BA4A4A4F7F7A4A4A49B9BA4F707 + 08FFFF07ED8904040404040404E4F6E404040404040489ED07A4A4F708FFF608 + 079B529B9B490708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF0700A4F7A4F7F70707F6FFF607F7A4F707E489040404890807 + 890404040404040404E408EDF6FFF607F7A49B5252525B5B9B9BA4A49B9B9B9B + A4F707F6FFF6ED08E404040404040404048907088904040489E407F7A4F707F6 + FFF60708F7F7A4F7A40007F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF075BA4F707F7A49BA40708F6FFF607F7A4F707DB04 + 04EDF6DB040404040404040492080704DB07F6FFF607F7A49B5252525B5B5B5B + 5B9BA4F707F6FFF607DB040708920404040404040404DBF6ED0404DB07F7A4F7 + 07F6FFF60807A49BA4F707F7A45B07F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07F7A452F75B5BF7F6F6F6F6F6FFF607 + A5A40707DB08ED040404040404040404EDF6DB040489E408F6FFF607F7A45B52 + 5252525BA4F707F6FFF608E4890404DBF6ED040404040404040404ED08DB0707 + A4A507F6FFF608F6F6F6F75B5BF752A4F707F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6FFF6FFFFFFF6 + F6F6FFFF08F7A4F70708DB040404040404040492F6EE040404040492EDF6FFFF + 08F7A49B52529BA4F708FFFFF6ED920404040404EEF6920404040404040404DB + 0807F7A4F708FFFF0808F6FFFFFFF6FFF6F6F6F6F6FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF6F6F6FFF607F7A4F707E481040404040404070892040404040404 + 049207F6FFF607F7A4A4F707F6FFF60792040404040404049208070404040404 + 0481E407F7A4F707F6FFF608F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFF6F6F6FFF607F7A40707DB04040404E4F6E5040404 + 040404040404070707F607A4F707F6FFF6070707040404040404040404E5F6E4 + 04040404DB0707A4F707F6FFF608F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607A4A407ED9204890707 + 890404040404040404E4F6E492A4F707F6FFFF08E489E4F6E404040404040404 + 04890707890492ED07A4A407F6FFF608F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FFFF08F7A4F707 + EDE5F6DB04040404040404048908079BA4F708FFFFF6ED920404890708890404 + 040404040404DBF6E5ED07F7A4F708FFFF0808F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FF + F607F7A4F70708890404040404040404E5F7A4F707F6FFF607930404040404DB + F6E50404040404040404890807F7A4F707F6FFF608F6F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFF6F6F6FFF607F7A4F707DB0404040404049BA4F707F6FFF607E404040404 + 04040489070892040404040404DB07F7A4F707F6FFF608F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6F6F6FF08EEA4A407ED920404899BF70708FFFFF6ED0892 + 04040404040404049208ED0404040492ED07A4A4EE08FFF60707F6F6F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF6F60808FFF608F7A4F707E49BA4F708F6FFF6ED + 92920807040404040404040404EDF6DB0489E407F7A4F708F6F607F7070708F6 + F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F608070708FFF607F7A4A4F707F6FF + F6079B040404EDF6DB0404040404040404890707DC07F7A4F707F6FF07F7A4A4 + F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7F7F70808A4F707 + F6FFF607E48904040404890807890404040404040404070707A4A507F6FF08F7 + 9B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4 + A5EE08FFFFF607DB04040404040404E4F6E404040404040489ED07A4A4F708FF + F607A45B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080807F7F7A4A49B + 9B9BA4F707F6FFF6EDDB08ED040404040404048907089204040489E407F7A4F7 + 07F6FFF6F607F7A49B5252525B5B9BA4A4F7F7070808F6F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7 + A49B9B9BA4F707F6FFF607DB0404EDF6DB04040404040404DBF6ED0404DB07F7 + A4F707F6FF07ED07F6FFF607F7A49B5252525B9B9BA4F7F7070708F6F6F6FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707 + F7F7A4A49B9BA4F707F6FFF608E4890404049208078904040404040404ED08DB + EE07A4A407F6FF08E4920489E408F6FFF607F7A45B52525B5B9BA4A4F7F70707 + 08F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F608 + 0707F7F7A4A49B9BA4A4F708FFFF08ED92040404040404E4F6E4040404040404 + 04DB0807F7A4F708FFF60792890404040492ED08FFFF08F7A49B5B52525B5B9B + A4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6 + F608080707F7A4A49B9B9BA4F707F6FFF607ED04040404040404048907088904 + 04040481E407F7A4F707F6FF0807920404040404040404ED07F6FFF607F7A49B + 5252525B5B9BA4A4F707070808F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF6F6F6080707F7F7A4A49B9BA4F707F6FFF607DB0707890404040404040404 + DBF6E4040404DB0707A4F707F6FF07ED08DC0404040404040404890707DB07F6 + FFF607F7A45B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF6F6F6080707F7F7A4A49B9BA4F707F6FFFF08E48904DBF6ED04040404 + 040404048907089292ED07A4A407F6FFF6EDDB0807890404040404040404EDF6 + DB0489E408FFFFF607F7A45B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF6F6F6080707F7F7A4A49B9B9CA4F708FFFFF6ED9204040489EE08 + 92040404040404040492F6EE07F7A4F708FFF607F707EEF69204040404040404 + 049208EE8904040492EDF6FFFF08F7A49B5252525B5B9BA4A4F7F7070708F6F6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6F608080707F7A4A49B9B9BA4F707F6FFF6079304040404 + 04049208078904040404040404E407F7A4F707F6FFF60807F7A4F707E4040404 + 04040404890708920404040404049307F6FFF607F7A49B5252525B9B9BA4A4F7 + 07070808F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4F707F6FFF607078904 + 04040404040404EDF6DB0404040404DB0707A4F707F6FFF60708F6FFF607F7A4 + 0707DB0404040404DBF6ED0404040404040404890707F6FFF607F7A45B52525B + 5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4F70708FFF60807 + 0708DB040404040404040492080789040492ED07A5A4EE08FFF60808F6F6F6F6 + F6FF08EEA4A507ED920404890708920404040404040404DB08070708F6FF0807 + F7A45B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9B9BA4F708F6FF + 08070707070707890404040404040404E4F6E489E407F7A4F708F6FF0807F6F6 + FFFFFFF60808FFF608F7A4F707E489E4F6E40404040404040404890707070707 + 0708FFF608F7A49B5252525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7A4A49B9B9BA4F707 + F6FFF60707070707070708E4040404040404040404070707F7A4F707F6FFF607 + 08F6FFFFFFFFFFFFFFF608F6FFF607F7A4F7070707040404040404040404E408 + 07070707070707F6FFF607F7A49B5252525B9B9BA4A4F7070708F6F6F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4 + F707F6FFF6070707070707070707070892040404040404049207F7A4A507F6FF + F60708F6FFFFFFFFFFFFFFFFFFFFFFF608F6FFF607A5A4F70792040404040404 + 04920807070707070707070707F6FFF607F7A45B52525B5B9BA4A4F7F7070708 + F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B + 9BA4A5EE08FFFF08070707070707070707070707ED040404040489ED07A4A4F7 + 08FFF60807F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFF60808FFFF08F7A4A407ED89 + 0404040404ED07070707070707070707070708FFFF08EEA59B5B52525B5B9BA4 + A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080807F7F7A4 + A49B9B9BA4F707F6FF080707070707070707070707070707089B040489E407F7 + A4F707F6FF0807F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607 + F7A4F707E48904049B08070707070707070707070707070708FFF607F7A49B52 + 52525B5B9BA4A4F7F7070808F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707 + F7F7A4A49B9BA4F707F6FFF607070707070707070707070707070707070704DB + 0707A4F707F6FFF60708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F608F6FFF607F7A40707DB04070707070707070707070707070707070707F6FF + F607F7A45B5252525B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F608 + 0707F7F7A4A49B9BA4F707F6FFF6070707070707070707070707070707070707 + 07080707A4A407F6FFF60708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF0808F6FFF607A4A4070708070707070707070707070707070707 + 07070707F6FFF607F7A45B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6 + F6080707F7F7A4A49B9BA4A4F708FFFF08070707070707070707070707070707 + 070707070707F7A4F708FFFF0807F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFF60808FFFF08F7A4F7070707070707070707070707 + 07070707070707070708FFFF08F7A49B5B52525B5B9BA4A4F7F7070708F6F6F6 + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F6F6F608080707F7A4A49B9B9BA4F707F6FFF607070707070707070707070707 + 0707070707070707F7A4F707F6FFF607F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607F7A4F7070707070707 + 070707070707070707070707070707F6FFF607F7A49B5252525B9B9BA4A4F707 + 070808F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF6F6F6080707F7F7A4A49B9BA4F707F6FFF60707070707070707070707 + 07070707070707070707F7A4F707F6FFF60708F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607F7A4F7 + 070707070707070707070707070707070707070707F6FFF607F7A45B52525B5B + 9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4F707F6FFF6070707070707070707 + 070707070707070707070707F7A4A407F6FFF60808F6F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60808F6 + FFF607A4A4F7070707070707070707070707070707070707070707F6FFF607F7 + A45B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9B9CA4F708FFFF08070707070707 + 070707070707070707070707070707A5A4F708FFFF0807F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFF60808FFFF08F7A4A5070707070707070707070707070707070707070707 + 08FFFF08F7A49B5252525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF6F608080707F7A4A49B9B9BA4F707F6FFF607070707 + 0707070707070707070707070707070707F7A4F707F6FFF60708F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF608F6FFF607F7A4F7070707070707070707070707070707 + 070707070707F6FFF607F7A49B5252525B9B9BA4A4F707070808F6F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFF6F6080707F7F7A4A49B9BA4F707F6FFF60707 + 07070707070707070707070707070707070707F7A4F707F6FFF60708F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607F7A4F7070707070707070707 + 070707070707070707070707F6FFF607F7A45B52525B5B9BA4A4F7F7070708F6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807F7F7A4A49B9BA4F70708FFF6 + 080707070707070707070707070707070707070707EEA4A4EE08FFF60808F6F6 + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60808F6FF08EEA4A4EE070707 + 070707070707070707070707070707070708F6FF0807F7A45B52525B5B9BA4A4 + F7F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60807F7F7A49B9B9BA4F707 + F6FF08070707070707070707070707070707070707070707F7A4F707F6FF0807 + F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607F7 + A4F707070707070707070707070707070707070707070708FFF607F7A49B5252 + 525B5B9BA4F7F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807F7A49B9BA4 + F707F6FFF6070707070707070707070707070707070707070707F7A4F707F6FF + F60708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 + 08F6FFF607F7A4F7070707070707070707070707070707070707070707F6FFF6 + 07F7A49B5252525B9BA4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807F7 + A4A4F707F6FFF6070707070707070707070707070707070707070707F7A4A507 + F6FFF60708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF608F6FFF607A5A4F7070707070707070707070707070707070707 + 070707F6FFF607F7A45B525B9BA4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFF6F6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 + F608F7A4A5EE08FFFF08070707070707070707070707070707070707070707A4 + A4F708FFF60807F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF60808FFFF08F7A4A407070707070707070707070707 + 070707070707070708FFFF08EEA59C5B9BA4F70708F6F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + F6F6F6F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF6F7A4F707F6FFF60707070707070707070707070707070707070707 + 07F7A4F707F6FFF607F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607F7A4F707070707070707 + 0707070707070707070707070707F6FFF607F7A4A4A4F70708F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FFFF + FF00FFFFF6F6F6080808F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFA4F707F6FFF6070707070707070707070707070707070707 + 070707F7A4F707F6FFF60708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607F7A4F707 + 0707070707070707070707070707070707070707F6FFF607F7A40707F6F6FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6 + F6F6F6F6FF00FFFFF6F60807070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF7F708FF07070707070707070707070707070707 + 0707070707F7A4A407F6FFF60708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0808F6FF + F607A4A4F7070707070707070707070707070707070707070707FF08F7A40708 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F6F6F6080808F6F6F600FFF6F60807070707070708F6F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A407FF080707070707070707070707 + 0707070707070707A5A4F708FFFF0807F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF60708FFFF08F7A4A50707070707070707070707070707070707070708FF07 + A40708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF6F6080707070707F6F600FFFFF60807F7F7F7F7070708F6F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07F708FF07070707070707 + 07070707070707070707F7A4F707F6FFF60708F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFF607F6FFF607F7A4F707070707070707070707070707070707 + 07FF08F7F707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFF6F60707F7F7F70708F600FFFFAFAF07F7F7A4F7F7070708F6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7EEF6F60707 + 070707070707070707070707F7A4F707F6FFF60708F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607F7A4F707070707070707070707 + 07070707F6F6EEA40708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF6F60807F7F7A4F7F7070800FFFFEF0EA607F7A4A4A4 + F7F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08A5 + 07FF070707070707070707070707F7A4A407F6FFF60808F6FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0808F6FFF607A4A4F707070707 + 0707070707070707FF07A5F707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F607F7A49CA4A4F7070800FFFFEF0E0E5E + F7A4A4A4A4A4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF7F7F6F607070707070707070707F7A4F708F6FF0808F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FFF608F7A4 + F707070707070707070707F6F6F7A40708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608079C0A0A9BA4F7070800FFFF + EF0E0E0E56A4A49B9BA4A4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFF6A407FF0807070707070707F7A4F707F6FFF608F6F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6 + F6FFF607F7A4F70707070707070708FF07A4F708F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F607A50A0A0A5BA4F707 + 0800FFFFF60E0E0E0E4EA49B5B9BA4F7F707F6F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF7F7F6FF0707070707F7A4F707F6FFF608F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF6F6F6FFF607F7A4F70707070707FFF6F7A50708F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6070B0A0A0A + 53A4F7070800FFFFFFEF0E0E0E0E4E5C5B5B9BA4F70708F6FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A407FFF6070707A4A4F708FFF60808 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF6F6FFFF08F7A4A4070707F6FF07A40708F6F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6FFFFFFF608A5 + 0A0A0A0A0BA4F707F600FFFFFFFFA70E0E0E0E0E545B9BA4F70708F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07F708FF07A4A4F707F6FF + 0808F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FFF607F7A4A407FF08F7F708F6F6 + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F6F6F6 + F6F6084B0A0A0A0A0AA50708F600FFFFFFFFF64E0E0E0E0E0E559CA4F70708F6 + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F608F707 + F6FFF608F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FFF607F708F6F7A4 + 08F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080807 + 0808F6F6F6F6070A0A0A0A0A0AA507F6F600FFFFFFFFF69F0E0E0E0E0E0E4EF7 + 0707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08A4 + 0707F6FFF608F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF6 + 0707A407F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608 + 07070707070708F6F608A50A0A0A0A0A0AF708F6FF00FFFFFFFFF6A70E0E0E0E + 0E0E0EF70708F6F6FFFFFFFFFFFFF6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF7F708FF08F6F6FFFFFFFFF6F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF6F6FF08F7F7F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F6F6080707F7F7F7F7F707080808540A0A0A0A0A0A07F6F6FF00FFFFFFFFF6AF + 0E0E0E0E0E0E0EA607F6F6FFFFFFFFFFF6F6F6F6F6F6F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFF6A508F6F6FFFFFFFFF6F6F6F6F6F6F6F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFF6F608A5F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF6080707F7A4A4A4A4F7F70708080B0A0A0A0AF70708F6FFFF00FFFF + FFFFFFEF0E0E0E0E0E0E0EA608F6F6FFFFFFFFF6F6F6080808F6F6F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFF6FFFFFFFFFFF6F6F6080707070808F6F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFF6F60707F7A4A49B9BA4A4F70707070A0A0A0A53F70708F6FF + FF00FFFFFFFFFFEF0E0E0E0E4EA456AE08F6FFFFFFFFFFF6F6080707070808F6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608070707F7F70707 + 0708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF6F60807F7A4530B0A5B9BA4F70707F70A0A0A0AA4F7 + 0708F6FFFF00FFFFFFFFFF070E0E0E0E55A4F70708F6FFFFFFFFFFF6F6080707 + 07070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60707F7F7 + A4A4F7F7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF60807F7A40A0A0A0A0A9BA4F7F707A50A0A + 0A0BF7F707F6F6FFFF00FFFFFFFFFFF60E0E0E0E4EA4F70708F6FFFFFFFFFFF6 + F60707F7F7F7F7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608 + 07F7A4A4A4A4A4A4F7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807A50A0A0A0A0A0A53A4A4F7 + 075C0A0A0A53F7F707F6F6FFFF00FFFFFFFFFFF60E0E0E0E4EA4F70708F6FFFF + FFFFFFF6F70807F7F7A4F7F7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF6F60707F7A4A49BA4A4A4F7F7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F6F60807F70B0A0A0A0A0A0A + 0BA4F7F7075C0A0A0A53F7F707F6F6FFFF00FFFFFFFFFFF60E0E0E0E4EA4F707 + 08F6FFFFFFFFFF080AA507F7A4A4A4A4F7F70708F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF6F607A4534B539BA4A4A4A4F7F7070708F6F6FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F608080808F6F60807530A0A0A + 0A0A0A0A0AA4F7F7F7540A0A0A5CF70707F6F6FFFF00FFFFFFFFFFF6560E0E0E + 4EA4F70708F6FFFFFFFFFFFF0A0A53F7A4A4A4A4A4F70707F6F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFF608A50A0A0A0A0A53A4F7F7F7F7F70707F6F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807070707070708079C + 0A0A0A0A0A0A0A0A0A9CF7F7F74B0A0A0A9CF70708F6FFFFFF00FFFFFFFFFFF6 + 560E0E0E4EA4F70708F6FFFFFFFFFFFF0A0A0A0BA4A49B9BA4A4F70708F6FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFF6070A0A0A0A0A0A0A0AA4F7F7F7F7F70708F6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6080707F7F7F7F7 + 0707070A0A0A0AF7F7540A0A0A5CF7F7F74B0A0A0A9CF70708F6FFFFFF00FFFF + FFFFFFF6560E0E0E4EA4A40708F6F6FFFFFFFFFF5C0A0A0A0A539B9B9BA4F707 + 08F6F6FFFFFFF6F6F6F6F6FFFFFFFFFFFFF6A50A0A0A0A0A0A0A0A0AA507F7F7 + F7070708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807F7F7 + A4A4A4F7F7075C0A0A0AA50708EE0A0A0A53F7F7F74B0A0A0A9CF70708F6FFFF + FF00FFFFFFFFFFF6560E0E0E0EA4A4F707F6F6FFFFFFFFFFFF5C0A0A0A0A0A53 + A4A4F70708F6F6FFF6F6F6F6F6F6F6F6F6FFFFFFFFF69D0A0A0A0A0A0A0A0A0A + 0AA507F7F7F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608 + 07F7F7A49B9BA4A4F7F74B0A0A53070808080A0A0A53F7F7F70B0A0A0AA4F707 + 08F6FFFFFF00FFFFFFFFFFF6A70E0E0E0EA4A4F707F6F6FFFFFFFFFFFFF60B0A + 0A0A0A0A0BA50707F6F6F6F6F6F60808070708F6F6F6FFFFFFF6530A0A0A0A9C + F7A50A0A0A0AF7F7F7F7070708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFF6F6F6F6F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF6F607F7F7A453535B9BA4F7F74B0A0AF7070808080A0A0A53F7F7F70A0A0A + 0AA4F70708F6FFFFFF00FFFFFFFFFFF6A70E0E0E0EA4A4F707F6F6FFFFFFFFFF + FFF69C0A0A0A0A0A0AA40708F6F6F6F6F6080707F707070708F6F6FFFFF6530A + 0A0A9CF70708084B0A0A4B07F7F7F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF6F6F60808070808F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF6F60807F75B0A0A0A0A5BA4F7F74B0A4B07080808080A0A0A53A4F7 + F70A0A0A0AA4F70708F6FFFFFF00FFFFFFFFFFF6A70E0E0E0EA4A4F707F6F6FF + FFFFFFFFFFF6A50A0A0A0A0A0AA407F6F6F6F6F60807F7F7A4F7F7F70708F6F6 + FFF6530A0A0AF7F70708F6F64B0A0A5CF7F7F70707F6F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6F60807070707070708F6F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF6F6F6F6F60807F7530A0A0A0A0A0AF7F7074B0A9C07080808070A0A + 0A53A4F7F70A0A0A0AA4F70708F6FFFFFF00FFFFFFFFFFF6A70E0E0E0EA4A4F7 + 07F6F6FFFFFFFFFFFFF6A50A0A0A0A530A5C07F6F6F6F60807F7A4A4A4A4A4F7 + F70708F6F6F6530A0A4BF7F70708F6F6080B0A0AF7F7F7F70708F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFF6F6080707F7F7F7F7070708F6FFFFFFFFFFFFFFFF + FFFFFFFFFFF6F6F6F6F6F6F6F608075C0A0A0A0A0A0A0A070707530AF7070808 + 07F70A0A0A53A4F7F70A0A0A4BA4F70708F6FFFFFF00FFFFFFFFFFF6EF0E0E0E + 0E9CA4F707F6F6FFFFFFFFFFFFF6EE0A0A0A0AA4A4F707F6F6F6F60807F7A49B + 9B9BA4A4F7070708F6F65C0A0A4BF7F70708F6F6FFA50A0A5CF7F7F70708F6F6 + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807F7F7A4A4A4A4F70708F6F6FFFFFF + FFFFFFFFFFFFFFF6F6F6F6080808F6080807A50A0A0A0A0A0A0A0AF70808534B + 0707080707A50A0A0A53A4F7A50A0A0A4BA4F70708F6FFFFFF00FFFFFFFFFFF6 + EF0E0E0E0E9CA4F70708F6FFFFFFFFFFFFFFEE0A0A0A0AA4F7F707F6F6F6F607 + A54B0B535B9BA4A4A4F70708F6F6A50A0A4BF7F70707F6F6FFF60A0A0AF7F7F7 + 0707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807F7F7A49CA4A4A4F70708F6 + F6FFFFFFFFFFFFFFFFFFF6F6F60807070707080807070B0A0A0A0A0A0A0A0AEE + F6F60A5307070707075C0A0A0A53F7F7A50A0A0A4BA4F70708F6FFFFFF00FFFF + FFFFFFFFEF0E0E0E0E9CA4F70708F6FFFFFFFFFFFFFFEE0A0A0A0AA4F7F707F6 + F6F608F70A0A0A0A0A53A4A4A4F7F70708F6F70A0A5307F7070708F6FFF65C0A + 0A9CF7F7F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807F7F7A4550E55A4A4 + F70708F6F6FFFFFFFFF6F6F6F6F6F608070707F707070707079C0A0A0A0A0A0A + 0A0A0A07F6F60A5308070707F74B0A0A0A5CF7F7A50A0A0A4BA4F70708F6FFFF + FF00FFFFFFFFFFFFEF0E0E0E0E9CA4F70708F6FFFFFFFFFFFFFFF60A0A0A0AA4 + F7F707F6F6F6084B0A0A0A0A0A0A5CA4F7F7F70707F6070A0A5307F7070707F6 + F6F6F70A0A53F7F7F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F60807F7A49C4E0E + 0E0E9DF7070708F6F6FFFFFFF6F6F6F6F608080707F7F7F7F7070707070B0A0A + 0A0A0AA508074BF6FFF60AA5080707F7A40A0A0A0A5CF707A50A0A0A53F7F707 + F6F6FFFFFF00FFFFFFFFFFFF080E0E0E0E55A4F70708F6FFFFFFFFFFFFFFF60A + 0A0A0AA4A4F707F6F6F6070A0A0A0A0A0A0A0A9CF7F7F7F70708F60B0A0A07F7 + F7070708F6F6080A0A0AA4A4F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6080707F7A4 + 9C0E0E0E0E0E0EA60708F6F6FFFFF6F6F608080707070707F7A4A4A4F7F70707 + A40A0A0A0A0AA507F6F6FFFFFFFF0AA5080707F7530A0A0A0AA4F707A50A0A0A + 53F7F707F6F6FFFFFF00FFFFFFFFFFFFF60E0E0E0E55A4F70708F6FFFFFFFFFF + FFFFF60A0A0A0AA4A4F707F6F6F6A50A0A0A0A0A0A0A0A0AF7F7F7F70707F6F7 + 0A0AA5F7F7F7F7070708080A0A0A5CA4F70707F6F6FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F60808080707 + 07F7A49C0E0E0E0E0E0E0E0EF6F6F6F6FFF6F6F6080707F7F7F7F7F7A4A4530A + A4070707530A0A0A0A5C0708F6FFFFFFFFFF0AA50807F79C0A0A0A0A0AA4F707 + 5C0A0A0A53F7F707F6F6FFFFFF00FFFFFFFFFFFFF60E0E0E0E55A4F70708F6FF + FFFFFFFFFFFFF60A0A0A0A9CA4F707F6F6F6540A0A0A0A0A530A0A0A53F7F7F7 + F70708F60B0A54F7A4A4A4F70707074B0A0A53A4F7F707F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807 + 070707F7F7A49C0E0E0E0E0E0E0E0E4EF6F6FFFFFFF6F60807F7F7A4A4A4A4A4 + 530B0A0AA40707F70A0A0A0A0AF70708F6FFFFFFFFF60AA50707A40B0A0A0A0A + 0BF707079C0A0A0A53F7F707F6F6FFFFFF00FFFFFFFFFFFFF60E0E0E0E55A4F7 + 0708F6FFFFFFFFFFFFFFF6530A0A0A9CA4F70708F6F6530A0A0A0A5BF7F70A0A + 0AA5F7F7F7070708F70A0BA4A4A4A4A4F7F7F74B0A0A0BA4A4F707F6F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F6F6080707F7F7A4A4550E0E0E0E0E0E56AFA75FFFFFFFFFF6F60807F7A4A4A4 + A49C530A0A0A0A0AA50707A50A0A0A0A5BF707F6F6FFFFFFFFF6A50707F74B0A + 0A0A0A0A53F707079C0A0A0A5CF70707F6F6FFFFFF00FFFFFFFFFFFFF64E0E0E + 0E55A4F70708F6FFFFFFFFFFFFFFF6530A0A0A9CA4F70708F6F60A0A0A0A0AA4 + F7079C0A0A4BF7F7F7070708084B0A5B9B9B9B9BA4A4A44B0A0A0AA4A4F70708 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF6F60807F7A4A4A4540E0E0E0E0E0E5EF6F6F6FFFFFFFFFFF6F607F7 + F7A49B9B9B530A0A0A0A0A53070707530A0A0A0AA50708F6FFFFFFFFFFF6F607 + 07530A0A0A0A0A0A5C0707089C0A0A0A9CF70707F6F6FFFFFF00FFFFFFFFFFFF + F6560E0E0E4EA4F70707F6F6FFFFFFFFFFFFF6530A0A0A9CA4F70708F6F60A0A + 0A0A0BA4F707070A0A0AA4A4F7F7070707A50A0B9B5B5B5B5B9B9B4B0A0A0A5B + A4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6070807F7A4A4550E0E0E0E0E0E5E08F6F6FFFFFFFFFFFF + F60807F7530A0A535B530A0A0A0A53F70707070A0A0A0A4BF70708F6FFFFFFFF + FFF60807A40A0A0A0A0A0A0AA5070808530A0A0A9CF70708F6F6FFFFFF00FFFF + FFFFFFFFF6560E0E0E4EA4A4F70708F6F6F6FFFFFFFFF6530A0A0A5BA4F70708 + F6F60A0A0A0A0BA4F70708530A0A53A4A4F70707F70A0A0A0A525252525B5B0A + 0A0A0A53A4F7070708F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF64E0707F7A4550E0E0E0E0E0E5E0708F6FFFFFF + FFFFFFF6F608F70B0A0A0A0A9B530A0A0A0AA4F70707F70A0A0A0A5CF70708F6 + F6F6F6F6F6F608F70A0A0A0A0A0A0A0A07080808530A0A0A9CF7F707F6F6FFFF + FF00FFFFFFFFFFFFF6560E0E0E4EA4A4F7070708F6F6F6FFFFFFF6A50A0A0A53 + A4F70708F6070A0A0A0A53A4F707089D0A0A0AA4A4F70707540A0A0A0A0A0A52 + 5252520A0A0A0A53A4F7F70707080808F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF0E0EA6A64E0E0E0E0E0E0E56070708 + F6F6FFFFFFFFFFF6F607530A0A0A0A0A535B0A0A0A0AA4F707079C0A0A0A0AA4 + F70708F6F6F6F6F6F60807540A0A0A0A0A0A0A5C0708F6F6530A0A0AA4A4F707 + 08F6F6FFFF00FFFFFFFFFFFFF6560E0E0E4EA4A4A4F707070808F6F6FFFFF6A5 + 0A0A0A53A4F70708F6EE0A0A0A0A53A4F70708F70A0A0A9CA4F7F707530A0A0A + 0A0A0A0A0A0A0A0A0A0A0A53A4A4F7F7070707070708F6F6F6F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64E0E0E0E0E0E0E0E0E0E55 + A4F7070708F6F6FFFFFFFFF608F70A0A0A0A0A0A0A9C0A0A0A0BA4F707075C0A + 0A0A0BA4F7070708080808080807F70A0A0A0A0A0A0A0AF708F6F6F6530A0A0A + A4A4F70707F6F6FFFF00FFFFFFFFFFFFF6A70E0E0E0E9BA4A4A4F7F7070708F6 + F6FFF6A50A0A0A53A4F70708F6EE0A0A0A0A53A4F70708080A0A0A53A4A4F707 + 530A0A0A0A0A0A0A0A0A0A0A0A0A0A53A4F7F7F7F7F7F7F707070708F6F6FFFF + FFFFFFF6F6F6F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF0E0E0E0E0E0E + 0E0E4E9BA4A4F7070708F6F6FFFFFFF608530A0A0A0A0A0A0A0A0A0A0A0BA4F7 + 07074B0A0A0A4BA4F7F707070707070707075C0A0A0A0A0A0A0A5C0708F6F608 + 0A0A0A0AA4A4A4F70708F6F6FF00FFFFFFFFFFFFF6A70E0E0E0E9B9BA4A4A4F7 + F70707F6F6FFF6A50A0A0A53A4F70708F6EE0A0A0A0A53A4F70708F60A0A0A0B + A4A4F707530A0A0A0A0A0A0A0A0A0A0A0A0A0A53A4F7F7F7F7A4A4A4F7F70707 + 08F6F6FFFFF6F6F6F608080808F6F6F6FFFFFFFFFFFFFFFFF6F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69F0E + 0E0E0E0E0E4E9B9BA4A4A4F7F70708F6F6FFFFF6070A0A0A0A0A0A0A0A0A0A0A + 0A4BA4F707070A0A0A0A53A4A4F7F7F7F7F7F7F7F7F70B0A0A0A0A0A0A4B0708 + 08F6F6080A0A0A0A9B9BA4F7F707F6F6FF00FFFFFFFFFFFFF6A70E0E0E0E9B9B + A4A4A4A4F7F70708F6F6F6F70A0A0A4BA4F70708F6EE0A0A0A0A53A4F70708F6 + 530A0A0AA4A4F707540A0A0A0A0A0A0A0A0A0A0A0A0A0A53F7F7F7F7F7A4A4A4 + A4A4F70708F6F6FFF6F6F60807070707070808F6F6F6FFFFF6F6F6F6F6F6F6F6 + F6FFFFFFFFFFFFF6F6F6F6F6F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F6F608560E0E0E0E559CA4A4A4A4A4A4F70707F6F6FFF6F6A50A0A0A0A0A0B54 + 0A0A0A0A0A53A4F707070A0A0A0A539BA4A4A4A4A4A4A4A4F7A40A0A0A0A0A0A + 0AF70708080808070A0A0A0A5B5B9BA4F70708F6FF00FFFFFFFFFFFFF6A70E0E + 0E0E9B545C9CA4A4A4F7F70708F6F6EE0A0A0A4BA4F70708F6EE0A0A0A0A53A4 + F70708F6530A0A0A5CA4F7079C0A0A0A0A0A0A0A0A0A0A0A0A0A0A5C5C53A5F7 + F7A4A49BA4A4F70708F6F6F6F6F60707F7F7F7F7F7070708F6F6F6F6F6F60808 + 08080808F6F6F6FFFFFFF6F6F6080808080808F6F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFF6F60807F74E0E0E4E5D55559DA4A4A4A4A4F70708F6F6F6F6540A0A0A + 0A0BF707540A0A0A0A53A4F707A50A0A0A0A5B9B9B9BA49B9B9BA4A4A45C0A0A + 0A0A0A0AA4070708070807070A0A0A0A5B5B9BA4F70708F6FF00FFFFFFFFFFFF + F6EF0E0E0E0E5C4E0E0EA5A4A4A4F70708F6F6EE0A0A0A4BA4F70707F6F60A0A + 0A0A53A4F70708F69C0A0A0A53A4F707F70A0A0A0A0A0A0A0A0A0A0A0A0A0AF7 + 9C0A0A0A535C9B9B9BA4F70708F6F6F6F60807F7A4A4A4A4A4F7F70708F6F6F6 + 08070707070707070808F6F6F6F6F6080707070707070708F6F6F6FFFFFFFFFF + FFFFFFFFFFFFFFF60807F7F7A44E0E0E0E0E0E0E4E9DA4A4A4A4F707F6F6F6F6 + 4B0A0A0A0AA4F707070A0A0A0A53A4F707A50A0A0A0A5B5B9B9B9B53530A53A4 + A4530A0A0A0A0A9C07070807070707F70A0A0A0A52520AA4F70708F6FF00FFFF + FFFFFFFFF6EF0E0E0E0E5C0E0E0E0EA5A4A4F7F70708F6EE0A0A0A4BA4A4F707 + 08F60A0A0A0A53A4F70708F69D0A0A0A4BA4A4F7070A0A0AA4A4530A0A0A0A0A + 0A0A0A07A50A0A0A0A0A0A0A535CF70708F6F6F60807F7A4A49B9B9BA4A4F7F7 + 070808080707F7F7F7F7F7F7070708F6F6F6080707F7F7F7F7F7F7070708F6F6 + FFFFFFFFFFFFFFFFFFFFF6F60707F75D0E0E0E0E0E0E0E0E0E0E5DA4A4A4F707 + 08F6F6F60A0A0A0A53F70707080A0A0A0A53F7F7079C0A0A0A0A5B9B5B530A0A + 0A0A0AA4A44B0A0A0A0A53070708F707070707A40A0A0A0A0A0A0AA4F70708F6 + FF00FFFFFFFFFFFFFFEF0E0E0E0E5C0E0E0E0E4EF7A4F7F70708F6070A0A0A0A + A4A4F70708F60A0A0A0A53A4F70708F69D0A0A0A0BA4A4F7079C0A0AF7F7A4A4 + 9C0B0A0A0A0A54F6F6AE0A0A0A0A0A0A0A0A0707F6F6F6F607F7F7A49B5B5B9B + 9BA4A4F70707070707F7F7A4A4A4A4F7F707070808080707F7F7A4A4A4A4F7F7 + 0707F6F6FFFFFFFFFFFFFFFFFFF6F60807F7560E0E0E0E0E0E0E0E0E0E0E0E5C + A4A4F70707F6F6080A0A0A0A5BF7070708530A0A0A9CF7F7075C0A0A0A0A5B4B + 0A0A0A0A0A0A0BA4A40A0A0A0A4BF70707F70A07070707A40A0A0A0A0A0A0AA4 + F707F6F6FF00FFFFFFFFFFFFFFEF0E0E0E0E5C0E0E0E0E0E5EF7A4F7F7070808 + 0A0A0A0AA4A4F70708080A0A0A0A53A4F70708F6A50A0A0A0AA4A4F707070A0A + A4A4A4A4A4F7A59C5CA5F6FFFFFFF70A0A0A0A0A0A0A0708F6F6F60807A5530A + 0A0A0A539BA4A4F7F7070707F7F7A4A4A4A4A4A4F7F70707080707F7F7A4A4A4 + A4A4A4F7F70708F6F6FFFFFFFFFFFFFFFFF6F607F7560E0E0E0E0E0E56560E0E + 0E0E0E4EA4A4A4F70708F6F70A0A0A0A9CF7070708530A0A0A9CF7F7075C0A0A + 0A0A0A0A0A0A0A0A0A0A0BA4A40A0A0A0AA50707079C0A070707079C0A0A0A0A + 0A0A0AF70708F6F6FF00FFFFFFFFFFFFFF080E0E0E0E559C9D0E0E0E0EA5A4F7 + F70708080A0A0A0AA4A4F70707080A0A0A0A53A4F70708F6EE0A0A0A0AA4A4F7 + 07075C0A53A49BA4A4A4F7070708F6F6FFFF070A0A0A0A0A535C0708F6F6F608 + F70A0A0A0A0A0A0A53A4F7F7F7070707F7A49C9CA4A4A4A4A4F7F707070707F7 + A59C9CA4A4A4A4A4F70707F6F6FFFFFFFFFFFFFFFFF608079D0E0E0E0E0EA608 + F6FFEF4E0E0E0E0E5DA4A4F70708F6F70A0A0A0AA4F70707084B0A0A0A9CF7F7 + 07540A0A0A0A0A0A0A0A0A0A0A0A4BA49C0A0A0A4BF70707079C0A0707F74B0A + 0A0A0A0A0A0A0A0707F6F6FFFF00FFFFFFFFFFFFFFF60E0E0E0E55A4F7A60E0E + 0E5EA4A4F70707070A0A0A0A9BA4A4F707074B0A0A0A53A4F70708F6EE0A0A0A + 0A9CA4F70707F70A0AA49B9BA4A4F7F7070708F6FFFFF60A0A0A0A53A4F70708 + F6F6F6074B0A0A0A0A0A0A0A0A5307070707075C0A0A0A0A0A4BA4F7A4F7F7F7 + 0707A40B0A0A0A0A4BA4A4A4F7F70708F6FFFFFFFFFFFFFFF6F607F70E0E0E0E + 0EAE08F6F6FFFFAF0E0E0E0E4EA4A4F7070808F70A0A0A0AA4F70707080A0A0A + 0A9CF7F7074B0A0A0A0A0A0A0A0A0A0A0A0A53A49C0A0A0A5CF7F707075C0A07 + 07A50A0A0A0A0A0A0A0A4B0708F6F6FFFF00FFFFFFFFFFFFFFF60E0E0E0E55A4 + F707560E0E4EA4A4F7F707070A0A0A0A539BA4A4F7074B0A0A0A0BA4F70708F6 + EE0A0A0A0A5BA4F7F7F7A50A0A0A539BA4A4A4F7F70708F6F6F6F60A0A0A0A53 + A4F70708F6F6F6F70A0A0A0A0A0A0A0A0A0A9C0707070B0A0A0A0A0A0A0A0AA5 + F7A4F7F7F74B0A0A0A0A0A0A0A0AA4A4A4F70708F6F6FFFFFFFFFFFFF6080756 + 0E0E0E0E9E0708F6FFFFFFFF4E0E0E0E0E9CA4A4070708F70A0A0A0AA4F70707 + 080A0A0A0A9CF70707530A0A0A0A0A0BA5074B0A0A0A53A4A40A0A0AA4F7F7F7 + 074B0AF7075C0A0A0A0A0A0A0A0A4B08F6F6FFFFFF00FFFFFFFFFFFFFFF60E0E + 0E0E55A4F707A60E0E0E9DA4A4F7F7070B0A0A0A535B9BA4A4F7530A0A0A0BA4 + F7070708F70A0A0A0A5BA4F7F7F70A0A0A0A0A0A5CF7F7F7F7F70708F6F6F64B + 0A0A0A53A4F70708F6F608530A0A0A0A0A0A0A0A0A0A0BF608084B0A0A0A0A0A + 0A0A0A0AA5A4F7F79C0A0A0A0A0A0A0A0A0A0BF7A4F7F707F6F6FFFFFFFFFFFF + F608A60E0E0E0E56F707F6F6FFFFFFFFA70E0E0E0E55A4A4F70708F70A0A0A4B + A4F70708080A0A0A0AA4F70707530A0A0A0A5CF70707530A0A0A5BF7A40A0A0A + A4A4F7F7F74B4BF7F7A50A0A0A0A0A0A0A0B9C08F6FFFFFFFF00FFFFFFFFFFFF + FFF60E0E0E0E55A4F707070E0E0E56A4A4A4F7F74B0A0A0A4A5B5B9BA4A4530A + 0A0A0BA4F7F70708070A0A0A0A53A4F7F7530A0A0A0A0A0A0A9CF7F7F7F70707 + F6F6F6530A0A0A53A4F70708F6F6080A0A0A0A0A0A0A5C5C0A0A0A08F6F6530A + 0A0AA5F70B0A0A0A53A4A4F7A40A0A0A4BA55C0A0A0A0A5CA4F7F70708F6FFFF + FFFFFFF6F607560E0E0E0EA50708F6FFFFFFFFFFEF0E0E0E0E55A4A4F70708A5 + 0A0A0A4BA4F70708080A0A0A0AA4F70707530A0A0A9CF7F707074B0A0A0A9CF7 + A40A0A0AA4A4A4A4A40A4BF7F707530A0A0A0A4B9CF707F6F6FFFFFFFF00FFFF + FFFFFFFFFFF6560E0E0E4EA4F70707560E0E0EA4A4A4F7F74B0A0A0A0A5B5B5B + 9BA45B0A0A0A0AA4A4F70708080A0A0A0A53A4F7F70A0A0A0A0A0A0A0A0AA4F7 + F7F7F70708F6F6530A0A0A53A4F70708F6F6F70A0A0A0A0A0AF707F6084B0AF7 + F6F6530A0AF708F6085C0A0A0AA4A4A4A40A0A4B070808070B0A0A0AA4A4F707 + 08F6FFFFFFFFFFF608EE0E0E0E0E4EF70708F6FFFFFFFFFFF60E0E0E0E4EA4A4 + F707079C0A0A0A4BA4F70708070A0A0A0AA4F70707530A0A0A9CF7F707070A0A + 0A0AA4F7A50A0A0AA4A4A4A45B0A4BF7F707F70A0A0A0A9CF70707F6F6FFFFFF + FF00FFFFFFFFFFFFFFF6560E0E0E4EA4F70707A60E0E0E5DA4A4A4F74B0A0A0A + 0A525B5B4B9B5B0A0A0A0AA4A4F70708080A0A0A0A53A4F7A50A0A0A0A0A9C53 + 0A0A0AF7F7F7F70708F6F6530A0A0A53A4F70708F6F6A50A0A0A0A0A9C0707F6 + F6F64BAEFFF6530A9C0808F6F6080A0A0A53A4A4A40A0AF707080808A50A0A0A + A4A4F70708F6FFFFFFFFFFF6085E0E0E0E0E5DF707F6F6FFFFFFFFFFF6560E0E + 0E0E9CA4F707079C0A0A0A4BA4F70708F70A0A0A0AA4F70707530A0A0A9CF7F7 + 07070A0A0A0AF7F7A50A0A0AA4A49B9B4B0A4BF70707074B0A0A0A9CF70708F6 + F6FFFFFFFF00FFFFFFFFFFFFFFF6560E0E0E4EA4A40707EF0E0E0E55A4A4A4A5 + 0A0A0A0A0A0A5B530A5BA40A0A0A0AA4A4F70708080A0A0A0A53A4F7A40A0A0A + 0A5BF7074B0A0A53F7A4F70707F6F6530A0A0A53A4F70708F6F69C0A0A0A0A0B + F70707F6F6FFF6FFFFF6540A080808080807530A0A0BA4A4A40A540708080807 + F70A0A0A53A4F70708F6FFFFFFFFF6F6084E0E0E0E0EA5F707F6F6FFFFFFFFFF + F6560E0E0E0E5CA4F707079C0A0A0A53A4F70708F70A0A0A0AA4F70707530A0A + 0A9CA4F7F7F70A0A0A0AF707F70A0A0AA4A49B5B0A0A4BF7070808530A0A0A9C + F70708F6FFFFFFFFFF00FFFFFFFFFFFFFFF6560E0E0E4EA4A40707070E0E0E4E + A4A44B0A0A0A0A0A0A0A0A0A0A53A40A0A0A0A9CA4F70707070A0A0A0A53A4F7 + 5C0A0A0A0AA4F707A50A0A0AA4A4F7F70708F65C0A0A0A53A4F70708F6F6540A + 0A0A0A53A4F70708F6F6F6FFFFF65C0AF608080807075C0A0A0AA4A4A40A9C08 + 08080707F70A0A0A53A4F70708F6FFFFFFFFF6F6EE0E0E0E0E4EF70708F6FFFF + FFFFFFFFF6A70E0E0E0E55A4F707079C0A0A0A53A4F70708F70A0A0A4BA4F707 + 07530A0A0AA4A4F7F7A40A0A0A4BF707F70A0A0A54A4A40B0A0A4B0707080853 + 0A0A0AA4F70708F6FFFFFFFFFF00FFFFFFFFFFFFFFF69F0E0E0E0EA4A4F70708 + 0E0E0E0E9CA44B0A0A0A0A0A0A0A0A0A0A53A44B0A0A0A9CA4F70707070A0A0A + 0A53A4F75C0A0A0A0AA4F707070A0A0A53A4A4F70708F69D0A0A0A53A4F70708 + F6F6530A0A0A0A9BA4F707070808F6F6F6F6A50AF6080707F7F7530A0A0A5BA4 + A40A9C08070707F7A40A0A0A4BA4F70708F6FFFFFFFFF6F69E0E0E0E0E55F707 + 08F6FFFFFFFFFFFFF6A70E0E0E0E55A4F707079C0A0A0A53A4F70708F70A0A0A + 4BA4F70708530A0A0AA4A4A4A4530A0A0A53F707080A0A0A0A0B4B0A0A0A5307 + 08F6080A0A0A0AA4F70708F6FFFFFFFFFF00FFFFFFFFFFFFFFF6A70E0E0E0EA4 + A4F70708560E0E0E5DA44B0A0A0A0A0A0B0A0A0A0A53A4530A0A0A5BA4F7F707 + 070A0A0A0A53A4F75C0A0A0A4BA4F70707530A0A0AA4A4F70708F69D0A0A0A53 + A4F70708F6F6530A0A0A0A9BA4A4F7070707070808F6A50A080707F7F7A44B0A + 0A0A5BA4A50A9C0707F7F7A45B0A0A0A0BA4F707F6F6FFFFFFFFF608560E0E0E + 0E9DF70708F6FFFFFFFFFFFFF6AF0E0E0E0E55A4F70707530A0A0A53A4F70708 + A50A0A0A4BA4F707089C0A0A0A9CA4A4A44B0A0A0AA40708F64B0A0A0A0A0A0A + 0A0AA508F6F6F60A0A0A0AA4F70708F6FFFFFFFFFF00FFFFFFFFFFFFFFF6A70E + 0E0E0EA4A4F70708560E0E0E55A4530A0A0A0A0A4B0B0A0A0A53F79C0A0A0A53 + A4A4F7F7F70A0A0A0A53A4F75C0A0A0A4BA4F707075C0A0A0AA4A4F70708089D + 0A0A0A4BA4F70708F6F6530A0A0A0B9B9BA4A4F7F7F707070708A5530707F7A4 + A49B0A0A0A0A5BF7A50A9C07F7F7A49B4B0A0A0A0BA4F707F6F6FFFFFFFFF608 + 0E0E0E0E0EA4F70708F6FFFFFFFFFFFFF6EF0E0E0E0E55A4F70707530A0A0A53 + A4F707079C0A0A0A0BA4F70708A50A0A0A9CA4A4A40A0A0A0AF70708F69D0A0A + 0A0A0A0A0A53F6F6F6F6F60A0A0A0AA4F70708F6FFFFFFFFFF00FFFFFFFFFFFF + FFF6A70E0E0E0EA4A4F70708A60E0E0E4EA4A45C0A0A0A0A539C0A0A0A4BF7F7 + 0A0A0A4BF7A4A4F7A40A0A0A0A53A4F7A50A0A0A4BA4F707079C0A0A0A5BA4F7 + 0708089D0A0A0A4BA4F70708F6F6530A0A0A0B9B9BA4A4A4A4F7F7F707070707 + 07F7A4A49B4A0A0A0A0A5CF707F70707F7A49B530A0A0A0A0BF70708F6F6FFFF + FFFFF6070E0E0E0E4EA4F707F6F6FFFFFFFFFFFFF6EF0E0E0E0E4EA4F707074B + 0A0A0A5BA4F707079C0A0A0A53A4F70708A50A0A0A9CA4A49B0A0A0A4B0707F6 + F6080A0A0A0A0A0A0B08F6F6FFF6F60A0A0A0AA4F70708F6FFFFFFFFFF00FFFF + FFFFFFFFFFF6A70E0E0E0E9CA4F70708A60E0E0E4EA4A4F7A50A0A0A53070A0A + 0A4B07074B0A0A0AF7A4A4A49C0A0A0A0A53F707F70A0A0A4BA4F7F707A50A0A + 0A53A4F70707089D0A0A0A4BA4F70708F6F6530A0A0A539B9BA4A4A4A4A4A4A4 + F7F70707F7F7A4530A0A0A0A0A0A9CF7070707F7A45B0A0A0A0A0A0A53F70708 + F6FFFFFFFFFFF6A60E0E0E0E4EA4F707F6F6FFFFFFFFFFFFF6EF0E0E0E0E4EA4 + F707074B0A0A0A9CA4F707075C0A0A0A53A4F70708070A0A0A54F7A44B0A0A0A + 9C0708F6FFFF9D0A0A0A0A4B07F6FFFFFFF6070A0A0A0AA4F70708F6FFFFFFFF + FF00FFFFFFFFFFFFFFF6EF0E0E0E0E5CA4F70708A60E0E0E0EA4A4F707A50A0A + 0BF64B0A0A530707A50A0A0AA4F7A4A45B0A0A0A0A53F707F70A0A0A4BA4F7F7 + 07F70A0A0A0BA4A4F707089C0A0A0A0BA4A4F70708F6530A0A0A4B9BA4A4A4A4 + A4A4A4A4A4F7F7F7F7530A0A0A0A0A0A0A0AA407070707A40B0A0A0A0A0A0A0A + 540708F6F6FFFFFFFFFFF6A60E0E0E0E55A4F707F6F6FFFFFFFFFFFFF6EF0E0E + 0E0E4EA4F7F7074B0A0A0A5CA4F70707530A0A0A53A4F707F6F60B0A0A0AF7A4 + 0A0A0A0A0708F6F6FFFFFFA55454A5F6FFFFFFFFFFF6F70A0A0A0BA4F70708F6 + FFFFFFFFFF00FFFFFFFFFFFFFFF6EF0E0E0E0E5CA4F70708EF0E0E0E0E9CA4F7 + 0708F70A0AF6A50A0A0A0808070A0A0A54F7A4A4530A0A0A0A9CF707080A0A0A + 0AF7F7F707A50A0A0A0BA4A4F70707F70A0A0A0BA4A4F7070708530A0A0A0A0A + 0A4B5354A4A4A4A4A4A4F7F70B0A0A0A0A0A0A0A0A0AF7070707A50A0A0A0A0A + 0A0A0A0AA50708F6FFFFFFFFFFF6F6560E0E0E0E55A40707F6F6FFFFFFFFFFFF + F6EF0E0E0E0E4EA4F7F7070A0A0A0A5BA4F707074B0A0A0A53A4F707F6F6A50A + 0A0A0A0A0A0A0A5408F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F70A0A0A4BA4 + F70708F6FFFFFFFFFF00FFFFFFFFFFFFFFF6EF0E0E0E0E5CA4F70707EE0E0E0E + 0E5CA4F70708F69D0AFF080A0A0AF6F6F6530A0A0AF7F7A40B0A0A0A0AA40708 + F60B0A0A0AF7F7F7F7A50A0A0A0A9BA4F70707F70A0A0A0BA4A4A4F70707530A + 0A0A0A0A0A0A0A0A0A0A4B9CA4A4F7530A0A0A0A0A0A0A0A0A0B070707F70A0A + 0A0A0A0A0A0A0A0A0708F6F6FFFFFFFFFFF6F6560E0E0E0E5CA40708F6FFFFFF + FFFFFFFFF6EF0E0E0E0E4EA4A4F7F70A0A0A0A5BA4F707074B0A0A0A53F70707 + F6F6F60B0A0A0A0A0A0A0A07F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F70A + 0A0A4BA4F70708F6FFFFFFFFFF00FFFFFFFFFFFFFFF6EF0E0E0E0E55A4F70707 + AE0E0E0E0E5CA4F70708F6FFA5FFFF540A0AF6F6F6070A0A0A54F7A40A0A0A0A + 0A070708F6540A0A0AF7F7F7F7A40A0A0A0A9B9BA4F7F7A50A0A0A0A9B9BA4F7 + F7075C0A0A0A0A0A0A0A0A0A0A0A0A0AA4A4A40A0A0A0A0A0A0A0A0A0A5C0808 + 085C0A0A0A0A0A0A0A0A0A5408F6F6F6FFFFFFFFFFF6F60E0E0E0E0E5CA40708 + F6FFFFFFFFFFFFFFF6EF0E0E0E0E4EA4A4F7F70A0A0A0A9BA4F707F70A0A0A0A + 53F70708F6F6FFEE0A0A0A0A0A0AA5F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF6A50A0A0A4BF7F70708F6FFFFFFFFFF00FFFFFFFFFFFFFFF6070E0E0E0E55 + A4F70707AE0E0E0E0E55A4F70708F6FFFFFFFF070B0AF6FFFFFF540A0A0A4B0A + 0A0A0A0A4B0708F6F6A50A0A0AA4F7A4A49C0A0A0A0A5B9BA4F7F7A40A0A0A0A + 5B9B9BA4A4F75C0A0A0A4B5354530A0A0A0A0A0AA4A49C0A0A0A0A0A0A0A0A0A + 0A070808080B0A0A0A0A0A0A0A0A0A0708F6F6F6FFFFFFFFFFF6F60E0E0E0E0E + 9CF70708F6FFFFFFFFFFFFFFF6EF0E0E0E0E4EA4A4F7F70A0A0A0AA4F7F70754 + 0A0A0A0AA4070708F6FFFFFF9D0A0A0A0A5CF6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF6A50A0A0A4BF7F70708F6FFFFFFFFFF00FFFFFFFFFFFFFFF6080E + 0E0E0E55A4F70707AE0E0E0E0E55A4F70708F6FFFFFFFFFFF607F6FFFFFF070A + 0A0A0A0A0A0A0A0AA508F6F6FF080A0A0A9CF7A4A45C0A0A0A0A9B9BA4A4F7A4 + 0A0A0A0A535B5B9BA4A49C0A0A0A53A4F70707A50A0A0A0AA4A4530A0A0A0A0A + 0A0A0A0AF7080808070A0A0A0A0A0A0A0A0BEE080808F6F6FFFFFFFFFFF6F60E + 0E0E0E0EA4F70708F6FFFFFFFFFFFFFFF6EF0E0E0E0E4EA4A4F7A40A0A0A0AA4 + F7F70A0A0A0A0A0AF70708F6F6FFFFFFFFEE5454AEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFF6A50A0A0A4BF70707F6F6FFFFFFFFFF00FFFFFFFFFFFF + F6F6080E0E0E0E55A4A4F707A60E0E0E0E55A4F70708F6FFFFFFFFFFFFFFFFFF + FFFFFFAE0A0A0A0A0A0A0A0A08F6F6FFFFFF4B0A0A54F7F7A4530A0A0A0AA4A4 + A4F7F7A40A0A0A0A4A5B5B9B9BA49C0A0A0A4BF7F7F707A50A0A0A0AA4A4540A + 0A0A0A0A0A0A5C0708080808F70A0A0A0A0A0A0A9C0708080708F6F6F6FFFFFF + FFF6F60E0E0E0E0EA4F70708F6FFFFFFFFFFFFFFF6A70E0E0E0E55A4F7F7540A + 0A0A0AF7F7F70A0A0A0A0A0AF708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFF9D0A0A0A54070708F6F6FFFFFFFFFF00FFFF + FFFFFFFFF6F6070E0E0E0E4D9BA4F7F7A50E0E0E0E55A4F70708F6FFFFFFFFFF + FFFFFFFFFFFFFFFFAE0A0A0A0A0A0AA5F6F6FFFFFFFFF70A0A0A07F7F7530A0A + 0A0A0A53A4F7F7A40A0A0A0A0A5B5B5B0AA4A40A0A0A4BF7F7F7F7A50A0A0A0A + A4F75C0A0A0A0A4B9C07070808070707F70A0A0A0A0A5C0707080807070708F6 + F6FFFFFFFFF6EF0E0E0E0E0EA4F70708F6FFFFFFFFFFFFFFF6A60E0E0E0E55A4 + A5530A0A0A0A0A0707F70A0A0A0A0A0A07F6F6F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF540A0A0A9C0708F6F6F6FFFFFFFF + FF00FFFFFFFFFFFFF608070E0E0E0E4D5B9BA4A49D0E0E0E0E4EA4F70708F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFF07540A0A0BA5FFFFFFFFFFFFFFF60B0A0A5407 + F70B0A0A0A0A0A0A5C0707A50A0A0A0A0A0A530A0AA4A40B0A0A4BF7F7F7F7A4 + 0A0A0A0AA4F75C0A0A0A53F7F7070707070707079C0A0A0A0AA5F7070707F707 + 070708F6F6FFFFFFFFF6EF0E0E0E0E4EA4F70708F6FFFFFFFFFFFFFFF6A60E0E + 0E0E55A45C0A0A0A0A0A0A07080807A59D0B0A0A07FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF540A0A0AA5F6F6F6F6FF + FFFFFFFFFF00FFFFFFFFFFFFF608070E0E0E0E4D5B9B9BA4550E0E0E0E4EA4F7 + 0708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 + 0A0A0A53530A0A0A0A0A0A0A9CEEA5530A0A0A0A0A0A0A0A0A9CF7530A0A0AF7 + F7F7A45C0A0A0A0AF7F75C0A0A0AA4F7F7F7F79C4BF707079C0A0A0A5CF7F7F7 + F7A50AA5070708F6F6FFFFFFFFF6EF0E0E0E0E4EA4F70708F6FFFFFFFFFFFFF6 + F6A60E0E0E0E55A4530A0A0A0A0A0AF6F6F6F6FFFFFF075408FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6540A0AA5F6 + F6F6FFFFFFFFFFFFFF00FFFFFFFFFFFFF608EE0E0E0E0E0E5B5B9B9B550E0E0E + 0E4EA4F707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFF540A0A0A0A0A0A0A0A0A0A0A53A50A0A0A0A0A0A0A0A0A0A0AA4F7A5 + 0A0A0AF7F7F7A4530A0A0A0BF7079C0A0A0AF7F7F7F7F7540AF7F707F70A0A0A + A4A4A4F7F7A40AA4F70708F6F6FFFFFFFFF6EF0E0E0E0E4EA4F70708F6FFFFFF + FFFFFFF6F6560E0E0E0E5DF75C530B0A0A0A0AF6F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 540AA5FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF089F5E0E0E0E0E0E9B9B9B5B + 0E0E0E0E0E55A40707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF64B0A0A0A0A0A0A0BA55C0B54EE0A0A0A0A0A0A5C0A0A0A + 0AA507070A0A0AA507F7A4530A0A0A4B0707A50A0A0AF7F7A4A4A4530AF7F707 + F70A0A0AF7F7A4A4A4530AA4F70708F6F6FFFFFFFFFFEF0E0E0E0E4EA4F70708 + F6FFFFFFFFFFFFF6F6560E0E0E0E9DF70708F608A50B0BFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF60BAEFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFEF0E0E0E0E0E0E0E + 55A49B540E0E0E0E0E55F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFF65C0A0A0A0A0B07FFFFFFF608540A0A0A0A0A + F70B0A0A0AF707089D0A0A4B0707F70A0A0A0A5C0708070A0A0AF7F7A4A4A44B + 0AF7F707070A0A0AA5F7A4A4A4530AA4F70708F6FFFFFFFFFFFFEF0E0E0E0E4E + A4A40708F6F6FFFFFFFFFFF6080E0E0E0E0EA4F70708F6FFFFFF07FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF07F6FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFF60E0E0E + 0E0E0E0E0E4E550E0E0E0E0E0E5DF70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A5A5AEF6FFFFFFFFFFFFFF07 + 0B0A0A0AEEA50A0A0AF708F6F64B0A0A5C075C0A0A0A0AF708F6F60B0A0AA5F7 + F7F7A40A0AF70707080B0A0AA5F7F7F7A40B0AA40707F6F6FFFFFFFFFFFFF60E + 0E0E0E4EA4A4F707F6F6FFFFFFFFFFF6080E0E0E0E0EA4F707F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FF0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA60708F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF69D0A0A07F60B0A0AA5F6F6F6070A0A0A0A0A0A0A0A0B08F6F6F65C + 0A0A4BF707F75C0A0AF70708F65C0A0A0BF707F75C0A0AA50708F6F6FFFFFFFF + FFFFF60E0E0E0E4EA4A4F707F6F6FFFFFFFFF6F6EE0E0E0E0E4EF70708F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFF0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EAE08F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFEE0B07FFA50A0AA5F6FFFFFFAE0A0A0A0A0A0A0AA5F6 + F6FFFF080A0A0A0A54540A0A0AF708F6F6080A0A0A0A54540A0A0AF708F6F6FF + FFFFFFFFFFFFF60E0E0E0E0EA4A4F707F6F6FFFFFFFFF6F6A60E0E0E0E55F707 + 08F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFFFFEFA7570E0E0E0E0E0E0E0E0E0E0E0E0E08F6F6F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07F6FFFFAE0AAEFFFFFFFFFFAE0A0A0A0A + 0A54F6F6FFFFFFFF9D0A0A0A0A0A0A0A0AEEF6F6F6FF5C0A0A0A0A0A0A0A0AEE + F6F6FFFFFFFFFFFFFFFFF64E0E0E0E0EA4A4F70708F6FFFFFFFFF6089E0E0E0E + 0E5DF707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFEF9F4E0E0E0E0E0E0E0E0E9FF6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 074B0A0BA5F6FFFFFFFFFFFFFF4B0A0A0A0A0A0A0B08F6FFFFFFF64B0A0A0A0A + 0A0A4BF6F6FFFFFFFFFFFFFFFFFFF6560E0E0E0EA4A4F70708F6FFFFFFF6F608 + 560E0E0E0EA50707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFEF9F4E0E0E0E0E4E + F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA50B0A0A0B5C08FFFFFFFFFFFFF6 + A50B0A0A0BA5FFFFFFFFFFFFFFFFFFFFFFFFFF9F0E0E0E0E5CA4F70707F6F6FF + FFF608070E0E0E0E0EF70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF + 9F57A7F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF0E0E0E0E5DA4A4F7 + 0708F6F6F6F608A60E0E0E0E56F707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF0E0E0E0E + 55A4A4F7070708F6F608075E0E0E0E0E9D0708F6F6FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0E0E0E0E56A4A4A4F70707070707F74E0E0E0E0EF70708F6FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFF570E0E0E0EA4A4A4A4F7F707F7F7A50E0E0E0E560708F6F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFAF0E0E0E0EA5A4A4A4A4F7F7F7A4550E0E0E0EA607F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF60E0E0E0E56A4A4A4A4A4A4A49C0E0E0E0E4E07 + 08F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F0E0E0E0EA5A4A4A4A4A4A44E0E0E + 0E0EA608F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF0E0E0E0E56F7F7A4A4A4 + 560E0E0E0E5608F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F0E0E0E0E0E + 9EA59E4E0E0E0E0E0E07F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF656 + 0E0E0E0E0E0E0E0E0E0E0E0EAFF6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF64E0E0E0E0E0E0E0E0E0E0EAFF6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6570E0E0E0E0E0E0E4E07FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFEF9F5757579FEFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00} + OnClick = LogoClick + end + object Label1: TLabel + Left = 2 + Top = 2 + Width = 287 + Height = 13 + Align = alTop + AutoSize = False + end + object Label2: TLabel + Left = 2 + Top = 455 + Width = 287 + Height = 13 + Align = alBottom + Alignment = taRightJustify + Caption = 'OSR2' + Color = clWhite + Font.Charset = DEFAULT_CHARSET + Font.Color = clSkyBlue + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentColor = False + ParentFont = False + end + object Label3: TLabel + Left = 2 + Top = 215 + Width = 287 + Height = 19 + Align = alTop + Alignment = taCenter + Caption = 'progressus imprimis' + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Times New Roman' + Font.Style = [fsItalic] + ParentFont = False + end + object HomeLink: TLabel + Left = 2 + Top = 344 + Width = 287 + Height = 23 + Cursor = crHandPoint + Alignment = taCenter + AutoSize = False + Caption = 'Documentation' + Font.Charset = ANSI_CHARSET + Font.Color = clNavy + Font.Height = -16 + Font.Name = 'Times New Roman' + Font.Style = [fsUnderline] + ParentFont = False + OnClick = HomeLinkClick + end + object Button1: TButton + Left = 87 + Top = 264 + Width = 117 + Height = 25 + Caption = '&New Game' + ModalResult = 1 + TabOrder = 0 + end + object Button2: TButton + Left = 87 + Top = 300 + Width = 117 + Height = 25 + Caption = '&Load Game' + ModalResult = 4 + TabOrder = 1 + end + object Button4: TButton + Left = 87 + Top = 404 + Width = 117 + Height = 25 + Caption = 'E&xit' + ModalResult = 2 + TabOrder = 2 + end + end + object OpenDialog1: TOpenDialog + DefaultExt = 'pq' + Filter = 'Progress Quest games|*.pq' + Left = 196 + Top = 172 + end +end diff --git a/Front.pas b/Front.pas new file mode 100644 index 0000000..5ad4bce --- /dev/null +++ b/Front.pas @@ -0,0 +1,48 @@ +unit Front; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls; + +type + TForm3 = class(TForm) + Panel1: TPanel; + Logo: TImage; + Button1: TButton; + Button2: TButton; + Label1: TLabel; + OpenDialog1: TOpenDialog; + Button4: TButton; + Label2: TLabel; + Label3: TLabel; + HomeLink: TLabel; + procedure HomeLinkClick(Sender: TObject); + procedure LogoClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + Form3: TForm3; + +implementation + +uses ShellAPI, Main, Info; + +{$R *.dfm} + +procedure TForm3.HomeLinkClick(Sender: TObject); +begin + ShellExecute(GetDesktopWindow(), 'open', 'http://progressquest.com/pq.html', 0, '', SW_SHOW); +end; + +procedure TForm3.LogoClick(Sender: TObject); +begin + ShellExecute(GetDesktopWindow(), 'open', 'http://progressquest.com/', 0, '', SW_SHOW); +end; + +end. diff --git a/Info.dcu b/Info.dcu new file mode 100644 index 0000000..388c29e Binary files /dev/null and b/Info.dcu differ diff --git a/Info.ddp b/Info.ddp new file mode 100644 index 0000000..cdc0ee8 Binary files /dev/null and b/Info.ddp differ diff --git a/Info.dfm b/Info.dfm new file mode 100644 index 0000000..ad3ed1a --- /dev/null +++ b/Info.dfm @@ -0,0 +1,101 @@ +object Form4: TForm4 + Left = 192 + Top = 107 + Width = 696 + Height = 480 + Caption = 'Progress Quest VI' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Icon.Data = { + 0000010001002020000000000000A80800001600000028000000200000004000 + 0000010008000000000080040000000000000000000000000000000000000000 + 0000000080000080000000808000800000008000800080800000C0C0C000C0DC + C000F0CAA60004040400080808000C0C0C0011111100161616001C1C1C002222 + 220029292900555555004D4D4D004242420039393900807CFF005050FF009300 + D600FFECCC00C6D6EF00D6E7E70090A9AD000000330000006600000099000000 + CC00003300000033330000336600003399000033CC000033FF00006600000066 + 330000666600006699000066CC000066FF000099000000993300009966000099 + 99000099CC000099FF0000CC000000CC330000CC660000CC990000CCCC0000CC + FF0000FF660000FF990000FFCC00330000003300330033006600330099003300 + CC003300FF00333300003333330033336600333399003333CC003333FF003366 + 00003366330033666600336699003366CC003366FF0033990000339933003399 + 6600339999003399CC003399FF0033CC000033CC330033CC660033CC990033CC + CC0033CCFF0033FF330033FF660033FF990033FFCC0033FFFF00660000006600 + 330066006600660099006600CC006600FF006633000066333300663366006633 + 99006633CC006633FF00666600006666330066666600666699006666CC006699 + 00006699330066996600669999006699CC006699FF0066CC000066CC330066CC + 990066CCCC0066CCFF0066FF000066FF330066FF990066FFCC00CC00FF00FF00 + CC009999000099339900990099009900CC009900000099333300990066009933 + CC009900FF00996600009966330099336600996699009966CC009933FF009999 + 330099996600999999009999CC009999FF0099CC000099CC330066CC660099CC + 990099CCCC0099CCFF0099FF000099FF330099CC660099FF990099FFCC0099FF + FF00CC00000099003300CC006600CC009900CC00CC0099330000CC333300CC33 + 6600CC339900CC33CC00CC33FF00CC660000CC66330099666600CC669900CC66 + CC009966FF00CC990000CC993300CC996600CC999900CC99CC00CC99FF00CCCC + 0000CCCC3300CCCC6600CCCC9900CCCCCC00CCCCFF00CCFF0000CCFF330099FF + 6600CCFF9900CCFFCC00CCFFFF00CC003300FF006600FF009900CC330000FF33 + 3300FF336600FF339900FF33CC00FF33FF00FF660000FF663300CC666600FF66 + 9900FF66CC00CC66FF00FF990000FF993300FF996600FF999900FF99CC00FF99 + FF00FFCC0000FFCC3300FFCC6600FFCC9900FFCCCC00FFCCFF00FFFF3300CCFF + 6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF + 66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7 + D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080 + 80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF005852 + 5151515151515258585858585858585858585858585858585852515151515852 + 51514A4A4A515152585858585858585858585858585858585251514B4A4B5852 + 514B4A4A4A4B51515258585858585858585858585858585251514B4A4A4A5852 + 150F4A4A4A4A4B5151515152525251525252525252525151514A0F154A4B580B + 0E0E0B4A4A4A4A4A5151515151515151515151515151514B4B0B0E0E0B512311 + 15220E514A4A4A4A4A4A4A4B4A4A4A4A4A4A4A4A4A4A4A4A4A0F22143D234313 + 22431151514A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A11432213435822 + 23296710294B4A4A44442244154422441544224444444A221012292322585858 + 58514443151D4B4A442215221522152215221522154B0E151544515252585858 + 5879294A43140D4A22150D0E2243100E1D0D2215220D14434A03525258585858 + 585852514A224A430E0E1443220D111543140E0E4344224A4A51515258585858 + 585858514B1514220E2243150D444444444322222214154B4B4B515258585858 + 585858585174151D4A434A4A15104422234A434A1D15742A4A4B515258585858 + 585858585222444B457422224B44224B222274454B4422524A4B515258585858 + 58585858510A4B4C3F4C44EA4A22224A6D444C3F4C4B0A4A4A51515258585858 + 585858580D15294B4523ECC8C44A4AE946EC23454B29150D4A51515858585858 + 58585858444A4A234AAEC8FCFCA7E9F9F946AE44234A4A435151525858585858 + 58585858232244224AEFA7FCFC62F9F9F946EF4A224422235151525858585858 + 585858584B434A110C4A8DA862F9F9F9698D4A0C114A43295151525858585858 + 5858585852222210514A8D46F9F9F962A78D4A51104322524B51525858585858 + 58585858524B0C034AEB46F9F9F962FCFCA7F84A030C4B4A4A51515258585858 + 5858585251514B4AED46F9F9F9E3A8FCFCFCA7ED4A4B4A4A4A4B515152585858 + 58585851514B4AED46F9F9F9E3F7F7E6FCFCFCA7ED4A4A4A4A4A4B5152585858 + 585852514B4AEB46F9F9F9E3ED525892E6FCFCFCA7EB4A4A4A4A4A4B51525858 + 585852514A6D46F9F9F9E3ED5858585892E6FCFCFCA76D4A4A4A4A4A51515858 + 5858514B14B5F047F9E3F7585858585858B5E6FCC8DDB5144A4A4A4A51515858 + 585852AE09F3F3BCE3B55858585858585858B5D0DDF3F309AE4A4B4B51515858 + 5858BCF4F5F4F4F4075858585858585858585807F4F4F4F5DEBC515151525858 + 58991BF5F5F2DDB6585858585858585858585858B6DDF3F5F51B995152585858 + 5892B51909B592585858585858585858585858585892B509DDB5925858585858 + 58720909ECEB58585858585858585858585858585858F8EC0909725858585858 + 58F78DAEED5858585858585858585858585858585858581CAE8D925858580000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000} + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object WebBrowser1: TWebBrowser + Left = 0 + Top = 0 + Width = 688 + Height = 453 + Align = alClient + TabOrder = 0 + ControlData = { + 4C0000001B470000D22E00000000000000000000000000000000000000000000 + 000000004C000000000000000000000001000000E0D057007335CF11AE690800 + 2B2E126208000000000000004C0000000114020000000000C000000000000046 + 8000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000100000000000000000000000000000000000000} + end +end diff --git a/Info.pas b/Info.pas new file mode 100644 index 0000000..d9d606d --- /dev/null +++ b/Info.pas @@ -0,0 +1,31 @@ +unit Info; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, OleCtrls, SHDocVw; + +type + TForm4 = class(TForm) + WebBrowser1: TWebBrowser; + private + { Private declarations } + public + procedure Go(url: String); + end; + +var + Form4: TForm4; + +implementation + +{$R *.dfm} + +procedure TForm4.Go(url: String); +begin + WebBrowser1.Navigate(url); + Show; +end; + +end. diff --git a/Main.dcu b/Main.dcu new file mode 100644 index 0000000..cb69a90 Binary files /dev/null and b/Main.dcu differ diff --git a/Main.ddp b/Main.ddp new file mode 100644 index 0000000..cdc0ee8 Binary files /dev/null and b/Main.ddp differ diff --git a/Main.dfm b/Main.dfm new file mode 100644 index 0000000..3567a65 --- /dev/null +++ b/Main.dfm @@ -0,0 +1,636 @@ +object Form1: TForm1 + Left = 163 + Top = 116 + Width = 682 + Height = 569 + HorzScrollBar.Visible = False + VertScrollBar.Visible = False + BorderIcons = [biSystemMenu, biMinimize] + Caption = 'Progress Quest' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Icon.Data = { + 0000010001002020000000000000A80800001600000028000000200000004000 + 0000010008000000000080040000000000000000000000000000000000000000 + 0000000080000080000000808000800000008000800080800000C0C0C000C0DC + C000F0CAA60004040400080808000C0C0C0011111100161616001C1C1C002222 + 220029292900555555004D4D4D004242420039393900807CFF005050FF009300 + D600FFECCC00C6D6EF00D6E7E70090A9AD000000330000006600000099000000 + CC00003300000033330000336600003399000033CC000033FF00006600000066 + 330000666600006699000066CC000066FF000099000000993300009966000099 + 99000099CC000099FF0000CC000000CC330000CC660000CC990000CCCC0000CC + FF0000FF660000FF990000FFCC00330000003300330033006600330099003300 + CC003300FF00333300003333330033336600333399003333CC003333FF003366 + 00003366330033666600336699003366CC003366FF0033990000339933003399 + 6600339999003399CC003399FF0033CC000033CC330033CC660033CC990033CC + CC0033CCFF0033FF330033FF660033FF990033FFCC0033FFFF00660000006600 + 330066006600660099006600CC006600FF006633000066333300663366006633 + 99006633CC006633FF00666600006666330066666600666699006666CC006699 + 00006699330066996600669999006699CC006699FF0066CC000066CC330066CC + 990066CCCC0066CCFF0066FF000066FF330066FF990066FFCC00CC00FF00FF00 + CC009999000099339900990099009900CC009900000099333300990066009933 + CC009900FF00996600009966330099336600996699009966CC009933FF009999 + 330099996600999999009999CC009999FF0099CC000099CC330066CC660099CC + 990099CCCC0099CCFF0099FF000099FF330099CC660099FF990099FFCC0099FF + FF00CC00000099003300CC006600CC009900CC00CC0099330000CC333300CC33 + 6600CC339900CC33CC00CC33FF00CC660000CC66330099666600CC669900CC66 + CC009966FF00CC990000CC993300CC996600CC999900CC99CC00CC99FF00CCCC + 0000CCCC3300CCCC6600CCCC9900CCCCCC00CCCCFF00CCFF0000CCFF330099FF + 6600CCFF9900CCFFCC00CCFFFF00CC003300FF006600FF009900CC330000FF33 + 3300FF336600FF339900FF33CC00FF33FF00FF660000FF663300CC666600FF66 + 9900FF66CC00CC66FF00FF990000FF993300FF996600FF999900FF99CC00FF99 + FF00FFCC0000FFCC3300FFCC6600FFCC9900FFCCCC00FFCCFF00FFFF3300CCFF + 6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF + 66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7 + D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080 + 80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF005852 + 5151515151515258585858585858585858585858585858585852515151515852 + 51514A4A4A515152585858585858585858585858585858585251514B4A4B5852 + 514B4A4A4A4B51515258585858585858585858585858585251514B4A4A4A5852 + 150F4A4A4A4A4B5151515152525251525252525252525151514A0F154A4B580B + 0E0E0B4A4A4A4A4A5151515151515151515151515151514B4B0B0E0E0B512311 + 15220E514A4A4A4A4A4A4A4B4A4A4A4A4A4A4A4A4A4A4A4A4A0F22143D234313 + 22431151514A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A11432213435822 + 23296710294B4A4A44442244154422441544224444444A221012292322585858 + 58514443151D4B4A442215221522152215221522154B0E151544515252585858 + 5879294A43140D4A22150D0E2243100E1D0D2215220D14434A03525258585858 + 585852514A224A430E0E1443220D111543140E0E4344224A4A51515258585858 + 585858514B1514220E2243150D444444444322222214154B4B4B515258585858 + 585858585174151D4A434A4A15104422234A434A1D15742A4A4B515258585858 + 585858585222444B457422224B44224B222274454B4422524A4B515258585858 + 58585858510A4B4C3F4C44EA4A22224A6D444C3F4C4B0A4A4A51515258585858 + 585858580D15294B4523ECC8C44A4AE946EC23454B29150D4A51515858585858 + 58585858444A4A234AAEC8FCFCA7E9F9F946AE44234A4A435151525858585858 + 58585858232244224AEFA7FCFC62F9F9F946EF4A224422235151525858585858 + 585858584B434A110C4A8DA862F9F9F9698D4A0C114A43295151525858585858 + 5858585852222210514A8D46F9F9F962A78D4A51104322524B51525858585858 + 58585858524B0C034AEB46F9F9F962FCFCA7F84A030C4B4A4A51515258585858 + 5858585251514B4AED46F9F9F9E3A8FCFCFCA7ED4A4B4A4A4A4B515152585858 + 58585851514B4AED46F9F9F9E3F7F7E6FCFCFCA7ED4A4A4A4A4A4B5152585858 + 585852514B4AEB46F9F9F9E3ED525892E6FCFCFCA7EB4A4A4A4A4A4B51525858 + 585852514A6D46F9F9F9E3ED5858585892E6FCFCFCA76D4A4A4A4A4A51515858 + 5858514B14B5F047F9E3F7585858585858B5E6FCC8DDB5144A4A4A4A51515858 + 585852AE09F3F3BCE3B55858585858585858B5D0DDF3F309AE4A4B4B51515858 + 5858BCF4F5F4F4F4075858585858585858585807F4F4F4F5DEBC515151525858 + 58991BF5F5F2DDB6585858585858585858585858B6DDF3F5F51B995152585858 + 5892B51909B592585858585858585858585858585892B509DDB5925858585858 + 58720909ECEB58585858585858585858585858585858F8EC0909725858585858 + 58F78DAEED5858585858585858585858585858585858581CAE8D925858580000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000} + KeyPreview = True + OldCreateOrder = False + Position = poScreenCenter + OnClose = FormClose + OnCreate = FormCreate + OnKeyDown = FormKeyDown + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 200 + Height = 507 + Align = alLeft + TabOrder = 0 + object Label1: TLabel + Left = 1 + Top = 1 + Width = 198 + Height = 13 + Align = alTop + Caption = 'Character Sheet' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label6: TLabel + Left = 1 + Top = 229 + Width = 198 + Height = 13 + Align = alTop + Caption = 'Experience' + end + object Label4: TLabel + Left = 1 + Top = 258 + Width = 198 + Height = 13 + Align = alTop + Caption = 'Spell Book' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Traits: TListView + Left = 1 + Top = 14 + Width = 198 + Height = 79 + Align = alTop + Columns = < + item + Caption = 'Trait' + Width = 60 + end + item + AutoSize = True + Caption = 'Value' + end> + ColumnClick = False + FlatScrollBars = True + Items.Data = { + 6E0000000400000000000000FFFFFFFFFFFFFFFF0000000000000000044E616D + 6500000000FFFFFFFFFFFFFFFF0000000000000000045261636500000000FFFF + FFFFFFFFFFFF000000000000000005436C61737300000000FFFFFFFFFFFFFFFF + 0000000000000000054C6576656C} + ReadOnly = True + TabOrder = 1 + ViewStyle = vsReport + end + object Stats: TListView + Left = 1 + Top = 93 + Width = 198 + Height = 136 + Align = alTop + Columns = < + item + Caption = 'Stat' + Width = 60 + end + item + AutoSize = True + Caption = 'Value' + end> + ColumnClick = False + FlatScrollBars = True + Items.Data = { + CE0000000800000000000000FFFFFFFFFFFFFFFF000000000000000003535452 + 00000000FFFFFFFFFFFFFFFF000000000000000003434F4E00000000FFFFFFFF + FFFFFFFF00000000000000000344455800000000FFFFFFFFFFFFFFFF00000000 + 0000000003494E5400000000FFFFFFFFFFFFFFFF000000000000000003574953 + 00000000FFFFFFFFFFFFFFFF00000000000000000343484100000000FFFFFFFF + FFFFFFFF0000000000000000064850204D617800000000FFFFFFFFFFFFFFFF00 + 00000000000000064D50204D6178} + ReadOnly = True + TabOrder = 0 + ViewStyle = vsReport + end + object ExpBar: TProgressBar + Left = 1 + Top = 242 + Width = 198 + Height = 16 + Align = alTop + Min = 0 + Max = 100 + ParentShowHint = False + Position = 50 + Smooth = True + ShowHint = True + TabOrder = 2 + end + object Spells: TListView + Left = 1 + Top = 271 + Width = 198 + Height = 203 + Align = alClient + Columns = < + item + AutoSize = True + Caption = 'Spell' + end + item + Caption = 'Level' + Width = 60 + end> + ColumnClick = False + FlatScrollBars = True + ReadOnly = True + TabOrder = 3 + ViewStyle = vsReport + end + object Cheats: TPanel + Left = 1 + Top = 474 + Width = 198 + Height = 32 + Align = alBottom + TabOrder = 4 + Visible = False + object CashIn: TButton + Left = 32 + Top = 4 + Width = 25 + Height = 25 + Caption = '$' + TabOrder = 0 + OnClick = CashInClick + end + object Button1: TButton + Left = 4 + Top = 4 + Width = 25 + Height = 25 + Caption = 'L+1' + TabOrder = 1 + OnClick = Button1Click + end + object FinishQuest: TButton + Left = 92 + Top = 4 + Width = 27 + Height = 25 + Caption = 'Q!' + TabOrder = 2 + OnClick = FinishQuestClick + end + object Button3: TButton + Left = 124 + Top = 4 + Width = 27 + Height = 25 + Caption = 'X!' + TabOrder = 3 + OnClick = SpeedButton1Click + end + object CheatPlot: TButton + Left = 60 + Top = 3 + Width = 27 + Height = 25 + Caption = 'P!' + TabOrder = 4 + OnClick = CheatPlotClick + end + end + end + object Panel3: TPanel + Left = 474 + Top = 0 + Width = 200 + Height = 507 + Align = alRight + TabOrder = 1 + object Label3: TLabel + Left = 1 + Top = 177 + Width = 198 + Height = 13 + Align = alTop + Caption = 'Quests' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label2: TLabel + Left = 1 + Top = 1 + Width = 198 + Height = 13 + Align = alTop + Caption = 'Plot Development' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object QuestBar: TProgressBar + Left = 1 + Top = 490 + Width = 198 + Height = 16 + Align = alBottom + Min = 0 + Max = 0 + ParentShowHint = False + Smooth = True + ShowHint = True + TabOrder = 0 + end + object Plots: TListView + Left = 1 + Top = 14 + Width = 198 + Height = 147 + Align = alTop + Columns = < + item + AutoSize = True + Caption = 'Act' + end> + ColumnClick = False + FlatScrollBars = True + IconOptions.Arrangement = iaLeft + ReadOnly = True + ShowColumnHeaders = False + StateImages = ImageList1 + TabOrder = 1 + ViewStyle = vsReport + end + object PlotBar: TProgressBar + Left = 1 + Top = 161 + Width = 198 + Height = 16 + Align = alTop + Min = 0 + Max = 0 + ParentShowHint = False + Smooth = True + ShowHint = True + TabOrder = 2 + end + object Quests: TListView + Left = 1 + Top = 190 + Width = 198 + Height = 300 + Align = alClient + Columns = < + item + AutoSize = True + Caption = 'Quest' + end> + ColumnClick = False + FlatScrollBars = True + IconOptions.Arrangement = iaLeft + ReadOnly = True + ShowColumnHeaders = False + StateImages = ImageList1 + TabOrder = 3 + ViewStyle = vsReport + end + end + object Panel2: TPanel + Left = 200 + Top = 0 + Width = 274 + Height = 507 + Align = alClient + TabOrder = 2 + object InventoryLabelAlsoGameStyle: TLabel + Left = 1 + Top = 176 + Width = 272 + Height = 13 + Align = alTop + Caption = 'Inventory' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label7: TLabel + Left = 1 + Top = 477 + Width = 272 + Height = 13 + Align = alBottom + Caption = 'Encumbrance' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object Label8: TLabel + Left = 1 + Top = 1 + Width = 272 + Height = 13 + Align = alTop + Caption = 'Equipment' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Inventory: TListView + Left = 1 + Top = 189 + Width = 272 + Height = 288 + Align = alClient + Columns = < + item + AutoSize = True + Caption = 'Item' + end + item + Alignment = taRightJustify + Caption = 'Qty' + Width = 69 + end> + ColumnClick = False + FlatScrollBars = True + ReadOnly = True + TabOrder = 0 + ViewStyle = vsReport + end + object EncumBar: TProgressBar + Left = 1 + Top = 490 + Width = 272 + Height = 16 + Align = alBottom + Min = 0 + Max = 100 + ParentShowHint = False + Position = 50 + Smooth = True + ShowHint = True + TabOrder = 1 + end + object Equips: TListView + Left = 1 + Top = 14 + Width = 272 + Height = 162 + Align = alTop + Columns = < + item + Caption = 'Position' + Width = 60 + end + item + AutoSize = True + Caption = 'Equipped' + end> + ColumnClick = False + FlatScrollBars = True + Items.Data = { + 410100000B00000000000000FFFFFFFFFFFFFFFF000000000000000006576561 + 706F6E00000000FFFFFFFFFFFFFFFF000000000000000006536869656C640000 + 0000FFFFFFFFFFFFFFFF00000000000000000448656C6D00000000FFFFFFFFFF + FFFFFF0000000000000000074861756265726B00000000FFFFFFFFFFFFFFFF00 + 000000000000000A4272617373616972747300000000FFFFFFFFFFFFFFFF0000 + 0000000000000956616D62726163657300000000FFFFFFFFFFFFFFFF00000000 + 00000000094761756E746C65747300000000FFFFFFFFFFFFFFFF000000000000 + 00000847616D6265736F6E00000000FFFFFFFFFFFFFFFF000000000000000007 + 4375697373657300000000FFFFFFFFFFFFFFFF00000000000000000747726561 + 76657300000000FFFFFFFFFFFFFFFF000000000000000009536F6C6C65726574 + 73} + ReadOnly = True + ShowColumnHeaders = False + TabOrder = 2 + ViewStyle = vsReport + end + object vars: TPanel + Left = 64 + Top = 40 + Width = 185 + Height = 129 + Caption = 'vars' + TabOrder = 3 + Visible = False + object fTask: TLabel + Left = 20 + Top = 16 + Width = 27 + Height = 13 + AutoSize = False + Caption = 'fTask' + Color = clMoneyGreen + ParentColor = False + end + object fQuest: TLabel + Left = 24 + Top = 36 + Width = 31 + Height = 13 + AutoSize = False + Caption = 'fQuest' + Color = clSkyBlue + ParentColor = False + end + object fQueue: TListBox + Left = 16 + Top = 84 + Width = 121 + Height = 41 + ItemHeight = 13 + TabOrder = 0 + end + end + end + object Panel4: TPanel + Left = 0 + Top = 507 + Width = 674 + Height = 35 + Align = alBottom + Caption = 'Panel4' + TabOrder = 3 + object Kill: TStatusBar + Left = 1 + Top = -1 + Width = 672 + Height = 19 + Panels = < + item + Width = 50 + end> + SimplePanel = True + SimpleText = 'Welcome to Progress Quest!' + end + object TaskBar: TProgressBar + Left = 1 + Top = 18 + Width = 672 + Height = 16 + Align = alBottom + Min = 0 + Max = 100 + Position = 50 + Smooth = True + Step = 1 + TabOrder = 1 + end + end + object Timer1: TTimer + Enabled = False + Interval = 100 + OnTimer = Timer1Timer + Left = 40 + Top = 120 + end + object ImageList1: TImageList + Height = 12 + Width = 12 + Left = 92 + Top = 52 + Bitmap = { + 494C01010200040004000C000C00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000300000000C00000001001000000000008004 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 28000000300000000C0000000100010000000000600000000000000000000000 + 000000000000000000000000FFFFFF0000100100000000007FD7FD0000000000 + 7FD77D00000000007FD63D00000000007FD41D00000000007FD48D0000000000 + 7FD5C500000000007FD7E500000000007FD7F500000000007FD7FD0000000000 + 0010010000000000FFFFFF000000000000000000000000000000000000000000 + 000000000000} + end +end diff --git a/Main.pas b/Main.pas new file mode 100644 index 0000000..67b6451 --- /dev/null +++ b/Main.pas @@ -0,0 +1,1193 @@ +unit Main; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, ComCtrls, StdCtrls, ExtCtrls, Buttons, ImgList, Menus, Psock, + NMHttp; + +const + RevString = '&rev=2'; + +type + TForm1 = class(TForm) + Panel1: TPanel; + Label1: TLabel; + Traits: TListView; + Equips: TListView; + Panel3: TPanel; + Label3: TLabel; + QuestBar: TProgressBar; + Stats: TListView; + Label2: TLabel; + PlotBar: TProgressBar; + Plots: TListView; + Quests: TListView; + Panel2: TPanel; + Label4: TLabel; + Spells: TListView; + InventoryLabelAlsoGameStyle: TLabel; + Inventory: TListView; + Panel4: TPanel; + Kill: TStatusBar; + Label6: TLabel; + ExpBar: TProgressBar; + TaskBar: TProgressBar; + Timer1: TTimer; + EncumBar: TProgressBar; + Label7: TLabel; + ImageList1: TImageList; + Label8: TLabel; + Cheats: TPanel; + CashIn: TButton; + Button1: TButton; + FinishQuest: TButton; + Button3: TButton; + CheatPlot: TButton; + vars: TPanel; + fTask: TLabel; + fQuest: TLabel; + fQueue: TListBox; + procedure GoButtonClick(Sender: TObject); + procedure Timer1Timer(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure SpeedButton1Click(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure Button1Click(Sender: TObject); + procedure CashInClick(Sender: TObject); + procedure FinishQuestClick(Sender: TObject); + procedure CheatPlotClick(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure FormKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); + private + procedure Task(caption: String; msec: Integer); + procedure Dequeue; + procedure Q(s: string); + function TaskDone: Boolean; + procedure CompleteQuest; + procedure CompleteAct; + function RollCharacter: Boolean; + procedure WinEquip; + procedure WinSpell; + procedure WinStat; + procedure WinItem; + function SpecialItem: String; + procedure LevelUp; + function BoringItem: String; + function InterestingItem: String; + function MonsterTask(var level: Integer): String; + function EquipPrice: Integer; + procedure Brag; + procedure TriggerAutosizes; + public + procedure LoadGame(name: String); + function SaveGame(report: Boolean): Boolean; + procedure Put(list: TListView; key: String; value: String); overload; + procedure Put(list: TListView; pos: Integer; value: String); overload; + procedure Put(list: TListView; key: String; value: Integer); overload; + procedure Add(list: TListView; key: String; value: Integer); overload; + procedure AddR(list: TListView; key: String; value: Integer); overload; + function Get(list: TListView; key: String): String; overload; + function Get(list: TListView; index: Integer): String; overload; + function GetI(list: TListView; key: String): Integer; overload; + function GetI(list: TListView; index: Integer): Integer; overload; + function Sum(list: TListView): Integer; + end; + +var + Form1: TForm1; + +function Split(s: String; field: Integer): String; + +implementation + +uses NewGuy, Math, Config, Front, ShellAPI, zlibex; + +{$R *.dfm} + +procedure TForm1.Q(s: string); +begin + fQueue.Items.Add(s); + Dequeue; +end; + +function TForm1.TaskDone: Boolean; +begin + with TaskBar do + Result := Position >= Max; +end; + +function Odds(chance, outof: Integer): Boolean; +begin + Result := Random(outof) < chance; +end; + +function RandSign(): Integer; +begin + Result := Random(2) * 2 - 1; +end; + +function Pick(s: TStrings): String; +begin + Result := s[Random(s.Count)]; +end; + +function RandomLow(below: Integer): Integer; +begin + Result := Min(Random(below),Random(below)); +end; + +function Ends(s,e: String): Boolean; +begin + Result := Copy(s,1+Length(s)-Length(e),Length(e)) = e; +end; + +function Plural(s: String): String; +begin + if Ends(s,'y') + then Result := Copy(s,1,Length(s)-1) + 'ies' + else if Ends(s,'ch') or Ends(s,'x') or Ends(s,'s') + then Result := s + 'es' + else if Ends(s,'f') + then Result := Copy(s,1,Length(s)-1) + 'ves' + else if Ends(s,'men') or Ends(s,'Men') + then Result := Copy(s,1,Length(s)-2) + 'en' + else Result := s + 's'; +end; + +function Split(s: String; field: Integer): String; +var + p: Integer; +begin + while field > 0 do begin + p := Pos('|',s); + s := Copy(s,p+1,10000); + Dec(field); + end; + if Pos('|',s) > 0 + then Result := Copy(s,1,Pos('|',s)-1) + else Result := s; +end; + +function Indefinite(s: String; qty: Integer): String; +begin + if qty = 1 then begin + if Pos(s[1], 'AEIOUÜaeiouü') > 0 + then Result := 'an ' + s + else Result := 'a ' + s; + end else begin + Result := IntToStr(qty) + ' ' + Plural(s); + end; +end; + +function Definite(s: String; qty: Integer): String; +begin + if qty > 1 then + s := {IntToStr(qty) + ' ' +} Plural(s); + Result := 'the ' + s; +end; + +function Sick(m: Integer; s: String): String; +begin + Result := IntToStr(m) + s; // in case I screw up + case m of + -5,5: Result := 'dead ' + s; + -4,4: Result := 'comatose ' + s; + -3,3: Result := 'crippled ' + s; + -2,2: Result := 'sick ' + s; + -1,1: Result := 'undernourished ' + s; + end; +end; + +function Young(m: Integer; s: String): String; +begin + Result := IntToStr(m) + s; // in case I screw up + case -m of + -5,5: Result := 'fœtal ' + s; + -4,4: Result := 'baby ' + s; + -3,3: Result := 'preadolescent ' + s; + -2,2: Result := 'teenage ' + s; + -1,1: Result := 'underage ' + s; + end; +end; + +function Big(m: Integer; s: String): String; +begin + Result := s; // in case I screw up + case m of + 1,-1: Result := 'greater ' + s; + 2,-2: Result := 'massive ' + s; + 3,-3: Result := 'enormous ' + s; + 4,-4: Result := 'giant ' + s; + 5,-5: Result := 'titanic ' + s; + end; +end; + +function Special(m: Integer; s: String): String; +begin + Result := s; // in case I screw up + case -m of + 1,-1: + if Pos(' ',Result) > 0 + then Result := 'veteran ' + s + else Result := 'Battle-' + s; + 2,-2: Result := 'cursed ' + s; + 3,-3: + if Pos(' ',Result) > 0 + then Result := 'warrior ' + s + else Result := 'Were-' + s; + 4,-4: Result := 'undead ' + s; + 5,-5: Result := 'demon ' + s; + end; +end; + +function TForm1.MonsterTask(var level: Integer): String; +var + qty, lev, i: Integer; + monster, m1: string; +begin + for i := level downto 1 do begin + if Odds(2,5) then + Inc(level, RandSign()); + end; + if level < 1 then level := 1; + // level = level of puissance of opponent(s) we'll return + + if Odds(1,25) then begin + // use an NPC every once in a while + monster := 'passing ' + Pick(Form2.Race.Items) + ' ' + Pick(Form2.Klass.Items); + lev := level; + monster := monster + '|' + IntToStr(level) + '|*'; + end else if (fQuest.Caption <> '') and Odds(1,4) then begin + // use the quest monster + monster := k.Monsters.Lines[fQuest.Tag]; + lev := StrToInt(Split(monster,1)); + end else begin + // pick the monster out of so many random ones closest to the level we want + monster := Pick(K.Monsters.Lines); + lev := StrToInt(Split(monster,1)); + i := 5; + while (i > 0) do begin // or (lev - level > 4) do begin + m1 := Pick(K.Monsters.Lines); + if abs(level-StrToInt(Split(m1,1))) < abs(level-lev) then begin + monster := m1; + lev := StrToInt(Split(monster,1)); + end; + if i > 0 then Dec(i); + end; + end; + + fTask.Caption := monster; + Result := Split(monster,0); + fTask.Caption := 'kill|' + fTask.Caption; + + qty := 1; + if (level-lev) > 10 then begin + // lev is too low. multiply... + qty := (level + Random(lev)) div max(lev,1); + if qty < 1 then qty := 1; + level := level div qty; + end; + + if (level - lev) <= -10 then begin + Result := 'imaginary ' + Result; + end else if (level-lev) < -5 then begin + i := 10+(level-lev); + i := 5-Random(i+1); + Result := Sick(i,Young((lev-level)-i,Result)); + end else if ((level-lev) < 0) and (Random(2) = 1) then begin + Result := Sick(level-lev,Result); + end else if ((level-lev) < 0) then begin + Result := Young(level-lev,Result); + end else if (level-lev) >= 10 then begin + Result := 'messianic ' + Result; + end else if (level-lev) > 5 then begin + i := 10-(level-lev); + i := 5-Random(i+1); + Result := Big(i,Special((level-lev)-i,Result)); + end else if ((level-lev) > 0) and (Random(2) = 1) then begin + Result := Big(level-lev,Result); + end else if ((level-lev) > 0) then begin + Result := Special(level-lev,Result); + end; + + lev := level; + level := lev * qty; + + Result := Indefinite(Result, qty); +end; + +function ProperCase(s:String):String; +begin + Result := UpperCase(Copy(s,1,1)) + Copy(s,2,10000); +end; + +function TForm1.EquipPrice: Integer; +begin + Result := 5 * GetI(Traits,'Level') * GetI(Traits,'Level') + + 10 * GetI(Traits,'Level') + + 20; +end; + +procedure TForm1.Dequeue; +var + s, a, old: String; + n, l: Integer; +begin + while TaskDone do begin + if Split(fTask.Caption,0) = 'kill' then begin + if Split(fTask.Caption,3) = '*' then begin + WinItem; + end else if Split(fTask.Caption,3) <> '' then begin + Add(Inventory,LowerCase(Split(fTask.Caption,1) + ' ' + ProperCase(Split(fTask.Caption,3))),1); + end; + end else if fTask.Caption = 'buying' then begin + // buy some equipment + Add(Inventory,'Gold',-EquipPrice); + WinEquip; + end else if (fTask.Caption = 'market') or (fTask.Caption = 'sell') then with Inventory do begin + if fTask.Caption = 'sell' then begin + Tag := GetI(Inventory,1); + Tag := Tag * GetI(Traits,'Level'); + if Pos(' of ',Items[1].Caption) > 0 then + Tag := Tag * (1+RandomLow(10)) * (1+RandomLow(GetI(Traits,'Level'))); + Items[0].MakeVisible(false); + Items.Delete(1); + Add(Inventory,'Gold',Tag); + end; + if Items.Count > 1 then begin + Task('Selling ' + Indefinite(Inventory.Items[1].Caption, GetI(Inventory,1)), 1 * 1000); + fTask.Caption := 'sell'; + break; + end; + end; + old := fTask.Caption; + fTask.Caption := ''; + if (fQueue.Items.Count > 0) then begin + a := Split(fQueue.Items[0],0); + n := StrToInt(Split(fQueue.Items[0],1)); + s := Split(fQueue.Items[0],2); + if a = 'task' then begin + Task(s, n * 1000); + fQueue.Items.Delete(0); + end else begin + raise Exception.Create('bah!'); + end; + end else with Encumbar do if Position >= Max then begin + Task('Heading to market to sell loot',4 * 1000); + fTask.Caption := 'market'; + end else if (Pos('kill|',old) <= 0) and (old <> 'heading') then begin + if GetI(Inventory, 'Gold') > EquipPrice then begin + Task('Negotiating purchase of better equipment', 5 * 1000); + fTask.Caption := 'buying'; + end else begin + Task('Heading to the killing fields', 4 * 1000); + fTask.Caption := 'heading'; + end; + end else begin + n := GetI(Traits,'Level'); + l := n; + s := MonsterTask(n); + n := (2 * InventoryLabelAlsoGameStyle.Tag * n * 1000) div l; + Task('Executing ' + s, n); + end; + end; +end; + +function IndexOf(list: TListView; key: String): Integer; +var + i: Integer; +begin + for i := 0 to list.Items.Count-1 do if list.Items.Item[i].Caption = key then begin + Result := i; + Exit; + end; + with list.Items.Add do begin + Result := Index; + Caption := key; + MakeVisible(false); + list.Width := list.Width - 1; // trigger an autosize + end; +end; + +procedure TForm1.Put(list: TListView; key, value: String); +begin + Put(list, IndexOf(list,key), value); +end; + +procedure TForm1.Put(list: TListView; key: String; value: Integer); +begin + Put(list,key,IntToStr(value)); + if key = 'STR' then + Encumbar.Max := 10 + value; + if list = Inventory then with Encumbar do begin + Position := Sum(Inventory) - GetI(Inventory,'Gold'); + Hint := IntToStr(Position) + '/' + IntToStr(Max) + ' cubits'; + end; +end; + +procedure TForm1.Put(list: TListView; pos: Integer; value: String); +begin + with list.Items.Item[pos] do begin + if SubItems.Count < 1 + then SubItems.Add(value) + else SubItems[0] := value; + end; +end; + +function LevelUpTime(level: Integer): Integer; +begin + // ~20 minutes for level 1, eventually dominated by exponential + Result := Round((20.0 + IntPower(1.15,level)) * 60.0); +end; + +procedure TForm1.GoButtonClick(Sender: TObject); +begin + with ExpBar do begin + Position := 0; + Max := LevelUpTime(1); + end; + + fTask.Caption := ''; + fQuest.Caption := ''; + fQueue.Items.Clear; + + Task('Loading.',2000); // that dot is spotted for later... + Q('task|10|Experiencing an enigmatic and foreboding night vision'); + Q('task|6|Much is revealed about that wise old bastard you''d underestimated'); + Q('task|6|A shocking series of events leaves you alone and bewildered, but resolute'); + Q('task|4|Drawing upon an unexpected reserve of determination, you set out on a long and dangerous journey'); + Q('task|2|Loading'); + + PlotBar.Max := 26; + with Plots.Items.Add do begin + Caption := 'Prologue'; + StateIndex := 0; + end; + + Timer1.Enabled := True; + SaveGame(true); +end; + +procedure TForm1.WinSpell; +begin + AddR(Spells, K.Spells.Lines[RandomLow(Min(GetI(Stats,'WIS')+GetI(Traits,'Level'), + K.Spells.Lines.Count))], 1); +end; +{ +procedure TForm1.WinEquip; +var + pos, qual, plus, attrib, attribmax: Integer; + name: String; + stuff, better: TStrings; +begin + qual := Max(Random(GetI(Traits,'Level')),Random(1+GetI(Traits,'Level'))); + pos := Random(Equips.Items.Count); + case pos of + 0: begin stuff := K.Weapons.Lines; better := K.OffenseAttrib.Lines; end; + 1: begin stuff := K.Shields.Lines; better := K.DefenseAttrib.Lines; end; + else begin stuff := K.Armors.Lines; better := K.DefenseAttrib.Lines; end; + end; + if qual > stuff.Count - 1 then + qual := stuff.Count - 1; + name := stuff[qual]; + plus := GetI(Traits,'Level') - qual; + attribmax := Min(plus, better.Count-1); + while (plus > 0) and (attribmax > 0) and Odds(1,2) do begin + attrib := Random(attribmax+1); + name := better[attrib] + ' ' + name; + Dec(plus, attrib); + attribmax := Min(Min(plus, better.Count-1), attrib-1); + end; + if plus <> 0 then name := IntToStr(plus) + ' ' + name; + if plus > 0 then name := '+' + name; + + Put(Equips, pos, name); +end; +} +function LPick(list: TStrings; goal: Integer): String; +var + i, best, b1: Integer; + s: String; +begin + Result := Pick(list); + for i := 1 to 5 do begin + best := StrToInt(Split(Result,1)); + s := Pick(list); + b1 := StrToInt(Split(s,1)); + if abs(goal-best) > abs(goal-b1) then + Result := s; + end; +end; + +procedure TForm1.WinEquip; +var + posn, qual, plus, count: Integer; + name, modifier: String; + stuff, better, worse: TStrings; +begin + posn := Random(Equips.Items.Count); + Equips.Tag := posn; // remember as the "best item" + if posn = 0 then begin + stuff := K.Weapons.Lines; + better := K.OffenseAttrib.Lines; + worse := K.OffenseBad.Lines; + end else begin + better := K.DefenseAttrib.Lines; + worse := K.DefenseBad.Lines; + if posn = 1 + then stuff := K.Shields.Lines + else stuff := K.Armors.Lines; + end; + name := LPick(stuff,GetI(Traits,'Level')); + qual := StrToInt(Split(name,1)); + name := Split(name,0); + plus := GetI(Traits,'Level') - qual; + if plus < 0 then better := worse; + count := 0; + while (count < 2) and (plus <> 0) do begin + modifier := Pick(better); + qual := StrToInt(Split(modifier, 1)); + modifier := Split(modifier, 0); + if Pos(modifier, name) > 0 then Break; // no repeats + if Abs(plus) < Abs(qual) then Break; // too much + name := modifier + ' ' + name; + Dec(plus, qual); + Inc(count); + end; + if plus <> 0 then name := IntToStr(plus) + ' ' + name; + if plus > 0 then name := '+' + name; + + Put(Equips, posn, name); +end; + +procedure TForm1.WinStat; +var + i,t: Integer; + function Square(x: Integer): Integer; begin Result := x * x; end; +begin + if Odds(1,2) + then i := Random(Stats.Items.Count) + else begin + // favor the best stat so it will tend to clump + t := 0; + for i := 0 to 5 do Inc(t,Square(GetI(Stats,i))); + t := Random(t); + i := -1; + while t >= 0 do begin + Inc(i); + Dec(t,Square(GetI(Stats,i))); + end; + end; + Add(Stats, Stats.Items[i].Caption, 1); +end; + +function TForm1.SpecialItem: String; +begin + Result := InterestingItem + ' of ' + + Pick(K.ItemOfs.Lines); +end; + +function TForm1.InterestingItem: String; +begin + Result := Pick(K.ItemAttrib.Lines) + ' ' + + Pick(K.Specials.Lines); +end; + +function TForm1.BoringItem: String; +begin + Result := Pick(K.BoringItems.Lines); +end; + +procedure TForm1.WinItem; +begin + Add(Inventory, SpecialItem, 1); +end; + +procedure TForm1.CompleteQuest; +var + lev, level, l, i, montag: Integer; + m: string; +begin + with QuestBar do begin + Position := 0; + Max := 50 + Random(100); + end; + with Quests do begin + if Items.Count > 0 then begin + Items[Items.Count-1].StateIndex := 1; + case Random(4) of + 0: WinSpell; + 1: WinEquip; + 2: WinStat; + 3: WinItem; + end; + end; + while Items.Count > 99 do Items.Delete(0); + { + lev := GetI(Traits,'Level'); + for i := lev downto 1 do + if Odds(1,3) then + Inc(lev,RandSign()); + if lev > MonsterMax then lev := MonsterMax - Random(2); + if lev < 1 then lev := 1; + } + with Items.Add do begin + case Random(5) of + 0: begin + level := GetI(Traits,'Level'); + for i := 1 to 4 do begin + montag := Random(K.Monsters.Lines.Count); + m := K.Monsters.Lines[montag]; + l := StrToInt(Split(m,1)); + if (i = 1) or (abs(l - level) < abs(lev - level)) then begin + lev := l; + fQuest.Caption := m; + fQuest.Tag := montag; + end; + end; + Caption := 'Exterminate ' + Definite(Split(fQuest.Caption,0),2); + end; + 1: begin + fQuest.Caption := InterestingItem; + Caption := 'Seek ' + Definite(fQuest.Caption,1); + fQuest.Caption := ''; + end; + 2: begin + fQuest.Caption := BoringItem; + Caption := 'Deliver this ' + fQuest.Caption; + fQuest.Caption := ''; + end; + 3: begin + fQuest.Caption := BoringItem; + Caption := 'Fetch me ' + Indefinite(fQuest.Caption,1); + fQuest.Caption := ''; + end; + 4: begin + level := GetI(Traits,'Level'); + for i := 1 to 2 do begin + montag := Random(K.Monsters.Lines.Count); + m := K.Monsters.Lines[montag]; + l := StrToInt(Split(m,1)); + if (i = 1) or (abs(l - level) < abs(lev - level)) then begin + lev := l; + fQuest.Caption := m; + end; + end; + Caption := 'Placate ' + Definite(Split(fQuest.Caption,0),2); + fQuest.Caption := ''; + end; + end; + StateIndex := 0; + MakeVisible(false); + end; + Width := Width - 1; // trigger a column resize + end; + SaveGame(false); +end; + +function Rome(var n: Integer; dn: Integer; var s: String; ds: String): Boolean; +begin + Result := (n >= dn); + if Result then begin + n := n - dn; + s := s + ds; + end; +end; + +function UnRome(var s: String; dn: Integer; var n: Integer; ds: String): Boolean; +begin + Result := (Copy(s,1,Length(ds)) = ds); + if Result then begin + s := Copy(s,Length(ds)+1,10000); + n := n + dn; + end; +end; + +function IntToRoman(n: Integer): String; +begin + while Rome(n, 1000, Result, 'M') do ; + Rome(n, 900, Result, 'CM'); + Rome(n, 500, Result, 'D'); + Rome(n, 400, Result, 'CD'); + while Rome(n, 100, Result, 'C') do ; + Rome(n, 90, Result, 'XC'); + Rome(n, 50, Result, 'L'); + Rome(n, 40, Result, 'XL'); + while Rome(n, 10, Result, 'X') do ; + Rome(n, 9, Result, 'IX'); + Rome(n, 5, Result, 'V'); + Rome(n, 4, Result, 'IV'); + while Rome(n, 1, Result, 'I') do ; +end; + +function RomanToInt(n: String): Integer; +begin + Result := 0; + while UnRome(n, 1000, Result, 'M') do ; + UnRome(n, 900, Result, 'CM'); + UnRome(n, 500, Result, 'D'); + UnRome(n, 400, Result, 'CD'); + while UnRome(n, 100, Result, 'C') do ; + UnRome(n, 90, Result, 'XC'); + UnRome(n, 50, Result, 'L'); + UnRome(n, 40, Result, 'XL'); + while UnRome(n, 10, Result, 'X') do ; + UnRome(n, 9, Result, 'IX'); + UnRome(n, 5, Result, 'V'); + UnRome(n, 4, Result, 'IV'); + while UnRome(n, 1, Result, 'I') do ; +end; + +procedure TForm1.CompleteAct; +begin + PlotBar.Position := 0; + with Plots do begin + Items[Items.Count-1].StateIndex := 1; + PlotBar.Max := 60 * 60 * (1 + 5 * Items.Count); // 1 hr + 5/act + PlotBar.Hint := 'Cutscene omitted'; + with Items.Add do begin + Caption := 'Act ' + IntToRoman(Items.Count-1); + MakeVisible(false); + StateIndex := 0; + Width := Width-1; + end; + end; + SaveGame(true); +end; + +procedure TForm1.Task(caption: String; msec: Integer); +begin + Kill.SimpleText := caption + '...'; + with TaskBar do begin + Position := 0; + Max := msec; + end; +end; + +procedure TForm1.Add(list: TListView; key: String; value: Integer); +begin + Put(list, key, value + GetI(list,key)); +end; + +procedure TForm1.AddR(list: TListView; key: String; value: Integer); +begin + Put(list, key, IntToRoman(value + RomanToInt(Get(list,key)))); +end; + +function TForm1.Get(list: TListView; key: String): String; +begin + Result := Get(list, IndexOf(list,key)); +end; + +function TForm1.Get(list: TListView; index: Integer): String; +begin + with list.Items.Item[index] do begin + if SubItems.Count < 1 + then Result := '' + else Result := SubItems[0]; + end; +end; + +function TForm1.GetI(list: TListView; key: String): Integer; +begin + Result := StrToIntDef(Get(list,key),0); +end; + +function TForm1.GetI(list: TListView; index: Integer): Integer; +begin + Result := StrToIntDef(Get(list,index),0); +end; + +function TForm1.Sum(list: TListView): Integer; +var + i: Integer; +begin + Result := 0; + for i := 0 to list.Items.Count - 1 do + Inc(Result, GetI(list,i)); +end; + +procedure PutLast(list: TListView; value: String); +begin + if list.Items.Count > 0 then + with list.Items.Item[list.Items.Count-1] do begin + if SubItems.Count < 1 + then SubItems.Add(value) + else SubItems[0] := value; + end; + list.Width := list.Width - 1; // trigger an autosize +end; + +procedure TForm1.LevelUp; +var + i: Integer; +begin + Add(Traits,'Level',1); + Add(Stats,'HP Max', GetI(Stats,'CON') div 3 + 1 + Random(4)); + Add(Stats,'MP Max', GetI(Stats,'INT') div 3 + 1 + Random(4)); + for i := 1 to 2 do WinStat; + WinSpell; + with ExpBar do begin + Position := 0; + Max := LevelUpTime(GetI(Traits,'Level')); + end; + SaveGame(true); +end; + +procedure TForm1.Timer1Timer(Sender: TObject); +var + gain: Boolean; +begin + gain := Pos('kill|',fTask.Caption) = 1; + with TaskBar do begin + if Position >= Max then begin + if Kill.SimpleText = 'Loading....' then Max := 0; + + if gain then with ExpBar do if Position >= Max + then LevelUp + else Position := Position + TaskBar.Max div 1000; + with ExpBar do Hint := IntToStr(Max-Position) + ' XP needed for next level'; + + if gain then if Plots.Items.Count > 1 then with QuestBar do if Position >= Max then begin + CompleteQuest; + end else if Quests.Items.Count > 0 then begin + Position := Position + TaskBar.Max div 1000; + Hint := IntToStr(100 * Position div Max) + '% complete'; + end; + + with PlotBar do if Position >= Max + then CompleteAct + else Position := Position + TaskBar.Max div 1000; + + //Time.Caption := FormatDateTime('h:mm:ss',PlotBar.Position / (24.0 * 60 * 60)); + PlotBar.Hint := FormatDateTime('h:mm:ss" remaining"',(PlotBar.Max-PlotBar.Position) / (24.0 * 60 * 60)); + + Dequeue(); + end else with TaskBar do + Position := Position + Integer(Timer1.Interval); + end; +end; + +procedure TForm1.FormCreate(Sender: TObject); +begin + QuestBar.Position := 0; + PlotBar.Position := 0; + TaskBar.Position := 0; + ExpBar.Position := 0; + Encumbar.Position := 0; + { + for i := 1 to MonsterMax do + fMonsters[i] := TStringList.Create; + M(1,'Wasp','Stinger'); + M(1,'Rat','Tail'); + M(1,'Bunny','Ear'); + M(1,'Moth','Dust'); + M(1,'Beagle','Collar'); + M(1,'Midge','Corpse'); + M(2,'Ostrich','Beak'); + M(2,'Billy Goat','Beard'); + M(2,'Bat','Wing'); + M(2,'Koala','Heart'); + M(3,'Wolf','Paw'); + M(3,'Gnome','Skull'); + M(3,'Kobold','Penis'); + M(3,'Whippet','Collar'); + M(4,'Orc','Shoe'); + M(5,'Uruk','Boot'); + M(6,'Tiger','Stripe'); + M(7,'Lich','Mascara'); + M(8,'Mummy','Chapeau'); + M(9,'Vampire','Pancreas'); + M(10,'Slime','Slime'); + M(11,'Giant','Jumpsuit'); + M(12,'Bugbear','Fang'); + M(13,'Owlbear','Tuft'); + M(14,'Basilisk','Gallstone'); + M(15,'Cockatrice','Cock'); + M(16,'Dragon','Scale'); + } +end; + +procedure TForm1.SpeedButton1Click(Sender: TObject); +begin + TaskBar.Position := TaskBar.Max; +end; + +function TForm1.RollCharacter: Boolean; +var + f: Integer; +begin + Result := true; + repeat + if mrCancel = Form2.ShowModal then begin + Result := false; + Exit; + end; + if FileExists(Form2.Name.Text + '.pq') and + (mrNo = MessageDlg('A saved game with that name already exists. Do you want to overwrite it?', mtWarning, [mbYes,mbNo], 0)) then begin + // go around again + end else begin + f := FileCreate(Form2.Name.Text + '.pq'); + if f = -1 then begin + ShowMessage('The thought police don''t like that name. Choose a name without \\ / : * ? " < > or | in it.'); + end else begin + FileClose(f); + Break; + end; + end; + until false; + + with Form2 do begin + Put(Traits,'Name',Name.Text); + Put(Traits,'Race',Race.Items[Race.ItemIndex]); + Put(Traits,'Class',Klass.Items[Klass.ItemIndex]); + Put(Traits,'Level',1); + Put(Stats,'STR',STR.Tag); + Put(Stats,'CON',CON.Tag); + Put(Stats,'DEX',DEX.Tag); + Put(Stats,'INT',INT.Tag); + Put(Stats,'WIS',WIS.Tag); + Put(Stats,'CHA',CHA.Tag); + Put(Stats,'HP Max',Random(8) + CON.Tag div 6); + Put(Stats,'MP Max',Random(8) + INT.Tag div 6); + Put(Equips,'Weapon','Sharp Stick'); + Put(Inventory,'Gold',0); + InventoryLabelAlsoGameStyle.Tag := GameStyle.Position; + GoButtonClick(Form2); + end; +end; + +procedure TForm1.FormShow(Sender: TObject); +begin + if ParamCount >= 1 then begin + LoadGame(ParamStr(1)); + Form2.Server.OnSuccess := nil; + Form2.Server.OnFailure := nil; + end else + while 1=1 do begin + case Form3.ShowModal of + mrOk: begin + if RollCharacter then + Break; + end; + mrRetry: begin + // load + if Form3.OpenDialog1.Execute then begin + LoadGame(Form3.OpenDialog1.Filename); + Form2.Server.OnSuccess := nil; + Form2.Server.OnFailure := nil; + break; + end; + end; + mrCancel: begin + Close; + Break; + end; + end; + end; +end; + +procedure TForm1.Button1Click(Sender: TObject); +begin + LevelUp; +end; + +procedure TForm1.CashInClick(Sender: TObject); +begin + WinEquip; + WinItem; + WinSpell; + WinStat; + Add(Inventory,'Gold',Random(100)); +end; + +procedure TForm1.FinishQuestClick(Sender: TObject); +begin + QuestBar.Position := QuestBar.Max; + TaskBar.Position := TaskBar.Max; +end; + +procedure TForm1.CheatPlotClick(Sender: TObject); +begin + PlotBar.Position := PlotBar.Max; + TaskBar.Position := TaskBar.Max; +end; + +{ +function TForm1.SaveGame(report: Boolean): Boolean; +var + f: TFileStream; + i: Integer; + name: String; +begin + name := Get(Traits,'Name') + '.pq'; + Result := true; + try + f := TFileStream.Create(name, fmCreate); + for i := 0 to ComponentCount-1 do + f.WriteComponent(Components[i]); + f.Free; + except + on EfCreateError do Result := false; + end; + if report then Brag; +end; + +procedure TForm1.LoadGame(name: String); +var + f: TFileStream; + i: Integer; +begin + f := TFileStream.Create(name, fmOpenRead); + for i := 0 to ComponentCount-1 do begin + f.ReadComponent(Components[i]); + end; + f.Free; + Timer1.Enabled := True; + TriggerAutosizes; +end; +} + +function TForm1.SaveGame(report: Boolean): Boolean; +var + f: TFileStream; + m: TMemoryStream; + i: Integer; + name: String; +begin + name := Get(Traits,'Name') + '.pq'; + Result := true; + try + f := TFileStream.Create(name, fmCreate); + except + on EfCreateError do begin + Result := false; + Exit; + end; + end; + + m := TMemoryStream.Create; + for i := 0 to ComponentCount-1 do + m.WriteComponent(Components[i]); + + m.Seek(0, soFromBeginning); + ZCompressStream(m, f); + + m.Free; + f.Free; + if report then Brag; +end; + +procedure TForm1.LoadGame(name: String); +var + f: TStream; + m: TStream; + i: Integer; +begin + m := TMemoryStream.Create; + f := TFileStream.Create(name, fmOpenRead); + try + ZDecompressStream(f, m); + f.Free; + except + on EZCompressionError do begin + // backwards-compatibility + m.Free; + m := f; + f := nil; + end; + end; + m.Seek(0, soFromBeginning); + for i := 0 to ComponentCount-1 do + m.ReadComponent(Components[i]); + m.Free; + Timer1.Enabled := True; + TriggerAutosizes; +end; + +procedure TForm1.TriggerAutosizes; +begin + Plots.Width := 100; + Quests.Width := 100; + Inventory.Width := 100; + Equips.Width := 100; + Spells.Width := 100; + Traits.Width := 100; + Stats.Width := 100; +end; + +procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); +begin + if Timer1.Enabled then begin + Timer1.Enabled := false; + if SaveGame(false) then + ShowMessage('Game saved as ' + Get(Traits,'Name') + '.pq'); + end; +end; + +procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + if (FindWindow('TAppBuilder', nil) > 0) and (ssCtrl in Shift) and (ssShift in Shift) and (Key = ord('C')) then begin + Cheats.Visible := not Cheats.Visible; + Traits.Hint := ''; // sorry cheater -- you've been taken offline. + end; + if (ssCtrl in Shift) and (Key = ord('B')) then begin + Brag; + ShellExecute(GetDesktopWindow(), 'open', PChar('http://www.progressquest.com/hi.php?name=' + UrlEncode(Get(Traits,'Name'))), nil, '', SW_SHOW); + end; + if (ssCtrl in Shift) and (Key = ord('M')) then begin + Stats.Hint := InputBox('Progress Quest', 'Declare your motto!', Stats.Hint); + Brag; + ShellExecute(GetDesktopWindow(), 'open', PChar('http://www.progressquest.com/hi.php?name=' + UrlEncode(Get(Traits,'Name'))), nil, '', SW_SHOW); + end; +end; + +procedure TForm1.Brag; +var + url: string; + best, i: Integer; +const + flat = 1; +begin + if Traits.Hint = '' then Exit; // not a online game! + with Traits do for i := 0 to Items.Count-1 do + url := url + '&' + LowerCase(Items[i].Caption) + '=' + UrlEncode(Items[i].Subitems[0]); + url := url + '&item=' + UrlEncode(Get(Equips,Equips.Tag)); + if Equips.Tag > 1 then url := url + '+' + Equips.Items[Equips.Tag].Caption; + best := 0; + if Spells.Items.Count > 0 then with Spells do begin + for i := 1 to Items.Count-1 do + if (i+flat) * RomanToInt(Get(Spells,i)) > + (best+flat) * RomanToInt(Get(Spells,best)) then + best := i; + url := url + '&spell=' + UrlEncode(Items[best].Caption + ' ' + Get(Spells,best)); + end; + best := 0; + for i := 1 to 5 do + if GetI(Stats,i) > GetI(Stats,best) then best := i; + url := url + '&stat=' + Stats.Items[best].Caption + '+' + Get(Stats,best); + url := url + '&plot=' + UrlEncode(Plots.Items[Plots.Items.Count-1].Caption); + url := url + '&motto=' + UrlEncode(Stats.Hint); + url := url + '&passkey=' + IntToStr((not GetI(Traits,'Level') * 9831) xor Traits.Tag); + url := url + RevString; + Form2.Server.Abort; + url := 'http://www.progressquest.com/hi.php?cmd=brag' + url; + try + //Form2.Server.OnSuccess := Form2.ReportSuccess; + Form2.Server.Get(url); + except + on ESockError do begin + // 'ats okay. + Form2.Server.Abort; + end; + end; +end; + +initialization + RegisterClasses([TForm1]); +end. + diff --git a/NewGuy.dcu b/NewGuy.dcu new file mode 100644 index 0000000..6497fb4 Binary files /dev/null and b/NewGuy.dcu differ diff --git a/NewGuy.ddp b/NewGuy.ddp new file mode 100644 index 0000000..cdc0ee8 Binary files /dev/null and b/NewGuy.ddp differ diff --git a/NewGuy.dfm b/NewGuy.dfm new file mode 100644 index 0000000..cbd4d5c --- /dev/null +++ b/NewGuy.dfm @@ -0,0 +1,394 @@ +object Form2: TForm2 + Left = 264 + Top = 169 + BorderIcons = [] + BorderStyle = bsDialog + Caption = 'Progress Quest - New Character' + ClientHeight = 457 + ClientWidth = 509 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Icon.Data = { + 0000010001002020000000000000A80800001600000028000000200000004000 + 0000010008000000000080040000000000000000000000000000000000000000 + 0000000080000080000000808000800000008000800080800000C0C0C000C0DC + C000F0CAA60004040400080808000C0C0C0011111100161616001C1C1C002222 + 220029292900555555004D4D4D004242420039393900807CFF005050FF009300 + D600FFECCC00C6D6EF00D6E7E70090A9AD000000330000006600000099000000 + CC00003300000033330000336600003399000033CC000033FF00006600000066 + 330000666600006699000066CC000066FF000099000000993300009966000099 + 99000099CC000099FF0000CC000000CC330000CC660000CC990000CCCC0000CC + FF0000FF660000FF990000FFCC00330000003300330033006600330099003300 + CC003300FF00333300003333330033336600333399003333CC003333FF003366 + 00003366330033666600336699003366CC003366FF0033990000339933003399 + 6600339999003399CC003399FF0033CC000033CC330033CC660033CC990033CC + CC0033CCFF0033FF330033FF660033FF990033FFCC0033FFFF00660000006600 + 330066006600660099006600CC006600FF006633000066333300663366006633 + 99006633CC006633FF00666600006666330066666600666699006666CC006699 + 00006699330066996600669999006699CC006699FF0066CC000066CC330066CC + 990066CCCC0066CCFF0066FF000066FF330066FF990066FFCC00CC00FF00FF00 + CC009999000099339900990099009900CC009900000099333300990066009933 + CC009900FF00996600009966330099336600996699009966CC009933FF009999 + 330099996600999999009999CC009999FF0099CC000099CC330066CC660099CC + 990099CCCC0099CCFF0099FF000099FF330099CC660099FF990099FFCC0099FF + FF00CC00000099003300CC006600CC009900CC00CC0099330000CC333300CC33 + 6600CC339900CC33CC00CC33FF00CC660000CC66330099666600CC669900CC66 + CC009966FF00CC990000CC993300CC996600CC999900CC99CC00CC99FF00CCCC + 0000CCCC3300CCCC6600CCCC9900CCCCCC00CCCCFF00CCFF0000CCFF330099FF + 6600CCFF9900CCFFCC00CCFFFF00CC003300FF006600FF009900CC330000FF33 + 3300FF336600FF339900FF33CC00FF33FF00FF660000FF663300CC666600FF66 + 9900FF66CC00CC66FF00FF990000FF993300FF996600FF999900FF99CC00FF99 + FF00FFCC0000FFCC3300FFCC6600FFCC9900FFCCCC00FFCCFF00FFFF3300CCFF + 6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF + 66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7 + D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080 + 80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF005852 + 5151515151515258585858585858585858585858585858585852515151515852 + 51514A4A4A515152585858585858585858585858585858585251514B4A4B5852 + 514B4A4A4A4B51515258585858585858585858585858585251514B4A4A4A5852 + 150F4A4A4A4A4B5151515152525251525252525252525151514A0F154A4B580B + 0E0E0B4A4A4A4A4A5151515151515151515151515151514B4B0B0E0E0B512311 + 15220E514A4A4A4A4A4A4A4B4A4A4A4A4A4A4A4A4A4A4A4A4A0F22143D234313 + 22431151514A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A11432213435822 + 23296710294B4A4A44442244154422441544224444444A221012292322585858 + 58514443151D4B4A442215221522152215221522154B0E151544515252585858 + 5879294A43140D4A22150D0E2243100E1D0D2215220D14434A03525258585858 + 585852514A224A430E0E1443220D111543140E0E4344224A4A51515258585858 + 585858514B1514220E2243150D444444444322222214154B4B4B515258585858 + 585858585174151D4A434A4A15104422234A434A1D15742A4A4B515258585858 + 585858585222444B457422224B44224B222274454B4422524A4B515258585858 + 58585858510A4B4C3F4C44EA4A22224A6D444C3F4C4B0A4A4A51515258585858 + 585858580D15294B4523ECC8C44A4AE946EC23454B29150D4A51515858585858 + 58585858444A4A234AAEC8FCFCA7E9F9F946AE44234A4A435151525858585858 + 58585858232244224AEFA7FCFC62F9F9F946EF4A224422235151525858585858 + 585858584B434A110C4A8DA862F9F9F9698D4A0C114A43295151525858585858 + 5858585852222210514A8D46F9F9F962A78D4A51104322524B51525858585858 + 58585858524B0C034AEB46F9F9F962FCFCA7F84A030C4B4A4A51515258585858 + 5858585251514B4AED46F9F9F9E3A8FCFCFCA7ED4A4B4A4A4A4B515152585858 + 58585851514B4AED46F9F9F9E3F7F7E6FCFCFCA7ED4A4A4A4A4A4B5152585858 + 585852514B4AEB46F9F9F9E3ED525892E6FCFCFCA7EB4A4A4A4A4A4B51525858 + 585852514A6D46F9F9F9E3ED5858585892E6FCFCFCA76D4A4A4A4A4A51515858 + 5858514B14B5F047F9E3F7585858585858B5E6FCC8DDB5144A4A4A4A51515858 + 585852AE09F3F3BCE3B55858585858585858B5D0DDF3F309AE4A4B4B51515858 + 5858BCF4F5F4F4F4075858585858585858585807F4F4F4F5DEBC515151525858 + 58991BF5F5F2DDB6585858585858585858585858B6DDF3F5F51B995152585858 + 5892B51909B592585858585858585858585858585892B509DDB5925858585858 + 58720909ECEB58585858585858585858585858585858F8EC0909725858585858 + 58F78DAEED5858585858585858585858585858585858581CAE8D925858580000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000} + OldCreateOrder = False + Position = poScreenCenter + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Race: TRadioGroup + Left = 8 + Top = 52 + Width = 185 + Height = 401 + Caption = 'Race' + Items.Strings = ( + 'Half Orc' + 'Half Man' + 'Half Halfling' + 'Double Hobbit' + 'Low Elf' + 'Dung Elf' + 'Talking Pony' + 'Greater Gnome' + 'Gyrognome' + 'Lesser Dwarf' + 'Crested Dwarf' + 'Eel Man' + 'Panda Man' + 'Trans-Kobold' + 'Enchanted Motorcycle' + 'Will o'#39' the Wisp' + 'Battle-Finch' + 'Double Wookiee' + 'Skraeling' + 'Demicanadian') + TabOrder = 0 + end + object Klass: TRadioGroup + Left = 200 + Top = 52 + Width = 185 + Height = 345 + Caption = 'Class' + Items.Strings = ( + 'Ur-Paladin' + 'Voodoo Princess' + 'Robot Monk' + 'Mu-Fu Monk' + 'Mage Illusioner' + 'Shiv-Knight' + 'Inner Mason' + 'Fighter/Organist' + 'Puma Burgular' + 'Runeloremaster' + 'Tongueblade' + 'Hunter Strangler' + 'Battle-Felon' + 'Tickle-Mimic' + 'Slow Poisoner' + 'Bastard Lunatic' + 'Lowling') + TabOrder = 1 + end + object GroupBox1: TGroupBox + Left = 392 + Top = 52 + Width = 109 + Height = 345 + Caption = 'Stats' + TabOrder = 2 + object Label3: TLabel + Left = 22 + Top = 60 + Width = 23 + Height = 13 + Caption = 'CON' + end + object Label7: TLabel + Left = 22 + Top = 156 + Width = 22 + Height = 13 + Caption = 'CHA' + end + object Label6: TLabel + Left = 22 + Top = 132 + Width = 21 + Height = 13 + Caption = 'WIS' + end + object Label5: TLabel + Left = 22 + Top = 108 + Width = 18 + Height = 13 + Caption = 'INT' + end + object Label4: TLabel + Left = 22 + Top = 84 + Width = 22 + Height = 13 + Caption = 'DEX' + end + object Label2: TLabel + Left = 22 + Top = 36 + Width = 22 + Height = 13 + Caption = 'STR' + end + object Label8: TLabel + Left = 22 + Top = 204 + Width = 24 + Height = 13 + Caption = 'Total' + end + object CHA: TPanel + Left = 52 + Top = 152 + Width = 37 + Height = 21 + BevelOuter = bvLowered + Caption = '18' + TabOrder = 0 + end + object WIS: TPanel + Left = 52 + Top = 128 + Width = 37 + Height = 21 + BevelOuter = bvLowered + Caption = '18' + TabOrder = 1 + end + object INT: TPanel + Left = 52 + Top = 104 + Width = 37 + Height = 21 + BevelOuter = bvLowered + Caption = '18' + TabOrder = 2 + end + object DEX: TPanel + Left = 52 + Top = 80 + Width = 37 + Height = 21 + BevelOuter = bvLowered + Caption = '18' + TabOrder = 3 + end + object CON: TPanel + Left = 52 + Top = 56 + Width = 37 + Height = 21 + BevelOuter = bvLowered + Caption = '18' + TabOrder = 4 + end + object STR: TPanel + Left = 52 + Top = 32 + Width = 37 + Height = 21 + BevelOuter = bvLowered + Caption = '18' + TabOrder = 5 + end + object Reroll: TButton + Left = 18 + Top = 264 + Width = 75 + Height = 25 + Caption = 'Roll' + TabOrder = 6 + OnClick = RerollClick + end + object Total: TPanel + Left = 52 + Top = 200 + Width = 37 + Height = 21 + BevelOuter = bvLowered + Caption = '18' + Color = clWhite + TabOrder = 7 + end + object Unroll: TButton + Left = 18 + Top = 296 + Width = 75 + Height = 25 + Caption = 'Unroll' + Enabled = False + TabOrder = 8 + OnClick = UnrollClick + end + end + object Sold: TButton + Left = 330 + Top = 416 + Width = 75 + Height = 25 + Caption = 'Sold!' + Default = True + TabOrder = 3 + OnClick = SoldClick + end + object GroupBox2: TGroupBox + Left = 424 + Top = 4 + Width = 185 + Height = 77 + Caption = 'Game Style' + TabOrder = 4 + Visible = False + object Label9: TLabel + Left = 20 + Top = 56 + Width = 30 + Height = 13 + Caption = 'Action' + end + object Label10: TLabel + Left = 120 + Top = 56 + Width = 39 + Height = 13 + Caption = 'Strategy' + end + object GameStyle: TTrackBar + Left = 24 + Top = 24 + Width = 126 + Height = 33 + Max = 5 + Min = 1 + Orientation = trHorizontal + Frequency = 1 + Position = 3 + SelEnd = 0 + SelStart = 0 + TabOrder = 0 + TickMarks = tmBottomRight + TickStyle = tsAuto + end + end + object Name: TLabeledEdit + Left = 8 + Top = 24 + Width = 185 + Height = 21 + EditLabel.Width = 28 + EditLabel.Height = 13 + EditLabel.Caption = 'Name' + LabelPosition = lpAbove + LabelSpacing = 3 + TabOrder = 5 + Text = 'Grumdrig' + end + object OldRolls: TListBox + Left = 396 + Top = 232 + Width = 21 + Height = 13 + ItemHeight = 13 + TabOrder = 6 + Visible = False + end + object Button2: TButton + Left = 414 + Top = 416 + Width = 75 + Height = 25 + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 7 + end + object Online: TCheckBox + Left = 204 + Top = 24 + Width = 97 + Height = 17 + Caption = 'Play online' + Checked = True + State = cbChecked + TabOrder = 8 + end + object Server: TNMHTTP + Port = 0 + ReportLevel = 0 + Body = 'Default.htm' + Header = 'Head.txt' + HeaderInfo.Cookie = 'yumyum' + HeaderInfo.Password = 'chickens' + InputFileMode = False + OutputFileMode = False + OnSuccess = ServerSuccess + ProxyPort = 0 + Left = 332 + Top = 312 + end + object PoorCodeDesign: TNMURL + Left = 336 + Top = 272 + end +end diff --git a/NewGuy.pas b/NewGuy.pas new file mode 100644 index 0000000..8a9a5c4 --- /dev/null +++ b/NewGuy.pas @@ -0,0 +1,171 @@ +unit NewGuy; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, ComCtrls, Psock, NMHttp, NMURL; + +type + TForm2 = class(TForm) + Race: TRadioGroup; + Klass: TRadioGroup; + Label2: TLabel; + STR: TPanel; + Label3: TLabel; + CON: TPanel; + Label4: TLabel; + DEX: TPanel; + Label5: TLabel; + INT: TPanel; + Label6: TLabel; + WIS: TPanel; + Label7: TLabel; + CHA: TPanel; + Reroll: TButton; + GroupBox1: TGroupBox; + Label8: TLabel; + Total: TPanel; + Sold: TButton; + Unroll: TButton; + GroupBox2: TGroupBox; + GameStyle: TTrackBar; + Label9: TLabel; + Label10: TLabel; + Name: TLabeledEdit; + OldRolls: TListBox; + Button2: TButton; + Server: TNMHTTP; + Online: TCheckBox; + PoorCodeDesign: TNMURL; + procedure RerollClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure UnrollClick(Sender: TObject); + procedure ServerSuccess(Cmd: CmdType); + procedure SoldClick(Sender: TObject); + private + procedure RollEm; + public + procedure ReportSuccess(Cmd: CmdType); + end; + +var + Form2: TForm2; + +function UrlEncode(s: string): string; + +implementation + +uses Main; + +{$R *.dfm} + +function UrlEncode(s: string): string; +begin + Form2.PoorCodeDesign.InputString := s; + Result := Form2.PoorCodeDesign.Encode; +end; + +procedure Roll(stat: TPanel); +begin + stat.Tag := 3 + Random(6) + Random(6) + Random(6); + stat.Caption := IntToStr(stat.Tag); +end; + +function Choose(n, k: Integer): Real; +var + d, i: Longint; +begin + Result := n; + d := 1; + for i := 2 to k do begin + Result := Result * (1+n-i); + d := d * i; + end; + Result := Result / d; +end; + +procedure TForm2.RollEm; +begin + ReRoll.Tag := RandSeed; + Roll(STR); + Roll(CON); + Roll(DEX); + Roll(INT); + Roll(WIS); + Roll(CHA); + Total.tag := STR.Tag + Con.Tag + DEX.Tag + Int.Tag + Wis.Tag + CHA.Tag; + Total.Caption := IntToStr(Total.Tag); + if Total.Tag >= (63+18) then Total.Color := clRed + else if Total.Tag > (4 * 18) then Total.Color := clYellow + else if Total.Tag <= (63-18) then Total.Color := clGray + else if Total.Tag < (3 * 18) then Total.Color := clSilver + else Total.Color := clWhite; +end; + +procedure TForm2.RerollClick(Sender: TObject); +begin + OldRolls.Items.Insert(0, IntToStr(ReRoll.Tag)); + Unroll.Enabled := true; + RollEm; +end; + +procedure TForm2.FormShow(Sender: TObject); +begin + Randomize; + RollEm; + with Race do + ItemIndex := Random(Items.Count); + with Klass do + ItemIndex := Random(Items.Count); + Name.SetFocus; +end; + +procedure TForm2.UnrollClick(Sender: TObject); +begin + RandSeed := StrToInt(OldRolls.Items[0]); + OldRolls.Items.Delete(0); + Unroll.Enabled := OldRolls.Items.Count > 0; + RollEm; +end; + +procedure TForm2.ServerSuccess(Cmd: CmdType); +begin + if (LowerCase(Split(Server.Body,0)) = 'ok') then begin + Form1.Traits.Hint := Split(Server.Body,1); + Form1.Traits.Tag := StrToInt(Form1.Traits.Hint); + Server.OnSuccess := nil; + Server.OnFailure := nil; + ModalResult := mrOk; + end else begin + ShowMessage(Server.Body); + end; +end; + +procedure TForm2.ReportSuccess(Cmd: CmdType); +begin + ShowMessage(Server.Body); +end; + +procedure TForm2.SoldClick(Sender: TObject); +begin + if not Online.Checked + then ModalResult := mrOk + else begin + try + Screen.Cursor := crHourglass; + try + Server.Get('http://www.progressquest.com/hi.php?cmd=create&name=' + UrlEncode(Name.Text) + RevString); + except + on ESockError do begin + ShowMessage('Error connecting to server'); + Server.Abort; + end; + end; + finally + Screen.Cursor := crDefault; + end; + end; +end; + +end. diff --git a/PQ.ico b/PQ.ico new file mode 100644 index 0000000..5f84cb8 Binary files /dev/null and b/PQ.ico differ diff --git a/ask.gif b/ask.gif new file mode 100644 index 0000000..b6bef22 Binary files /dev/null and b/ask.gif differ diff --git a/chaff/.pq6 b/chaff/.pq6 new file mode 100755 index 0000000..ef0a893 Binary files /dev/null and b/chaff/.pq6 differ diff --git a/chaff/Bleargh.pq6 b/chaff/Bleargh.pq6 new file mode 100644 index 0000000..57fedf1 Binary files /dev/null and b/chaff/Bleargh.pq6 differ diff --git a/chaff/Config.dcu b/chaff/Config.dcu new file mode 100644 index 0000000..ba2023f Binary files /dev/null and b/chaff/Config.dcu differ diff --git a/chaff/Config.ddp b/chaff/Config.ddp new file mode 100644 index 0000000..cdc0ee8 Binary files /dev/null and b/chaff/Config.ddp differ diff --git a/chaff/Copy of Main.pas b/chaff/Copy of Main.pas new file mode 100644 index 0000000..186af4c --- /dev/null +++ b/chaff/Copy of Main.pas @@ -0,0 +1,1031 @@ +unit Main; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, ComCtrls, StdCtrls, ExtCtrls, Buttons, ImgList, Menus; + +type + TForm1 = class(TForm) + Panel1: TPanel; + Label1: TLabel; + Traits: TListView; + Equips: TListView; + Panel3: TPanel; + Label3: TLabel; + QuestBar: TProgressBar; + Stats: TListView; + Label2: TLabel; + PlotBar: TProgressBar; + Plots: TListView; + Quests: TListView; + Panel2: TPanel; + Label4: TLabel; + Spells: TListView; + InventoryLabelAlsoGameStyle: TLabel; + Inventory: TListView; + Panel4: TPanel; + Kill: TStatusBar; + Label6: TLabel; + ExpBar: TProgressBar; + TaskBar: TProgressBar; + Timer1: TTimer; + EncumBar: TProgressBar; + Label7: TLabel; + ImageList1: TImageList; + Label8: TLabel; + Cheats: TPanel; + CashIn: TButton; + Button1: TButton; + FinishQuest: TButton; + Button3: TButton; + CheatPlot: TButton; + vars: TPanel; + fTask: TLabel; + fQuest: TLabel; + fQueue: TListBox; + procedure GoButtonClick(Sender: TObject); + procedure Timer1Timer(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure SpeedButton1Click(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure Button1Click(Sender: TObject); + procedure CashInClick(Sender: TObject); + procedure FinishQuestClick(Sender: TObject); + procedure CheatPlotClick(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure FormKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); + private + procedure Task(caption: String; msec: Integer); + procedure Dequeue; + procedure Q(s: string); + function TaskDone: Boolean; + procedure CompleteQuest; + procedure M(level: Integer; name, spoor: String); + procedure CompleteAct; + function RollCharacter: Boolean; + procedure WinEquip; + procedure WinSpell; + procedure WinStat; + procedure WinItem; + function SpecialItem: String; + procedure LevelUp; + function BoringItem: String; + function InterestingItem: String; + procedure IO(name: String; save: Boolean); + function MonsterTask(var level: Integer): String; + function EquipPrice: Integer; + public + procedure LoadGame(name: String); + function SaveGame: Boolean; + procedure Put(list: TListView; key: String; value: String); overload; + procedure Put(list: TListView; pos: Integer; value: String); overload; + procedure Put(list: TListView; key: String; value: Integer); overload; + procedure Add(list: TListView; key: String; value: Integer); overload; + procedure AddR(list: TListView; key: String; value: Integer); overload; + function Get(list: TListView; key: String): String; overload; + function Get(list: TListView; index: Integer): String; overload; + function GetI(list: TListView; key: String): Integer; overload; + function GetI(list: TListView; index: Integer): Integer; overload; + function Sum(list: TListView): Integer; + end; + +var + Form1: TForm1; + +implementation + +uses NewGuy, Math, Config, Unit3; + +{$R *.dfm} + +{ +const + MonsterMax = 16; + +var + fMonsters: array[1..MonsterMax] of TStrings; +} + //fTask: String; + //fQuest: String; + //fQueue: TStrings; + +procedure TForm1.Q(s: string); +begin + //if fQueue = nil then fQueue := TStringList.Create; + fQueue.Items.Add(s); + Dequeue; +end; + +function TForm1.TaskDone: Boolean; +begin + with TaskBar do + Result := Position >= Max; +end; + +function Odds(chance, outof: Integer): Boolean; +begin + Result := Random(outof) < chance; +end; + +function RandSign(): Integer; +begin + Result := Random(2) * 2 - 1; +end; + +function Pick(s: TStrings): String; +begin + Result := s[Random(s.Count)]; +end; + +function RandomLow(below: Integer): Integer; +begin + Result := Min(Random(below),Random(below)); +end; + +function Ends(s,e: String): Boolean; +begin + Result := Copy(s,1+Length(s)-Length(e),Length(e)) = e; +end; + +function Plural(s: String): String; +begin + if Ends(s,'y') + then Result := Copy(s,1,Length(s)-1) + 'ies' + else if Ends(s,'ch') or Ends(s,'x') or Ends(s,'s') + then Result := s + 'es' + else if Ends(s,'f') + then Result := Copy(s,1,Length(s)-1) + 'ves' + else Result := s + 's'; +end; + +function Split(s: String; field: Integer): String; +var + p: Integer; +begin + while field > 0 do begin + p := Pos('|',s); + s := Copy(s,p+1,10000); + Dec(field); + end; + if Pos('|',s) > 0 + then Result := Copy(s,1,Pos('|',s)-1) + else Result := s; +end; + +function Indefinite(s: String; qty: Integer): String; +begin + if qty = 1 then begin + if Pos(s[1], 'AEIOUÜaeiouü') > 0 + then Result := 'an ' + s + else Result := 'a ' + s; + end else begin + Result := IntToStr(qty) + ' ' + Plural(s); + end; +end; + +function Definite(s: String; qty: Integer): String; +begin + if qty > 1 then + s := {IntToStr(qty) + ' ' +} Plural(s); + Result := 'the ' + s; +end; + +{ +function TForm1.MonsterTask(var level: Integer): String; +var + qty, lev, i: Integer; +begin + lev := level; + for i := 1 to level do begin + if Odds(2,3) then + Inc(lev, RandSign()); + if Odds(2,5) then + Inc(level, RandSign()); + end; + if lev < 1 then lev := 1; + while lev > MonsterMax do Dec(lev, RandomLow(MonsterMax)); + if level < 1 then level := 1; + + fTask.Caption := Pick(fMonsters[lev]); + Result := Split(fTask.Caption,0); + fTask.Caption := 'kill|' + fTask.Caption; + + qty := 1; + case level-lev of + -3: Result := 'Fœtal ' + Result; + -2: Result := 'Very Sick ' + Result; + -1: Result := 'Lesser ' + Result; + 0: ; // that's fine + 1: Result := 'Greater ' + Result; + 2: Result := 'War ' + Result; + 3: Result := 'Über ' + Result; + else + if lev = 2 * level + then Result := 'Half ' + Result + else if lev * 2 = level + then Result := 'Double ' + Result + else begin + if lev > level then begin + lev := lev div 2; + Result := 'Leper ' + Result; + end; + qty := (level + Random(lev)) div lev; + if qty < 1 then qty := 1; + level := lev * qty; + end; + end; + + Result := Indefinite(Result, qty); +end; + } + +{ health } +function Sick(m: Integer; s: String): String; +begin + Result := IntToStr(m) + s; // in case I screw up + case m of + -5,5: Result := 'dead ' + s; + -4,4: Result := 'comatose ' + s; + -3,3: Result := 'crippled ' + s; + -2,2: Result := 'sick ' + s; + -1,1: Result := 'undernourished ' + s; + end; +end; + +function Young(m: Integer; s: String): String; +begin + Result := IntToStr(m) + s; // in case I screw up + case -m of + -5,5: Result := 'fœtal ' + s; + -4,4: Result := 'baby ' + s; + -3,3: Result := 'preadolescent ' + s; + -2,2: Result := 'teenage ' + s; + -1,1: Result := 'underage ' + s; + end; +end; + +function Big(m: Integer; s: String): String; +begin + Result := s; // in case I screw up + case m of + 1,-1: Result := 'greater ' + s; + 2,-2: Result := 'massive ' + s; + 3,-3: Result := 'enormous ' + s; + 4,-4: Result := 'giant ' + s; + 5,-5: Result := 'titanic ' + s; + end; +end; + +function Special(m: Integer; s: String): String; +begin + Result := s; // in case I screw up + case -m of + 1,-1: + if Pos(' ',Result) > 0 + then Result := 'veteran ' + s + else Result := 'Battle-' + s; + 2,-2: Result := 'cursed ' + s; + 3,-3: + if Pos(' ',Result) > 0 + then Result := 'warrior ' + s + else Result := 'Were-' + s; + 4,-4: Result := 'undead ' + s; + 5,-5: Result := 'demon ' + s; + end; +end; + +function TForm1.MonsterTask(var level: Integer): String; +var + qty, lev, i: Integer; + monster, m1: string; +begin + for i := level downto 1 do begin + if Odds(2,5) then + Inc(level, RandSign()); + end; + if level < 1 then level := 1; + // level = level of puissance of opponent(s) we'll return + + // pick the monster out of so many random ones closest to the level we want + monster := Pick(K.Monsters.Lines); + lev := StrToInt(Split(monster,1)); + i := 3; + while (i > 0) or (lev - level > 4) do begin + m1 := Pick(K.Monsters.Lines); + if abs(level-StrToInt(Split(m1,1))) < abs(level-lev) then begin + monster := m1; + lev := StrToInt(Split(monster,1)); + end; + Dec(i); + end; + + fTask.Caption := monster; + Result := Split(monster,0); + fTask.Caption := 'kill|' + fTask.Caption; + + qty := 1; + if (level-lev) > 10 then begin + // lev is too low. multiply... + qty := (level + Random(lev)) div lev; + if qty < 1 then qty := 1; + level := level div qty; + end; + + if (level - lev) <= -10 then begin + Result := 'imaginary ' + Result; + end else if (level-lev) < -5 then begin + i := 10+(level-lev); + i := 5-Random(i+1); + Result := Sick(i,Young((lev-level)-i,Result)); + end else if ((level-lev) < 0) and (Random(2) = 1) then begin + Result := Sick(level-lev,Result); + end else if ((level-lev) < 0) then begin + Result := Young(level-lev,Result); + end else if (level-lev) >= 10 then begin + Result := 'messianic ' + Result; + end else if (level-lev) > 5 then begin + i := 10-(level-lev); + i := 5-Random(i+1); + Result := Big(i,Special((level-lev)-i,Result)); + end else if ((level-lev) > 0) and (Random(2) = 1) then begin + Result := Big(level-lev,Result); + end else if ((level-lev) > 0) then begin + Result := Special(level-lev,Result); + end; + + lev := level; + level := lev * qty; + + Result := Indefinite(Result, qty); +end; + +function ProperCase(s:String):String; +begin + Result := UpperCase(Copy(s,1,1)) + Copy(s,2,10000); +end; + +function TForm1.EquipPrice: Integer; +begin + Result := 5 * GetI(Traits,'Level') * GetI(Traits,'Level') + + 10 * GetI(Traits,'Level') + + 20; +end; + +procedure TForm1.Dequeue; +var + s, a, old: String; + n, l: Integer; +begin + while TaskDone do begin + if Split(fTask.Caption,0) = 'kill' then begin + if Split(fTask.Caption,3) = '*' then begin + WinItem; + end else if Split(fTask.Caption,3) <> '' then begin + Add(Inventory,LowerCase(Split(fTask.Caption,1) + ' ' + ProperCase(Split(fTask.Caption,3))),1); + end; + end else if fTask.Caption = 'buying' then begin + // buy some equipment + Add(Inventory,'Gold',-EquipPrice); + WinEquip; + end else if (fTask.Caption = 'market') or (fTask.Caption = 'sell') then with Inventory do begin + if fTask.Caption = 'sell' then begin + Tag := GetI(Inventory,1); + Tag := Tag * GetI(Traits,'Level'); + if Pos(' of ',Items[1].Caption) > 0 then + Tag := Tag * (1+Random(10)) * (1+Random(GetI(Traits,'Level'))); + Items[0].MakeVisible(false); + Items.Delete(1); + Add(Inventory,'Gold',Tag); + end; + if Items.Count > 1 then begin + Task('Selling ' + Indefinite(Inventory.Items[1].Caption, GetI(Inventory,1)), 1 * 1000); + fTask.Caption := 'sell'; + break; + end; + end; + old := fTask.Caption; + fTask.Caption := ''; + if (fQueue.Items.Count > 0) then begin + a := Split(fQueue.Items[0],0); + n := StrToInt(Split(fQueue.Items[0],1)); + s := Split(fQueue.Items[0],2); + if a = 'task' then begin + Task(s, n * 1000); + fQueue.Items.Delete(0); + end else begin + raise Exception.Create('bah!'); + end; + end else with Encumbar do if Position >= Max then begin + Task('Heading to market to sell loot',4 * 1000); + fTask.Caption := 'market'; + end else if (Pos('kill|',old) <= 0) and (old <> 'heading') then begin + if GetI(Inventory, 'Gold') > EquipPrice then begin + Task('Negotiating purchase of better equipment', 5 * 1000); + fTask.Caption := 'buying'; + end else begin + Task('Heading to the killing fields', 4 * 1000); + fTask.Caption := 'heading'; + end; + end else begin + n := GetI(Traits,'Level'); + l := n; + s := MonsterTask(n); + n := (2 * InventoryLabelAlsoGameStyle.Tag * n * 1000) div l; + Task('Executing ' + s, n); + end; + end; +end; + +function IndexOf(list: TListView; key: String): Integer; +var + i: Integer; +begin + for i := 0 to list.Items.Count-1 do if list.Items.Item[i].Caption = key then begin + Result := i; + Exit; + end; + with list.Items.Add do begin + Result := Index; + Caption := key; + MakeVisible(false); + list.Width := list.Width - 1; // trigger an autosize + end; +end; + +procedure TForm1.Put(list: TListView; key, value: String); +begin + Put(list, IndexOf(list,key), value); +end; + +procedure TForm1.Put(list: TListView; key: String; value: Integer); +begin + Put(list,key,IntToStr(value)); + if key = 'STR' then + Encumbar.Max := 10 + value; + if list = Inventory then + Encumbar.Position := Sum(Inventory) - GetI(Inventory,'Gold'); +end; + +procedure TForm1.Put(list: TListView; pos: Integer; value: String); +begin + with list.Items.Item[pos] do begin + if SubItems.Count < 1 + then SubItems.Add(value) + else SubItems[0] := value; + end; +end; + +function LevelUpTime(level: Integer): Integer; +begin + // ~20 minutes for level 1, eventually dominated by exponential + Result := Round((20.0 + IntPower(1.15,level)) * 60.0); +end; + +procedure TForm1.GoButtonClick(Sender: TObject); +begin + with ExpBar do begin + Position := 0; + Max := LevelUpTime(1); + end; + + fTask.Caption := ''; + fQuest.Caption := ''; + fQueue.Items.Clear; + + Task('Loading.',2000); // that dot is spotted for later... + Q('task|10|Experiencing an enigmatic and foreboding night vision'); + Q('task|6|Much is revealed about that wise old bastard you''d underestimated'); + Q('task|6|A shocking series of events leaves you alone and bewildered, but resolute'); + Q('task|4|Drawing upon an unexpected reserve of determination, you set out on a long and dangerous journey'); + Q('task|2|Loading'); + + PlotBar.Max := 26; + with Plots.Items.Add do begin + Caption := 'Prologue'; + StateIndex := 0; + end; + + Timer1.Enabled := True; + SaveGame; +end; + +procedure TForm1.WinSpell; +begin + AddR(Spells, K.Spells.Lines[RandomLow(Min(GetI(Stats,'WIS')+GetI(Traits,'Level'), + K.Spells.Lines.Count))], 1); +end; + +procedure TForm1.WinEquip; +var + pos, qual, plus, attrib, attribmax: Integer; + name: String; + stuff, better: TStrings; +begin + qual := Max(Random(GetI(Traits,'Level')),Random(1+GetI(Traits,'Level'))); + pos := Random(Equips.Items.Count); + case pos of + 0: begin stuff := K.Weapons.Lines; better := K.OffenseAttrib.Lines; end; + 1: begin stuff := K.Shields.Lines; better := K.DefenseAttrib.Lines; end; + else begin stuff := K.Armors.Lines; better := K.DefenseAttrib.Lines; end; + end; + if qual > stuff.Count - 1 then + qual := stuff.Count - 1; + name := stuff[qual]; + plus := GetI(Traits,'Level') - qual; + attribmax := Min(plus, better.Count-1); + while (plus > 0) and (attribmax > 0) and Odds(1,2) do begin + attrib := Random(attribmax+1); + name := better[attrib] + ' ' + name; + Dec(plus, attrib); + attribmax := Min(Min(plus, better.Count-1), attrib-1); + end; + if plus <> 0 then name := IntToStr(plus) + ' ' + name; + if plus > 0 then name := '+' + name; + + Put(Equips, pos, name); +end; + +procedure TForm1.WinStat; +begin + Add(Stats, Stats.Items[Random(Stats.Items.Count)].Caption, 1); +end; + +function TForm1.SpecialItem: String; +begin + Result := InterestingItem + ' of ' + + Pick(K.ItemOfs.Lines); +end; + +function TForm1.InterestingItem: String; +begin + Result := Pick(K.ItemAttrib.Lines) + ' ' + + Pick(K.Specials.Lines); +end; + +function TForm1.BoringItem: String; +begin + Result := Pick(K.BoringItems.Lines); +end; + +procedure TForm1.WinItem; +begin + Add(Inventory, SpecialItem, 1); +end; + +procedure TForm1.CompleteQuest; +var + lev, level, l, i: Integer; + m: string; +begin + with QuestBar do begin + Position := 0; + Max := 50 + Random(100); + end; + with Quests do begin + if Items.Count > 0 then begin + Items[Items.Count-1].StateIndex := 1; + case Random(4) of + 0: WinSpell; + 1: WinEquip; + 2: WinStat; + 3: WinItem; + end; + end; + while Items.Count > 99 do Items.Delete(0); + { + lev := GetI(Traits,'Level'); + for i := lev downto 1 do + if Odds(1,3) then + Inc(lev,RandSign()); + if lev > MonsterMax then lev := MonsterMax - Random(2); + if lev < 1 then lev := 1; + } + with Items.Add do begin + case Random(4) of + 0: begin + level := GetI(Traits,'Level'); + for i := 1 to 4 do begin + m := Pick(K.Monsters.Lines); + l := StrToInt(Split(m,1)); + if (i = 1) or (abs(l - level) < abs(lev - level)) then begin + lev := l; + fQuest.Caption := m; + end; + end; + Caption := 'Exterminate ' + Definite(Split(fQuest.Caption,0),2); + end; + 1: begin + fQuest.Caption := InterestingItem; + Caption := 'Seek ' + Definite(fQuest.Caption,1); + end; + 2: begin + fQuest.Caption := BoringItem; + Caption := 'Deliver this ' + fQuest.Caption; + end; + 3: begin + fQuest.Caption := BoringItem; + Caption := 'Fetch me ' + Indefinite(fQuest.Caption,1); + end; + end; + StateIndex := 0; + MakeVisible(false); + end; + Width := Width - 1; // trigger a column resize + end; + SaveGame; +end; + +function Rome(var n: Integer; dn: Integer; var s: String; ds: String): Boolean; +begin + Result := (n >= dn); + if Result then begin + n := n - dn; + s := s + ds; + end; +end; + +function UnRome(var s: String; dn: Integer; var n: Integer; ds: String): Boolean; +begin + Result := (Copy(s,1,Length(ds)) = ds); + if Result then begin + s := Copy(s,Length(ds)+1,10000); + n := n + dn; + end; +end; + +function IntToRoman(n: Integer): String; +begin + while Rome(n, 1000, Result, 'M') do ; + Rome(n, 900, Result, 'CM'); + Rome(n, 500, Result, 'D'); + Rome(n, 400, Result, 'CD'); + while Rome(n, 100, Result, 'C') do ; + Rome(n, 90, Result, 'XC'); + Rome(n, 50, Result, 'L'); + Rome(n, 40, Result, 'XL'); + while Rome(n, 10, Result, 'X') do ; + Rome(n, 9, Result, 'IX'); + Rome(n, 5, Result, 'V'); + Rome(n, 4, Result, 'IV'); + while Rome(n, 1, Result, 'I') do ; +end; + +function RomanToInt(n: String): Integer; +begin + Result := 0; + while UnRome(n, 1000, Result, 'M') do ; + UnRome(n, 900, Result, 'CM'); + UnRome(n, 500, Result, 'D'); + UnRome(n, 400, Result, 'CD'); + while UnRome(n, 100, Result, 'C') do ; + UnRome(n, 90, Result, 'XC'); + UnRome(n, 50, Result, 'L'); + UnRome(n, 40, Result, 'XL'); + while UnRome(n, 10, Result, 'X') do ; + UnRome(n, 9, Result, 'IX'); + UnRome(n, 5, Result, 'V'); + UnRome(n, 4, Result, 'IV'); + while UnRome(n, 1, Result, 'I') do ; +end; + +procedure TForm1.CompleteAct; +begin + PlotBar.Position := 0; + with Plots do begin + Items[Items.Count-1].StateIndex := 1; + PlotBar.Max := 60 * 60 * (10 + 5 * Items.Count); // 10 hrs + 5/act + with Items.Add do begin + Caption := 'Act ' + IntToRoman(Items.Count-1); + MakeVisible(false); + StateIndex := 0; + Width := Width-1; + end; + end; +end; + +procedure TForm1.Task(caption: String; msec: Integer); +begin + Kill.SimpleText := caption + '...'; + with TaskBar do begin + Position := 0; + Max := msec; + end; +end; + +procedure TForm1.Add(list: TListView; key: String; value: Integer); +begin + Put(list, key, value + GetI(list,key)); +end; + +procedure TForm1.AddR(list: TListView; key: String; value: Integer); +begin + Put(list, key, IntToRoman(value + RomanToInt(Get(list,key)))); +end; + +function TForm1.Get(list: TListView; key: String): String; +begin + Result := Get(list, IndexOf(list,key)); +end; + +function TForm1.Get(list: TListView; index: Integer): String; +begin + with list.Items.Item[index] do begin + if SubItems.Count < 1 + then Result := '' + else Result := SubItems[0]; + end; +end; + +function TForm1.GetI(list: TListView; key: String): Integer; +begin + Result := StrToIntDef(Get(list,key),0); +end; + +function TForm1.GetI(list: TListView; index: Integer): Integer; +begin + Result := StrToIntDef(Get(list,index),0); +end; + +function TForm1.Sum(list: TListView): Integer; +var + i: Integer; +begin + Result := 0; + for i := 0 to list.Items.Count - 1 do + Inc(Result, GetI(list,i)); +end; + +procedure PutLast(list: TListView; value: String); +begin + if list.Items.Count > 0 then + with list.Items.Item[list.Items.Count-1] do begin + if SubItems.Count < 1 + then SubItems.Add(value) + else SubItems[0] := value; + end; + list.Width := list.Width - 1; // trigger an autosize +end; + +procedure TForm1.LevelUp; +var + i: Integer; +begin + Add(Traits,'Level',1); + Add(Stats,'HP Max', GetI(Stats,'CON') div 3 + 1 + Random(4)); + Add(Stats,'MP Max', GetI(Stats,'INT') div 3 + 1 + Random(4)); + for i := 1 to 2 do WinStat; + WinSpell; + with ExpBar do begin + Position := 0; + Max := LevelUpTime(GetI(Traits,'Level')); + end; + SaveGame; +end; + +procedure TForm1.Timer1Timer(Sender: TObject); +var + gain: Boolean; +begin + gain := Pos('kill|',fTask.Caption) = 1; + with TaskBar do begin + if Position >= Max then begin + if Kill.SimpleText = 'Loading....' then Max := 0; + + if gain then with ExpBar do if Position >= Max + then LevelUp + else Position := Position + TaskBar.Max div 1000; + + if gain then if Plots.Items.Count > 1 then + with QuestBar do if Position >= Max then begin + CompleteQuest; + end else if Quests.Items.Count > 0 then + Position := Position + TaskBar.Max div 1000; + + with PlotBar do if Position >= Max + then CompleteAct + else Position := Position + TaskBar.Max div 1000; + + Dequeue(); + end else with TaskBar do + Position := Position + Integer(Timer1.Interval); + end; +end; + +procedure TForm1.M(level: Integer; name, spoor: String); +begin + //fMonsters[level].Add(name + '|' + IntToStr(level) + '|' + spoor); +end; + +procedure TForm1.FormCreate(Sender: TObject); +begin + QuestBar.Position := 0; + PlotBar.Position := 0; + TaskBar.Position := 0; + ExpBar.Position := 0; + Encumbar.Position := 0; + { + for i := 1 to MonsterMax do + fMonsters[i] := TStringList.Create; + M(1,'Wasp','Stinger'); + M(1,'Rat','Tail'); + M(1,'Bunny','Ear'); + M(1,'Moth','Dust'); + M(1,'Beagle','Collar'); + M(1,'Midge','Corpse'); + M(2,'Ostrich','Beak'); + M(2,'Billy Goat','Beard'); + M(2,'Bat','Wing'); + M(2,'Koala','Heart'); + M(3,'Wolf','Paw'); + M(3,'Gnome','Skull'); + M(3,'Kobold','Penis'); + M(3,'Whippet','Collar'); + M(4,'Orc','Shoe'); + M(5,'Uruk','Boot'); + M(6,'Tiger','Stripe'); + M(7,'Lich','Mascara'); + M(8,'Mummy','Chapeau'); + M(9,'Vampire','Pancreas'); + M(10,'Slime','Slime'); + M(11,'Giant','Jumpsuit'); + M(12,'Bugbear','Fang'); + M(13,'Owlbear','Tuft'); + M(14,'Basilisk','Gallstone'); + M(15,'Cockatrice','Cock'); + M(16,'Dragon','Scale'); + } +end; + +procedure TForm1.SpeedButton1Click(Sender: TObject); +begin + TaskBar.Position := TaskBar.Max; +end; + +function TForm1.RollCharacter: Boolean; +var + f: Integer; +begin + Result := true; + repeat + if mrCancel = Form2.ShowModal then begin + Result := false; + Exit; + end; + if FileExists(Form2.Name.Text + '.pq6') and + (mrNo = MessageDlg('A saved game with that name already exists. Do you want to overwrite it?', mtWarning, [mbYes,mbNo], 0)) then begin + // go around again + end else begin + f := FileCreate(Form2.Name.Text + '.pq6'); + if f = -1 then begin + ShowMessage('The thought police don''t like that name. Choose a name without \\ / : * ? " < > or | in it.'); + end else begin + FileClose(f); + Break; + end; + end; + until false; + + with Form2 do begin + Put(Traits,'Name',Name.Text); + Put(Traits,'Race',Race.Items[Race.ItemIndex]); + Put(Traits,'Class',Klass.Items[Klass.ItemIndex]); + Put(Traits,'Level',1); + Put(Stats,'STR',STR.Tag); + Put(Stats,'CON',CON.Tag); + Put(Stats,'DEX',DEX.Tag); + Put(Stats,'INT',INT.Tag); + Put(Stats,'WIS',WIS.Tag); + Put(Stats,'CHA',CHA.Tag); + Put(Stats,'HP Max',Random(8) + CON.Tag div 6); + Put(Stats,'MP Max',Random(8) + INT.Tag div 6); + Put(Equips,'Weapon','Sharp Stick'); + Put(Inventory,'Gold',0); + InventoryLabelAlsoGameStyle.Tag := GameStyle.Position; + GoButtonClick(Form2); + end; +end; + +procedure TForm1.FormShow(Sender: TObject); +begin + while 1=1 do begin + case Form3.ShowModal of + mrOk: begin + if RollCharacter then + Break; + end; + mrRetry: begin + // load + if Form3.OpenDialog1.Execute then begin + LoadGame(Form3.OpenDialog1.Filename); + break; + end; + end; + mrCancel: begin + Close; + Break; + end; + end; + end; +end; + +procedure TForm1.Button1Click(Sender: TObject); +begin + LevelUp; +end; + +procedure TForm1.CashInClick(Sender: TObject); +begin + WinEquip; + WinItem; + WinSpell; + WinStat; + Add(Inventory,'Gold',Random(100)); +end; + +procedure TForm1.FinishQuestClick(Sender: TObject); +begin + QuestBar.Position := QuestBar.Max; + TaskBar.Position := TaskBar.Max; +end; + +procedure TForm1.CheatPlotClick(Sender: TObject); +begin + PlotBar.Position := PlotBar.Max; + TaskBar.Position := TaskBar.Max; +end; + + +procedure TForm1.IO(name: String; save: Boolean); +var + f1: TForm1; +begin + if save then begin + WriteComponentResFile(name, Self); + end else begin + Form1 := ReadComponentResFile(name, nil) as TForm1; + end; +end; + +function TForm1.SaveGame: Boolean; +var + f: TFileStream; + i: Integer; + name: String; +begin + name := Get(Traits,'Name') + '.pq6'; + Result := true; + try + f := TFileStream.Create(name, fmCreate); + for i := 0 to ComponentCount-1 do + f.WriteComponent(Components[i]); + f.Free; + except + on EfCreateError do Result := false; + end; +end; + +procedure TForm1.LoadGame(name: String); +var + f: TFileStream; + c: TComponent; + i: Integer; +begin + f := TFileStream.Create(name, fmOpenRead); + for i := 0 to ComponentCount-1 do begin + c := f.ReadComponent(Components[i]); + //Components[i].Assign(c); + end; + f.Free; + Timer1.Enabled := True; + // trigger autosizes + Plots.Width := 100; + Quests.Width := 100; + Inventory.Width := 100; + Equips.Width := 100; + Spells.Width := 100; + Traits.Width := 100; + Stats.Width := 100; +end; + +procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); +begin + if Timer1.Enabled then begin + Timer1.Enabled := false; + if SaveGame then + ShowMessage('Game saved as ' + Get(Traits,'Name') + '.pq6'); + end; +end; + +procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + if (ssCtrl in Shift) and (ssShift in Shift) and (Key = ord('C')) then + Cheats.Visible := not Cheats.Visible; +end; + +initialization + RegisterClasses([TForm1]); +end. diff --git a/chaff/Copy of NewGuy.dfm b/chaff/Copy of NewGuy.dfm new file mode 100644 index 0000000..1a97f23 --- /dev/null +++ b/chaff/Copy of NewGuy.dfm @@ -0,0 +1,393 @@ +object Form2: TForm2 + Left = 264 + Top = 169 + BorderIcons = [] + BorderStyle = bsDialog + Caption = 'Progress Quest - New Character' + ClientHeight = 457 + ClientWidth = 509 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Icon.Data = { + 0000010001002020000000000000A80800001600000028000000200000004000 + 0000010008000000000080040000000000000000000000000000000000000000 + 0000000080000080000000808000800000008000800080800000C0C0C000C0DC + C000F0CAA60004040400080808000C0C0C0011111100161616001C1C1C002222 + 220029292900555555004D4D4D004242420039393900807CFF005050FF009300 + D600FFECCC00C6D6EF00D6E7E70090A9AD000000330000006600000099000000 + CC00003300000033330000336600003399000033CC000033FF00006600000066 + 330000666600006699000066CC000066FF000099000000993300009966000099 + 99000099CC000099FF0000CC000000CC330000CC660000CC990000CCCC0000CC + FF0000FF660000FF990000FFCC00330000003300330033006600330099003300 + CC003300FF00333300003333330033336600333399003333CC003333FF003366 + 00003366330033666600336699003366CC003366FF0033990000339933003399 + 6600339999003399CC003399FF0033CC000033CC330033CC660033CC990033CC + CC0033CCFF0033FF330033FF660033FF990033FFCC0033FFFF00660000006600 + 330066006600660099006600CC006600FF006633000066333300663366006633 + 99006633CC006633FF00666600006666330066666600666699006666CC006699 + 00006699330066996600669999006699CC006699FF0066CC000066CC330066CC + 990066CCCC0066CCFF0066FF000066FF330066FF990066FFCC00CC00FF00FF00 + CC009999000099339900990099009900CC009900000099333300990066009933 + CC009900FF00996600009966330099336600996699009966CC009933FF009999 + 330099996600999999009999CC009999FF0099CC000099CC330066CC660099CC + 990099CCCC0099CCFF0099FF000099FF330099CC660099FF990099FFCC0099FF + FF00CC00000099003300CC006600CC009900CC00CC0099330000CC333300CC33 + 6600CC339900CC33CC00CC33FF00CC660000CC66330099666600CC669900CC66 + CC009966FF00CC990000CC993300CC996600CC999900CC99CC00CC99FF00CCCC + 0000CCCC3300CCCC6600CCCC9900CCCCCC00CCCCFF00CCFF0000CCFF330099FF + 6600CCFF9900CCFFCC00CCFFFF00CC003300FF006600FF009900CC330000FF33 + 3300FF336600FF339900FF33CC00FF33FF00FF660000FF663300CC666600FF66 + 9900FF66CC00CC66FF00FF990000FF993300FF996600FF999900FF99CC00FF99 + FF00FFCC0000FFCC3300FFCC6600FFCC9900FFCCCC00FFCCFF00FFFF3300CCFF + 6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF + 66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7 + D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080 + 80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF005852 + 5151515151515258585858585858585858585858585858585852515151515852 + 51514A4A4A515152585858585858585858585858585858585251514B4A4B5852 + 514B4A4A4A4B51515258585858585858585858585858585251514B4A4A4A5852 + 150F4A4A4A4A4B5151515152525251525252525252525151514A0F154A4B580B + 0E0E0B4A4A4A4A4A5151515151515151515151515151514B4B0B0E0E0B512311 + 15220E514A4A4A4A4A4A4A4B4A4A4A4A4A4A4A4A4A4A4A4A4A0F22143D234313 + 22431151514A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A11432213435822 + 23296710294B4A4A44442244154422441544224444444A221012292322585858 + 58514443151D4B4A442215221522152215221522154B0E151544515252585858 + 5879294A43140D4A22150D0E2243100E1D0D2215220D14434A03525258585858 + 585852514A224A430E0E1443220D111543140E0E4344224A4A51515258585858 + 585858514B1514220E2243150D444444444322222214154B4B4B515258585858 + 585858585174151D4A434A4A15104422234A434A1D15742A4A4B515258585858 + 585858585222444B457422224B44224B222274454B4422524A4B515258585858 + 58585858510A4B4C3F4C44EA4A22224A6D444C3F4C4B0A4A4A51515258585858 + 585858580D15294B4523ECC8C44A4AE946EC23454B29150D4A51515858585858 + 58585858444A4A234AAEC8FCFCA7E9F9F946AE44234A4A435151525858585858 + 58585858232244224AEFA7FCFC62F9F9F946EF4A224422235151525858585858 + 585858584B434A110C4A8DA862F9F9F9698D4A0C114A43295151525858585858 + 5858585852222210514A8D46F9F9F962A78D4A51104322524B51525858585858 + 58585858524B0C034AEB46F9F9F962FCFCA7F84A030C4B4A4A51515258585858 + 5858585251514B4AED46F9F9F9E3A8FCFCFCA7ED4A4B4A4A4A4B515152585858 + 58585851514B4AED46F9F9F9E3F7F7E6FCFCFCA7ED4A4A4A4A4A4B5152585858 + 585852514B4AEB46F9F9F9E3ED525892E6FCFCFCA7EB4A4A4A4A4A4B51525858 + 585852514A6D46F9F9F9E3ED5858585892E6FCFCFCA76D4A4A4A4A4A51515858 + 5858514B14B5F047F9E3F7585858585858B5E6FCC8DDB5144A4A4A4A51515858 + 585852AE09F3F3BCE3B55858585858585858B5D0DDF3F309AE4A4B4B51515858 + 5858BCF4F5F4F4F4075858585858585858585807F4F4F4F5DEBC515151525858 + 58991BF5F5F2DDB6585858585858585858585858B6DDF3F5F51B995152585858 + 5892B51909B592585858585858585858585858585892B509DDB5925858585858 + 58720909ECEB58585858585858585858585858585858F8EC0909725858585858 + 58F78DAEED5858585858585858585858585858585858581CAE8D925858580000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000} + OldCreateOrder = False + Position = poScreenCenter + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Race: TRadioGroup + Left = 8 + Top = 52 + Width = 185 + Height = 397 + Caption = 'Race' + Items.Strings = ( + 'Half Orc' + 'Half Man' + 'Half Halfling' + 'Double Hobbit' + 'Low Elf' + 'Dung Elf' + 'Talking Pony' + 'Greater Gnome' + 'Gyrognome' + 'Lesser Dwarf' + 'Crested Dwarf' + 'Eel Man' + 'Panda Man' + 'Monster' + 'Enchanted Motorcycle' + 'Will o'#39' the Wisp' + 'Battle-Finch' + 'Double Wookie' + 'Skraeling' + 'Demicanadian') + TabOrder = 0 + end + object Klass: TRadioGroup + Left = 200 + Top = 20 + Width = 185 + Height = 345 + Caption = 'Class' + Items.Strings = ( + 'Ur-Paladin' + 'Voodoo Princess' + 'Robot Monk' + 'Mu-Fu Monk' + 'Mage Illusioner' + 'Shiv-Knight' + 'Inner Mason' + 'Fighter/Organist' + 'Puma Burgular' + 'Runeloremaster' + 'Tongueblade' + 'Hunter Stalker' + 'Battle-Felon' + 'Tickle-Mimic' + 'Slow Poisoner' + 'Bastard Lunatic' + 'Lowling') + TabOrder = 1 + end + object GroupBox1: TGroupBox + Left = 392 + Top = 20 + Width = 109 + Height = 305 + Caption = 'Stats' + TabOrder = 2 + object Label3: TLabel + Left = 22 + Top = 56 + Width = 23 + Height = 13 + Caption = 'CON' + end + object Label7: TLabel + Left = 22 + Top = 152 + Width = 22 + Height = 13 + Caption = 'CHA' + end + object Label6: TLabel + Left = 22 + Top = 128 + Width = 21 + Height = 13 + Caption = 'WIS' + end + object Label5: TLabel + Left = 22 + Top = 104 + Width = 18 + Height = 13 + Caption = 'INT' + end + object Label4: TLabel + Left = 22 + Top = 80 + Width = 22 + Height = 13 + Caption = 'DEX' + end + object Label2: TLabel + Left = 22 + Top = 32 + Width = 22 + Height = 13 + Caption = 'STR' + end + object Label8: TLabel + Left = 22 + Top = 188 + Width = 24 + Height = 13 + Caption = 'Total' + end + object CHA: TPanel + Left = 52 + Top = 148 + Width = 37 + Height = 21 + BevelOuter = bvLowered + Caption = '18' + TabOrder = 0 + end + object WIS: TPanel + Left = 52 + Top = 124 + Width = 37 + Height = 21 + BevelOuter = bvLowered + Caption = '18' + TabOrder = 1 + end + object INT: TPanel + Left = 52 + Top = 100 + Width = 37 + Height = 21 + BevelOuter = bvLowered + Caption = '18' + TabOrder = 2 + end + object DEX: TPanel + Left = 52 + Top = 76 + Width = 37 + Height = 21 + BevelOuter = bvLowered + Caption = '18' + TabOrder = 3 + end + object CON: TPanel + Left = 52 + Top = 52 + Width = 37 + Height = 21 + BevelOuter = bvLowered + Caption = '18' + TabOrder = 4 + end + object STR: TPanel + Left = 52 + Top = 28 + Width = 37 + Height = 21 + BevelOuter = bvLowered + Caption = '18' + TabOrder = 5 + end + object Reroll: TButton + Left = 18 + Top = 232 + Width = 75 + Height = 25 + Caption = 'Roll' + TabOrder = 6 + OnClick = RerollClick + end + object Total: TPanel + Left = 52 + Top = 184 + Width = 37 + Height = 21 + BevelOuter = bvLowered + Caption = '18' + Color = clWhite + TabOrder = 7 + end + object Unroll: TButton + Left = 18 + Top = 264 + Width = 75 + Height = 25 + Caption = 'Unroll' + Enabled = False + TabOrder = 8 + OnClick = UnrollClick + end + end + object Sold: TButton + Left = 414 + Top = 412 + Width = 75 + Height = 25 + Caption = 'Sold!' + Default = True + TabOrder = 3 + OnClick = SoldClick + end + object GroupBox2: TGroupBox + Left = 200 + Top = 372 + Width = 185 + Height = 77 + Caption = 'Game Style' + TabOrder = 4 + object Label9: TLabel + Left = 20 + Top = 56 + Width = 30 + Height = 13 + Caption = 'Action' + end + object Label10: TLabel + Left = 120 + Top = 56 + Width = 39 + Height = 13 + Caption = 'Strategy' + end + object GameStyle: TTrackBar + Left = 24 + Top = 24 + Width = 126 + Height = 33 + Max = 5 + Min = 1 + Orientation = trHorizontal + Frequency = 1 + Position = 3 + SelEnd = 0 + SelStart = 0 + TabOrder = 0 + TickMarks = tmBottomRight + TickStyle = tsAuto + end + end + object Name: TLabeledEdit + Left = 8 + Top = 24 + Width = 185 + Height = 21 + EditLabel.Width = 28 + EditLabel.Height = 13 + EditLabel.Caption = 'Name' + LabelPosition = lpAbove + LabelSpacing = 3 + TabOrder = 5 + Text = 'Grumdrig' + end + object OldRolls: TListBox + Left = 396 + Top = 232 + Width = 21 + Height = 13 + ItemHeight = 13 + TabOrder = 6 + Visible = False + end + object Button2: TButton + Left = 414 + Top = 376 + Width = 75 + Height = 25 + Caption = 'Never mind.' + ModalResult = 2 + TabOrder = 7 + end + object Online: TCheckBox + Left = 400 + Top = 340 + Width = 97 + Height = 17 + Caption = 'Play online' + Checked = True + State = cbChecked + TabOrder = 8 + end + object Server: TNMHTTP + Port = 0 + ReportLevel = 0 + Body = 'Default.htm' + Header = 'Head.txt' + HeaderInfo.Cookie = 'yumyum' + HeaderInfo.Password = 'chickens' + InputFileMode = False + OutputFileMode = False + OnSuccess = ServerSuccess + ProxyPort = 0 + Left = 332 + Top = 312 + end + object PoorCodeDesign: TNMURL + Left = 336 + Top = 272 + end +end diff --git a/chaff/Copy of NewGuy.pas b/chaff/Copy of NewGuy.pas new file mode 100644 index 0000000..03ba176 --- /dev/null +++ b/chaff/Copy of NewGuy.pas @@ -0,0 +1,167 @@ +unit NewGuy; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, ComCtrls, Psock, NMHttp, NMURL; + +type + TForm2 = class(TForm) + Race: TRadioGroup; + Klass: TRadioGroup; + Label2: TLabel; + STR: TPanel; + Label3: TLabel; + CON: TPanel; + Label4: TLabel; + DEX: TPanel; + Label5: TLabel; + INT: TPanel; + Label6: TLabel; + WIS: TPanel; + Label7: TLabel; + CHA: TPanel; + Reroll: TButton; + GroupBox1: TGroupBox; + Label8: TLabel; + Total: TPanel; + Sold: TButton; + Unroll: TButton; + GroupBox2: TGroupBox; + GameStyle: TTrackBar; + Label9: TLabel; + Label10: TLabel; + Name: TLabeledEdit; + OldRolls: TListBox; + Button2: TButton; + Server: TNMHTTP; + Online: TCheckBox; + PoorCodeDesign: TNMURL; + procedure RerollClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure UnrollClick(Sender: TObject); + procedure ServerSuccess(Cmd: CmdType); + procedure SoldClick(Sender: TObject); + private + procedure RollEm; + { Private declarations } + public + { Public declarations } + end; + +var + Form2: TForm2; + +function UrlEncode(s: string): string; + +implementation + +uses Main; + +{$R *.dfm} + +function UrlEncode(s: string): string; +begin + Form2.PoorCodeDesign.InputString := s; + Result := Form2.PoorCodeDesign.Encode; +end; + +procedure Roll(stat: TPanel); +begin + stat.Tag := 3 + Random(6) + Random(6) + Random(6); + stat.Caption := IntToStr(stat.Tag); +end; + +function Choose(n, k: Integer): Real; +var + d, i: Longint; +begin + Result := n; + d := 1; + for i := 2 to k do begin + Result := Result * (1+n-i); + d := d * i; + end; + Result := Result / d; +end; + +procedure TForm2.RollEm; +begin + ReRoll.Tag := RandSeed; + Roll(STR); + Roll(CON); + Roll(DEX); + Roll(INT); + Roll(WIS); + Roll(CHA); + Total.tag := STR.Tag + Con.Tag + DEX.Tag + Int.Tag + Wis.Tag + CHA.Tag; + Total.Caption := IntToStr(Total.Tag); + if Total.Tag >= (63+18) then Total.Color := clRed + else if Total.Tag > (4 * 18) then Total.Color := clYellow + else if Total.Tag <= (63-18) then Total.Color := clGray + else if Total.Tag < (3 * 18) then Total.Color := clSilver + else Total.Color := clWhite; +end; + +procedure TForm2.RerollClick(Sender: TObject); +begin + OldRolls.Items.Insert(0, IntToStr(ReRoll.Tag)); + Unroll.Enabled := true; + RollEm; +end; + +procedure TForm2.FormShow(Sender: TObject); +begin + Randomize; + RollEm; + with Race do + ItemIndex := Random(Items.Count); + with Klass do + ItemIndex := Random(Items.Count); + Name.SetFocus; +end; + +procedure TForm2.UnrollClick(Sender: TObject); +begin + RandSeed := StrToInt(OldRolls.Items[0]); + OldRolls.Items.Delete(0); + Unroll.Enabled := OldRolls.Items.Count > 0; + RollEm; +end; + +procedure TForm2.ServerSuccess(Cmd: CmdType); +begin + if (LowerCase(Split(Server.Body,0)) = 'ok') then begin + Form1.Traits.Hint := Split(Server.Body,1); + Form1.Traits.Tag := StrToInt(Form1.Traits.Hint); + Server.OnSuccess := nil; + Server.OnFailure := nil; + ModalResult := mrOk; + end else begin + ShowMessage(Split(Server.Body,1)); + end; +end; + +procedure TForm2.SoldClick(Sender: TObject); +begin + if not Online.Checked + then ModalResult := mrOk + else begin + try + Screen.Cursor := crHourglass; + try + Server.Get('http://progressquest.name2host.com/hi.php?cmd=create&name=' + UrlEncode(Name.Text)); + except + on ESockError do begin + ShowMessage('Error connecting to server'); + Server.Abort; + end; + end; + finally + Screen.Cursor := crDefault; + end; + end; +end; + +end. diff --git a/chaff/Crashbot.pq6 b/chaff/Crashbot.pq6 new file mode 100644 index 0000000..51a7c38 Binary files /dev/null and b/chaff/Crashbot.pq6 differ diff --git a/chaff/Drigy.pq6 b/chaff/Drigy.pq6 new file mode 100644 index 0000000..a0104e8 Binary files /dev/null and b/chaff/Drigy.pq6 differ diff --git a/chaff/Eric.pq6 b/chaff/Eric.pq6 new file mode 100644 index 0000000..bfcae17 Binary files /dev/null and b/chaff/Eric.pq6 differ diff --git a/chaff/Finkle.pq6 b/chaff/Finkle.pq6 new file mode 100644 index 0000000..eca29ab Binary files /dev/null and b/chaff/Finkle.pq6 differ diff --git a/chaff/Fliggle.pq6 b/chaff/Fliggle.pq6 new file mode 100644 index 0000000..28f5880 Binary files /dev/null and b/chaff/Fliggle.pq6 differ diff --git a/chaff/Flimflam.pq6 b/chaff/Flimflam.pq6 new file mode 100644 index 0000000..54c928b Binary files /dev/null and b/chaff/Flimflam.pq6 differ diff --git a/chaff/Front.dcu b/chaff/Front.dcu new file mode 100644 index 0000000..d4f3164 Binary files /dev/null and b/chaff/Front.dcu differ diff --git a/chaff/Front.ddp b/chaff/Front.ddp new file mode 100644 index 0000000..cdc0ee8 Binary files /dev/null and b/chaff/Front.ddp differ diff --git a/chaff/Gjhdf.pq6 b/chaff/Gjhdf.pq6 new file mode 100644 index 0000000..044dc28 Binary files /dev/null and b/chaff/Gjhdf.pq6 differ diff --git a/chaff/Glom.pq6 b/chaff/Glom.pq6 new file mode 100644 index 0000000..a9e9c50 Binary files /dev/null and b/chaff/Glom.pq6 differ diff --git a/chaff/Grumdrig ][.pq6 b/chaff/Grumdrig ][.pq6 new file mode 100644 index 0000000..24f8de0 Binary files /dev/null and b/chaff/Grumdrig ][.pq6 differ diff --git a/chaff/Grumdrig.pq6 b/chaff/Grumdrig.pq6 new file mode 100644 index 0000000..74c705a Binary files /dev/null and b/chaff/Grumdrig.pq6 differ diff --git a/chaff/Grumdrigplus.pq6 b/chaff/Grumdrigplus.pq6 new file mode 100644 index 0000000..1f0468b Binary files /dev/null and b/chaff/Grumdrigplus.pq6 differ diff --git a/chaff/Info.dcu b/chaff/Info.dcu new file mode 100644 index 0000000..09b34a1 Binary files /dev/null and b/chaff/Info.dcu differ diff --git a/chaff/Main.dcu b/chaff/Main.dcu new file mode 100644 index 0000000..9bd9c7d Binary files /dev/null and b/chaff/Main.dcu differ diff --git a/chaff/Main.ddp b/chaff/Main.ddp new file mode 100644 index 0000000..cdc0ee8 Binary files /dev/null and b/chaff/Main.ddp differ diff --git a/chaff/NewGuy.dcu b/chaff/NewGuy.dcu new file mode 100644 index 0000000..b7b1453 Binary files /dev/null and b/chaff/NewGuy.dcu differ diff --git a/chaff/NewGuy.ddp b/chaff/NewGuy.ddp new file mode 100644 index 0000000..cdc0ee8 Binary files /dev/null and b/chaff/NewGuy.ddp differ diff --git a/chaff/None Other Than Satan Himself, I Do Declare.pq b/chaff/None Other Than Satan Himself, I Do Declare.pq new file mode 100644 index 0000000..6769128 Binary files /dev/null and b/chaff/None Other Than Satan Himself, I Do Declare.pq differ diff --git a/chaff/Santaclaws.pq6 b/chaff/Santaclaws.pq6 new file mode 100644 index 0000000..a760289 Binary files /dev/null and b/chaff/Santaclaws.pq6 differ diff --git a/chaff/Spanky Pants.pq6 b/chaff/Spanky Pants.pq6 new file mode 100644 index 0000000..e2ed784 Binary files /dev/null and b/chaff/Spanky Pants.pq6 differ diff --git a/chaff/Unit1.dcu b/chaff/Unit1.dcu new file mode 100644 index 0000000..9df0e0a Binary files /dev/null and b/chaff/Unit1.dcu differ diff --git a/chaff/Unit1.ddp b/chaff/Unit1.ddp new file mode 100644 index 0000000..cdc0ee8 Binary files /dev/null and b/chaff/Unit1.ddp differ diff --git a/chaff/Unit1.dfm b/chaff/Unit1.dfm new file mode 100644 index 0000000..ddde33a --- /dev/null +++ b/chaff/Unit1.dfm @@ -0,0 +1,460 @@ +object Form1: TForm1 + Left = 219 + Top = 95 + Width = 561 + Height = 538 + BorderIcons = [biSystemMenu, biMinimize] + Caption = 'Progress Quest VI' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 185 + Height = 476 + Align = alLeft + TabOrder = 0 + object Label1: TLabel + Left = 1 + Top = 1 + Width = 183 + Height = 13 + Align = alTop + Caption = 'Character Sheet' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label6: TLabel + Left = 1 + Top = 409 + Width = 183 + Height = 13 + Align = alTop + Caption = 'Experience' + end + object Traits: TListView + Left = 1 + Top = 14 + Width = 183 + Height = 79 + Align = alTop + Columns = < + item + Caption = 'Trait' + Width = 60 + end + item + AutoSize = True + Caption = 'Value' + end> + ColumnClick = False + Items.Data = { + 6E0000000400000000000000FFFFFFFFFFFFFFFF0000000000000000044E616D + 6500000000FFFFFFFFFFFFFFFF0000000000000000045261636500000000FFFF + FFFFFFFFFFFF000000000000000005436C61737300000000FFFFFFFFFFFFFFFF + 0000000000000000054C6576656C} + ReadOnly = True + TabOrder = 2 + ViewStyle = vsReport + end + object Equips: TListView + Left = 1 + Top = 229 + Width = 183 + Height = 180 + Align = alTop + Columns = < + item + Caption = 'Position' + Width = 60 + end + item + AutoSize = True + Caption = 'Equipped' + end> + ColumnClick = False + Items.Data = { + 410100000B00000000000000FFFFFFFFFFFFFFFF000000000000000006576561 + 706F6E00000000FFFFFFFFFFFFFFFF000000000000000006536865696C640000 + 0000FFFFFFFFFFFFFFFF00000000000000000448656C6D00000000FFFFFFFFFF + FFFFFF0000000000000000074861756265726B00000000FFFFFFFFFFFFFFFF00 + 000000000000000A4272617373616972747300000000FFFFFFFFFFFFFFFF0000 + 0000000000000956616D62726163657300000000FFFFFFFFFFFFFFFF00000000 + 00000000094761756E746C65747300000000FFFFFFFFFFFFFFFF000000000000 + 00000847616D6265736F6E00000000FFFFFFFFFFFFFFFF000000000000000007 + 4375697373657300000000FFFFFFFFFFFFFFFF00000000000000000747726561 + 76657300000000FFFFFFFFFFFFFFFF000000000000000009536F6C6C65726574 + 73} + TabOrder = 1 + ViewStyle = vsReport + end + object Stats: TListView + Left = 1 + Top = 93 + Width = 183 + Height = 136 + Align = alTop + Columns = < + item + Caption = 'Stat' + Width = 60 + end + item + AutoSize = True + Caption = 'Value' + end> + ColumnClick = False + Items.Data = { + CE0000000800000000000000FFFFFFFFFFFFFFFF000000000000000003535452 + 00000000FFFFFFFFFFFFFFFF000000000000000003434F4E00000000FFFFFFFF + FFFFFFFF00000000000000000344455800000000FFFFFFFFFFFFFFFF00000000 + 0000000003494E5400000000FFFFFFFFFFFFFFFF000000000000000003574953 + 00000000FFFFFFFFFFFFFFFF00000000000000000343484100000000FFFFFFFF + FFFFFFFF0000000000000000064850204D617800000000FFFFFFFFFFFFFFFF00 + 00000000000000064D50204D6178} + TabOrder = 0 + ViewStyle = vsReport + end + object ExpBar: TProgressBar + Left = 1 + Top = 422 + Width = 183 + Height = 16 + Align = alTop + Min = 0 + Max = 100 + Position = 50 + Smooth = True + TabOrder = 3 + end + object GoButton: TButton + Left = 52 + Top = 444 + Width = 75 + Height = 25 + Caption = 'Go' + TabOrder = 4 + OnClick = GoButtonClick + end + object Button1: TButton + Left = 12 + Top = 444 + Width = 25 + Height = 25 + Caption = 'L+1' + TabOrder = 5 + OnClick = Button1Click + end + object Button2: TButton + Left = 148 + Top = 444 + Width = 27 + Height = 25 + Caption = 'Q!' + TabOrder = 6 + OnClick = SpeedButton1Click + end + end + object Panel3: TPanel + Left = 370 + Top = 0 + Width = 183 + Height = 476 + Align = alLeft + TabOrder = 1 + object Label3: TLabel + Left = 1 + Top = 201 + Width = 181 + Height = 13 + Align = alTop + Caption = 'Quests' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label2: TLabel + Left = 1 + Top = 1 + Width = 181 + Height = 13 + Align = alTop + Caption = 'Plot Development' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object QuestBar: TProgressBar + Left = 1 + Top = 459 + Width = 181 + Height = 16 + Align = alBottom + Min = 0 + Max = 0 + Smooth = True + TabOrder = 0 + end + object Plots: TListView + Left = 1 + Top = 14 + Width = 181 + Height = 171 + Align = alTop + Columns = < + item + AutoSize = True + Caption = 'Act' + end> + ColumnClick = False + IconOptions.Arrangement = iaLeft + ShowColumnHeaders = False + StateImages = ImageList1 + TabOrder = 1 + ViewStyle = vsReport + end + object PlotBar: TProgressBar + Left = 1 + Top = 185 + Width = 181 + Height = 16 + Align = alTop + Min = 0 + Max = 0 + Smooth = True + TabOrder = 2 + end + object Quests: TListView + Left = 1 + Top = 214 + Width = 181 + Height = 245 + Align = alClient + Columns = < + item + AutoSize = True + Caption = 'Quest' + end> + ColumnClick = False + FlatScrollBars = True + IconOptions.Arrangement = iaLeft + ReadOnly = True + ShowColumnHeaders = False + StateImages = ImageList1 + TabOrder = 3 + ViewStyle = vsReport + end + end + object Panel2: TPanel + Left = 185 + Top = 0 + Width = 185 + Height = 476 + Align = alLeft + TabOrder = 2 + object Label4: TLabel + Left = 1 + Top = 291 + Width = 183 + Height = 13 + Align = alBottom + Caption = 'Spell Book' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label5: TLabel + Left = 1 + Top = 1 + Width = 183 + Height = 13 + Align = alTop + Caption = 'Inventory' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label7: TLabel + Left = 1 + Top = 262 + Width = 183 + Height = 13 + Align = alBottom + Caption = 'Encumberance' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object Spells: TListView + Left = 1 + Top = 304 + Width = 183 + Height = 171 + Align = alBottom + Columns = < + item + AutoSize = True + Caption = 'Spell' + end + item + Caption = 'Level' + Width = 40 + end> + ColumnClick = False + TabOrder = 0 + ViewStyle = vsReport + end + object Inventory: TListView + Left = 1 + Top = 14 + Width = 183 + Height = 248 + Align = alClient + Columns = < + item + AutoSize = True + Caption = 'Item' + end + item + Caption = 'Qty' + Width = 40 + end> + ColumnClick = False + TabOrder = 1 + ViewStyle = vsReport + end + object EncumBar: TProgressBar + Left = 1 + Top = 275 + Width = 183 + Height = 16 + Align = alBottom + Min = 0 + Max = 100 + Position = 50 + Smooth = True + TabOrder = 2 + end + end + object Panel4: TPanel + Left = 0 + Top = 476 + Width = 553 + Height = 35 + Align = alBottom + Caption = 'Panel4' + TabOrder = 3 + object Kill: TStatusBar + Left = 1 + Top = -1 + Width = 551 + Height = 19 + Panels = < + item + Width = 50 + end> + SimplePanel = True + SimpleText = 'Welcome to Progress Quest!' + end + object KillBar: TProgressBar + Left = 1 + Top = 18 + Width = 551 + Height = 16 + Align = alBottom + Min = 0 + Max = 100 + Position = 50 + Smooth = True + Step = 1 + TabOrder = 1 + end + end + object Timer1: TTimer + Enabled = False + Interval = 100 + OnTimer = Timer1Timer + Left = 40 + Top = 120 + end + object ImageList1: TImageList + Height = 12 + Width = 12 + Left = 92 + Top = 52 + Bitmap = { + 494C01010200040004000C000C00FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000300000000C00000001001000000000008004 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 28000000300000000C0000000100010000000000600000000000000000000000 + 000000000000000000000000FFFFFF0000100100000000007FD7FD0000000000 + 7FD77D00000000007FD63D00000000007FD41D00000000007FD48D0000000000 + 7FD5C500000000007FD7E500000000007FD7F500000000007FD7FD0000000000 + 0010010000000000FFFFFF0000000000} + end +end diff --git a/chaff/Unit1.pas b/chaff/Unit1.pas new file mode 100644 index 0000000..eb73410 --- /dev/null +++ b/chaff/Unit1.pas @@ -0,0 +1,682 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, ComCtrls, StdCtrls, ExtCtrls, Buttons, ImgList; + +type + TForm1 = class(TForm) + Panel1: TPanel; + Label1: TLabel; + Traits: TListView; + Equips: TListView; + Panel3: TPanel; + Label3: TLabel; + QuestBar: TProgressBar; + Stats: TListView; + Label2: TLabel; + PlotBar: TProgressBar; + Plots: TListView; + Quests: TListView; + Panel2: TPanel; + Label4: TLabel; + Spells: TListView; + Label5: TLabel; + Inventory: TListView; + Panel4: TPanel; + Kill: TStatusBar; + Label6: TLabel; + ExpBar: TProgressBar; + KillBar: TProgressBar; + Timer1: TTimer; + GoButton: TButton; + EncumBar: TProgressBar; + Label7: TLabel; + Button1: TButton; + ImageList1: TImageList; + Button2: TButton; + procedure GoButtonClick(Sender: TObject); + procedure Timer1Timer(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure SpeedButton1Click(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure Button1Click(Sender: TObject); + private + procedure Task(caption: String; msec: Integer); + procedure Dequeue; + procedure Q(s: string); + function TaskDone: Boolean; + procedure CompleteQuest; + procedure M(level: Integer; name, spoor: String); + procedure CompleteAct; + procedure RollCharacter; + procedure S(name: String); + procedure WinEquip; + procedure WinSpell; + procedure WinStat; + procedure WinItem; + procedure Aa(var list: TStrings; item: String); + public + procedure Put(list: TListView; key: String; value: String); overload; + procedure Put(list: TListView; pos: Integer; value: String); overload; + procedure Put(list: TListView; key: String; value: Integer); overload; + procedure Add(list: TListView; key: String; value: Integer); overload; + function Get(list: TListView; key: String): String; overload; + function Get(list: TListView; index: Integer): String; overload; + function GetI(list: TListView; key: String): Integer; overload; + function GetI(list: TListView; index: Integer): Integer; overload; + function Sum(list: TListView): Integer; + end; + +var + Form1: TForm1; + +implementation + +uses Unit2, Math; + +{$R *.dfm} + +const + MonsterMax = 16; + +var + fMonsters: array[1..MonsterMax] of TStrings; + fWeapons, fOffenseAttrib, fArmors, fDefenseAttrib, fShields, fSpellList: TStrings; + fTask: String; + fQuest: String; + fQueue: TStrings; + +procedure TForm1.Q(s: string); +begin + if fQueue = nil then fQueue := TStringList.Create; + fQueue.Add(s); + Dequeue; +end; + +function TForm1.TaskDone: Boolean; +begin + with KillBar do + Result := Position >= Max; +end; + +function Odds(chance, outof: Integer): Boolean; +begin + Result := Random(outof) < chance; +end; + +function RandSign(): Integer; +begin + Result := Random(2) * 2 - 1; +end; + +function Pick(s: TStrings): String; +begin + Result := s[Random(s.Count)]; +end; + +function PickLow(s: TStrings): String; +begin + Result := s[Min(Random(s.Count),Random(s.Count))]; +end; + +function Ends(s,e: String): Boolean; +begin + Result := Copy(s,1+Length(s)-Length(e),Length(e)) = e; +end; + +function Plural(s: String): String; +begin + if Ends(s,'y') + then Result := Copy(s,1,Length(s)-1) + 'ies' + else if Ends(s,'ch') + then Result := s + 'es' + else if Ends(s,'f') + then Result := Copy(s,1,Length(s)-1) + 'ves' + else Result := s + 's'; +end; + +function Split(s: String; field: Integer): String; +var + p: Integer; +begin + while field > 0 do begin + p := Pos('|',s); + s := Copy(s,p+1,10000); + Dec(field); + end; + if Pos('|',s) > 0 + then Result := Copy(s,1,Pos('|',s)-1) + else Result := s; +end; + +function MonsterTask(var level: Integer): String; +var + qty, lev, i: Integer; +begin + lev := level; + for i := 1 to level do begin + if Odds(2,3) then + Inc(lev, RandSign()); + if Odds(2,5) then + Inc(level, RandSign()); + end; + if lev < 1 then lev := 1; + if lev > MonsterMax then lev := MonsterMax; + if level < 1 then level := 1; + + fTask := Pick(fMonsters[lev]); + Result := Split(fTask,0); + fTask := 'kill|' + fTask; + + qty := 1; + case level-lev of + -3: Result := 'Fœtal ' + Result; + -2: Result := 'Very Sick ' + Result; + -1: Result := 'Lesser ' + Result; + 0: ; // that's fine + 1: Result := 'Greater ' + Result; + 2: Result := 'War ' + Result; + 3: Result := 'Über ' + Result; + else + if lev = 2 * level + then Result := 'Half ' + Result + else if lev * 2 = level + then Result := 'Double ' + Result + else begin + if lev > level then begin + lev := lev div 2; + Result := 'Leper ' + Result; + end; + qty := (level + (lev div 2)) div 2; + if qty < 1 then qty := 1; + level := level * qty; + end; + end; + + if qty = 1 then begin + if Pos(Result[1], 'AEIOUaeiou') > 0 + then Result := 'an ' + Result + else Result := 'a ' + Result; + end else begin + Result := IntToStr(qty) + ' ' + Plural(Result); + end; +end; + +procedure TForm1.Dequeue; +var + s, a: String; + n, l: Integer; +begin + while TaskDone do begin + if Split(fTask,0) = 'kill' then begin + if Split(fTask,3) <> '' then + Add(Inventory,Split(fTask,1) + ' ' + Split(fTask,3),1); + end else if fTask = 'sell' then with Inventory do begin + while Items.Count > 1 do begin + Tag := GetI(Inventory,Items.Count-1); + Items.Delete(Items.Count-1); + Add(Inventory,'Gold',Tag); + end; + end; + fTask := ''; + if (fQueue.Count > 0) then begin + a := Split(fQueue[0],0); + n := StrToInt(Split(fQueue[0],1)); + s := Split(fQueue[0],2); + if a = 'task' then begin + Task(s, n * 1000); + fQueue.Delete(0); + end else begin + raise Exception.Create('bah!'); + end; + end else with Encumbar do if Position >= Max then begin + Task('Heading to market to sell loot',4 * 1000); + fTask := 'sell'; + end else begin + n := GetI(Traits,'Level'); + l := n; + s := MonsterTask(n); + n := (2 * Form2.GameStyle.Position * n * 1000) div l; + Task('Executing ' + s, n); + end; + end; +end; + +function IndexOf(list: TListView; key: String): Integer; +var + i: Integer; +begin + for i := 0 to list.Items.Count-1 do if list.Items.Item[i].Caption = key then begin + Result := i; + Exit; + end; + with list.Items.Add do begin + Result := Index; + Caption := key; + end; +end; + +procedure TForm1.Put(list: TListView; key, value: String); +begin + Put(list, IndexOf(list,key), value); +end; + +procedure TForm1.Put(list: TListView; key: String; value: Integer); +begin + Put(list,key,IntToStr(value)); + if key = 'CON' then + Encumbar.Max := value; + if list = Inventory then + Encumbar.Position := Sum(Inventory) - GetI(Inventory,'Gold'); +end; + +procedure TForm1.Put(list: TListView; pos: Integer; value: String); +begin + with list.Items.Item[pos] do begin + if SubItems.Count < 1 + then SubItems.Add(value) + else SubItems[0] := value; + end; +end; + +procedure TForm1.GoButtonClick(Sender: TObject); +begin + with ExpBar do begin + Position := 0; + Max := 20 * 60; // 20 minutes for level 1... + end; + + Task('Loading...',1000); + Q('task|10|Experiencing an enigmatic and foreboding night vision'); + Q('task|6|Much is revealed about that wise old bastard you''d underestimated'); + Q('task|6|A shocking series of events leaves you alone and bewildered, but resolute'); + Q('task|4|Drawing upon an unexpected reserve of determination, you set out on a long and dangerous journey'); + Q('task|1|Loading...'); + + PlotBar.Max := 27; + with Plots.Items.Add do begin + Caption := 'Prologue'; + StateIndex := 0; + end; + + Timer1.Enabled := True; +end; + +procedure TForm1.WinSpell; +begin + Add(Spells,PickLow(fSpellList),1); +end; + +procedure TForm1.WinEquip; +var + pos, qual, plus, attrib, attribmax: Integer; + name: String; + stuff, better: TStrings; +begin + qual := Max(Random(GetI(Traits,'Level')),Random(1+GetI(Traits,'Level'))); + pos := Random(Equips.Items.Count); + case pos of + 0: begin stuff := fWeapons; better := fOffenseAttrib; end; + 1: begin stuff := fShields; better := fDefenseAttrib; end; + else begin stuff := fArmors; better := fDefenseAttrib; end; + end; + if qual > stuff.Count - 1 then + qual := stuff.Count - 1; + name := stuff[qual]; + plus := GetI(Traits,'Level') - qual; + attribmax := Min(plus, better.Count); + while (plus > 0) and (attribmax >= 0) and Odds(1,2) do begin + attrib := Random(attribmax+1); + name := better[attrib] + ' ' + name; + Dec(plus, attrib); + attribmax := Max(plus, attrib - 1); + end; + if plus <> 0 then name := IntToStr(plus) + ' ' + name; + if plus > 0 then name := '+' + name; + + Put(Equips, pos, name); +end; + +procedure TForm1.WinStat; +begin + Add(Stats, Stats.Items[Random(Stats.Items.Count)].Caption, 1); +end; + +procedure TForm1.WinItem; +begin + Add(Inventory, 'Special Item', 1); +end; + +procedure TForm1.CompleteQuest; +var + lev, i: Integer; +begin + with QuestBar do begin + Position := 0; + Max := 50 + Random(100); + end; + with Quests do begin + if Items.Count > 0 then begin + Items[Items.Count-1].StateIndex := 1; + case Random(4) of + 0: WinSpell; + 1: WinEquip; + 2: WinStat; + 3: WinItem; + end; + end; + lev := GetI(Traits,'Level'); + for i := lev downto 1 do + if Odds(1,3) then + Inc(lev,RandSign()); + if lev > MonsterMax then lev := MonsterMax - Random(2); + if lev < 1 then lev := 1; + with Items.Add do begin + fQuest := Pick(fMonsters[lev]); + Caption := 'Exterminate ' + Plural(Split(fQuest,0)); + StateIndex := 0; + MakeVisible(false); + end; + Width := Width - 1; // trigger a column resize + end; +end; + +function Rome(var n: Integer; dn: Integer; var s: String; ds: String): Boolean; +begin + Result := (n >= dn); + if Result then begin + n := n - dn; + s := s + ds; + end; +end; + +function IntToRoman(n: Integer): String; +begin + while Rome(n, 1000, Result, 'M') do ; + Rome(n, 900, Result, 'CM'); + Rome(n, 500, Result, 'D'); + Rome(n, 400, Result, 'CD'); + while Rome(n, 100, Result, 'C') do ; + Rome(n, 90, Result, 'XC'); + Rome(n, 50, Result, 'L'); + Rome(n, 40, Result, 'XL'); + while Rome(n, 10, Result, 'X') do ; + Rome(n, 9, Result, 'IX'); + Rome(n, 5, Result, 'V'); + Rome(n, 4, Result, 'IV'); + while Rome(n, 1, Result, 'I') do ; +end; + +procedure TForm1.CompleteAct; +begin + PlotBar.Position := 0; + with Plots do begin + Items[Items.Count-1].StateIndex := 1; + PlotBar.Max := 60 * 60 * (10 + 5 * Items.Count); // 10 hrs + 5/act + Items.Add.Caption := 'Act ' + IntToRoman(Items.Count); + end; +end; + +procedure TForm1.Task(caption: String; msec: Integer); +begin + Kill.SimpleText := caption + '...'; + with KillBar do begin + Position := 0; + Max := msec; + end; +end; + +procedure TForm1.Add(list: TListView; key: String; value: Integer); +begin + Put(list, key, value + GetI(list,key)); +end; + +function TForm1.Get(list: TListView; key: String): String; +begin + Result := Get(list, IndexOf(list,key)); +end; + +function TForm1.Get(list: TListView; index: Integer): String; +begin + with list.Items.Item[index] do begin + if SubItems.Count < 1 + then Result := '' + else Result := SubItems[0]; + end; +end; + +function TForm1.GetI(list: TListView; key: String): Integer; +begin + Result := StrToIntDef(Get(list,key),0); +end; + +function TForm1.GetI(list: TListView; index: Integer): Integer; +begin + Result := StrToIntDef(Get(list,index),0); +end; + +function TForm1.Sum(list: TListView): Integer; +var + i: Integer; +begin + Result := 0; + for i := 0 to list.Items.Count - 1 do + Inc(Result, GetI(list,i)); +end; + +procedure PutLast(list: TListView; value: String); +begin + if list.Items.Count > 0 then + with list.Items.Item[list.Items.Count-1] do begin + if SubItems.Count < 1 + then SubItems.Add(value) + else SubItems[0] := value; + end; +end; + +procedure TForm1.Timer1Timer(Sender: TObject); +begin + with KillBar do begin + if Position >= Max then begin + if Kill.SimpleText = 'Loading...' then Max := 0; + + with ExpBar do if Position >= Max then begin + Position := 0; + Max := (Max * 3) div 2; + Add(Traits,'Level',1); + end else + Position := Position + KillBar.Max div 1000; + + if Plots.Items.Count > 1 then + with QuestBar do if Position >= Max then begin + CompleteQuest; + end else if Quests.Items.Count > 0 then + Position := Position + KillBar.Max div 1000; + + with PlotBar do if Position >= Max + then CompleteAct + else Position := Position + KillBar.Max div 1000; + + Dequeue(); + end else with KillBar do + Position := Position + Integer(Timer1.Interval); + end; +end; + +procedure TForm1.M(level: Integer; name, spoor: String); +begin + fMonsters[level].Add(name + '|' + IntToStr(level) + '|' + spoor); +end; + +procedure TForm1.S(name: String); +begin + fSpellList.Add(name); +end; + +procedure TForm1.Aa(var list: TStrings; item: String); +begin + if list = nil then + list := TStringList.Create; + list.Add(item); +end; + +procedure TForm1.FormCreate(Sender: TObject); +var + i: Integer; +begin + QuestBar.Position := 0; + PlotBar.Position := 0; + KillBar.Position := 0; + ExpBar.Position := 0; + Encumbar.Position := 0; + fSpellList := TStringList.Create; + for i := 1 to MonsterMax do + fMonsters[i] := TStringList.Create; + M(1,'Wasp','Stinger'); + M(1,'Rat','Whiskers'); + M(1,'Bunny','Ear'); + M(1,'Moth','Dust'); + M(1,'Beagle','Collar'); + M(1,'Midge',''); + M(2,'Ostrich','Beak'); + M(2,'Billy Goat','Beard'); + M(2,'Bat','Wing'); + M(2,'Koala','Heart'); + M(3,'Wolf','Paw'); + M(3,'Gnome','Skull'); + M(3,'Kobold','Penis'); + M(3,'Whippet','Collar'); + M(4,'Orc','Shoe'); + M(5,'Uruk','Boot'); + M(6,'Tiger','Stripe'); + M(7,'Lich','Mascara'); + M(8,'Mummy','Chapeu'); + M(9,'Vampire','Pancreas'); + M(10,'Slime','Slime'); + M(11,'Giant','Pants'); + M(12,'Bugbear','Fang'); + M(13,'Owlbear','Tuft'); + M(14,'Basilisk','Gallstone'); + M(15,'Cockatrice','Cock'); + M(16,'Dragon','Scale'); + + S('Slime Finger'); + S('Rabbit Punch'); + S('Hastiness'); + S('Good Mood'); + S('Sadness'); + S('Seasick'); + S('Magnetic Orb'); + S('Invisible Hands'); + S('Revolting Cloud'); + S('Aqueous Humor'); + S('Spectral Miasma'); + S('Zymarx''s Wild Illusion'); + S('Clever Fellow I'); + S('Clever Fellow II'); + S('Nestor''s Sweeping Concept'); + S('Holy Batpole'); + S('Braingate'); + S('Eye of the Troglodyte'); + S('Curse Name'); + S('Vitreous Humor'); + S('Roger''s Grand Illusion'); + S('Clomdor''s Plastic Window'); + S('Covet'); + S('Astral Miasma'); + S('Spectral Clamshell'); + S('Acrid Hands'); + S('Animate Tunic'); + S('Ursine Armor'); + S('Holy Roller'); + S('Curse Family'); + S('Infinite Confusion'); + + Aa(fShields, 'Pie Plate'); + Aa(fShields, 'Buckler'); + Aa(fShields, 'Tower Shield'); + + Aa(fArmors, 'Lace'); + Aa(fArmors, 'Macrame'); + Aa(fArmors, 'Burlap'); + Aa(fArmors, 'Canvas'); + Aa(fArmors, 'Flannel'); + Aa(fArmors, 'Chamois'); + Aa(fArmors, 'Pleathers'); + Aa(fArmors, 'Leathers'); + Aa(fArmors, 'Chainmail'); + Aa(fArmors, 'Platemail'); + + Aa(fWeapons, 'Stick'); + Aa(fWeapons, 'Broken Bottle'); + Aa(fWeapons, 'Shiv'); + Aa(fWeapons, 'Bowie Knife'); + Aa(fWeapons, 'Claw Hammer'); + Aa(fWeapons, 'Andiron'); + Aa(fWeapons, 'Hatchet'); + Aa(fWeapons, 'Crowbar'); + Aa(fWeapons, 'Longiron'); + Aa(fWeapons, 'Zip Gun'); + Aa(fWeapons, 'Broadsword'); + Aa(fWeapons, 'Longsword'); + Aa(fWeapons, 'Poleax'); + Aa(fWeapons, 'Bandyclef'); + + Aa(fDefenseAttrib, 'Studded'); + Aa(fDefenseAttrib, 'Banded'); + Aa(fDefenseAttrib, 'Gilded'); + Aa(fDefenseAttrib, 'Festooned'); + Aa(fDefenseAttrib, 'Holy'); + Aa(fDefenseAttrib, 'Cambric'); + Aa(fDefenseAttrib, 'Fine'); + Aa(fDefenseAttrib, 'Impressive'); + + Aa(fOffenseAttrib, 'Polished'); + Aa(fOffenseAttrib, 'Pronged'); + Aa(fOffenseAttrib, 'Steely'); + Aa(fOffenseAttrib, 'Bloodied'); + Aa(fOffenseAttrib, 'Dancing'); + Aa(fOffenseAttrib, 'Invisible'); + Aa(fOffenseAttrib, 'Vorpal'); +end; + +procedure TForm1.SpeedButton1Click(Sender: TObject); +begin + KillBar.Position := KillBar.Max; +end; + +procedure TForm1.RollCharacter; +begin + if mrOk = Form2.ShowModal then ; + with Form2 do begin + Put(Traits,'Name',Name.Text); + Put(Traits,'Race',Race.Items[Race.ItemIndex]); + Put(Traits,'Class',Klass.Items[Klass.ItemIndex]); + Put(Traits,'Level',1); + Put(Stats,'STR',STR.Tag); + Put(Stats,'CON',CON.Tag); + Put(Stats,'DEX',DEX.Tag); + Put(Stats,'INT',INT.Tag); + Put(Stats,'WIS',WIS.Tag); + Put(Stats,'CHA',CHA.Tag); + Put(Stats,'HP Max',Random(8) + CON.Tag div 6); + Put(Stats,'MP Max',Random(8) + INT.Tag div 6); + Put(Equips,'Weapon','Sharp Stick'); + Put(Inventory,'Gold',0); + end; +end; + +procedure TForm1.FormShow(Sender: TObject); +begin + RollCharacter; +end; + +procedure TForm1.Button1Click(Sender: TObject); +begin + Add(Traits,'Level',1); +end; + +end. diff --git a/chaff/Unit3.dcu b/chaff/Unit3.dcu new file mode 100644 index 0000000..221e75f Binary files /dev/null and b/chaff/Unit3.dcu differ diff --git a/chaff/Unit3.ddp b/chaff/Unit3.ddp new file mode 100644 index 0000000..cdc0ee8 Binary files /dev/null and b/chaff/Unit3.ddp differ diff --git a/chaff/Unit3.dfm b/chaff/Unit3.dfm new file mode 100644 index 0000000..07c27a9 --- /dev/null +++ b/chaff/Unit3.dfm @@ -0,0 +1,1781 @@ +object Form3: TForm3 + Left = 389 + Top = 159 + AlphaBlendValue = 100 + BorderIcons = [] + BorderStyle = bsNone + BorderWidth = 2 + ClientHeight = 443 + ClientWidth = 291 + Color = clRed + TransparentColorValue = clWhite + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Icon.Data = { + 0000010001002020000000000000A80800001600000028000000200000004000 + 0000010008000000000080040000000000000000000000000000000000000000 + 0000000080000080000000808000800000008000800080800000C0C0C000C0DC + C000F0CAA60004040400080808000C0C0C0011111100161616001C1C1C002222 + 220029292900555555004D4D4D004242420039393900807CFF005050FF009300 + D600FFECCC00C6D6EF00D6E7E70090A9AD000000330000006600000099000000 + CC00003300000033330000336600003399000033CC000033FF00006600000066 + 330000666600006699000066CC000066FF000099000000993300009966000099 + 99000099CC000099FF0000CC000000CC330000CC660000CC990000CCCC0000CC + FF0000FF660000FF990000FFCC00330000003300330033006600330099003300 + CC003300FF00333300003333330033336600333399003333CC003333FF003366 + 00003366330033666600336699003366CC003366FF0033990000339933003399 + 6600339999003399CC003399FF0033CC000033CC330033CC660033CC990033CC + CC0033CCFF0033FF330033FF660033FF990033FFCC0033FFFF00660000006600 + 330066006600660099006600CC006600FF006633000066333300663366006633 + 99006633CC006633FF00666600006666330066666600666699006666CC006699 + 00006699330066996600669999006699CC006699FF0066CC000066CC330066CC + 990066CCCC0066CCFF0066FF000066FF330066FF990066FFCC00CC00FF00FF00 + CC009999000099339900990099009900CC009900000099333300990066009933 + CC009900FF00996600009966330099336600996699009966CC009933FF009999 + 330099996600999999009999CC009999FF0099CC000099CC330066CC660099CC + 990099CCCC0099CCFF0099FF000099FF330099CC660099FF990099FFCC0099FF + FF00CC00000099003300CC006600CC009900CC00CC0099330000CC333300CC33 + 6600CC339900CC33CC00CC33FF00CC660000CC66330099666600CC669900CC66 + CC009966FF00CC990000CC993300CC996600CC999900CC99CC00CC99FF00CCCC + 0000CCCC3300CCCC6600CCCC9900CCCCCC00CCCCFF00CCFF0000CCFF330099FF + 6600CCFF9900CCFFCC00CCFFFF00CC003300FF006600FF009900CC330000FF33 + 3300FF336600FF339900FF33CC00FF33FF00FF660000FF663300CC666600FF66 + 9900FF66CC00CC66FF00FF990000FF993300FF996600FF999900FF99CC00FF99 + FF00FFCC0000FFCC3300FFCC6600FFCC9900FFCCCC00FFCCFF00FFFF3300CCFF + 6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF + 66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7 + D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080 + 80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF005852 + 5151515151515258585858585858585858585858585858585852515151515852 + 51514A4A4A515152585858585858585858585858585858585251514B4A4B5852 + 514B4A4A4A4B51515258585858585858585858585858585251514B4A4A4A5852 + 150F4A4A4A4A4B5151515152525251525252525252525151514A0F154A4B580B + 0E0E0B4A4A4A4A4A5151515151515151515151515151514B4B0B0E0E0B512311 + 15220E514A4A4A4A4A4A4A4B4A4A4A4A4A4A4A4A4A4A4A4A4A0F22143D234313 + 22431151514A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A11432213435822 + 23296710294B4A4A44442244154422441544224444444A221012292322585858 + 58514443151D4B4A442215221522152215221522154B0E151544515252585858 + 5879294A43140D4A22150D0E2243100E1D0D2215220D14434A03525258585858 + 585852514A224A430E0E1443220D111543140E0E4344224A4A51515258585858 + 585858514B1514220E2243150D444444444322222214154B4B4B515258585858 + 585858585174151D4A434A4A15104422234A434A1D15742A4A4B515258585858 + 585858585222444B457422224B44224B222274454B4422524A4B515258585858 + 58585858510A4B4C3F4C44EA4A22224A6D444C3F4C4B0A4A4A51515258585858 + 585858580D15294B4523ECC8C44A4AE946EC23454B29150D4A51515858585858 + 58585858444A4A234AAEC8FCFCA7E9F9F946AE44234A4A435151525858585858 + 58585858232244224AEFA7FCFC62F9F9F946EF4A224422235151525858585858 + 585858584B434A110C4A8DA862F9F9F9698D4A0C114A43295151525858585858 + 5858585852222210514A8D46F9F9F962A78D4A51104322524B51525858585858 + 58585858524B0C034AEB46F9F9F962FCFCA7F84A030C4B4A4A51515258585858 + 5858585251514B4AED46F9F9F9E3A8FCFCFCA7ED4A4B4A4A4A4B515152585858 + 58585851514B4AED46F9F9F9E3F7F7E6FCFCFCA7ED4A4A4A4A4A4B5152585858 + 585852514B4AEB46F9F9F9E3ED525892E6FCFCFCA7EB4A4A4A4A4A4B51525858 + 585852514A6D46F9F9F9E3ED5858585892E6FCFCFCA76D4A4A4A4A4A51515858 + 5858514B14B5F047F9E3F7585858585858B5E6FCC8DDB5144A4A4A4A51515858 + 585852AE09F3F3BCE3B55858585858585858B5D0DDF3F309AE4A4B4B51515858 + 5858BCF4F5F4F4F4075858585858585858585807F4F4F4F5DEBC515151525858 + 58991BF5F5F2DDB6585858585858585858585858B6DDF3F5F51B995152585858 + 5892B51909B592585858585858585858585858585892B509DDB5925858585858 + 58720909ECEB58585858585858585858585858585858F8EC0909725858585858 + 58F78DAEED5858585858585858585858585858585858581CAE8D925858580000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000} + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 291 + Height = 443 + Align = alClient + BevelInner = bvLowered + Color = clWhite + TabOrder = 0 + object Image1: TImage + Left = 2 + Top = 15 + Width = 287 + Height = 195 + Align = alTop + AutoSize = True + Center = True + Picture.Data = { + 07544269746D617042CA0000424D42CA00000000000036040000280000000101 + 0000C300000001000800000000000CC60000C40E0000C40E0000000100000000 + 000000000000000080000080000000808000800000008000800080800000C0C0 + C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020 + E00000400000004020000040400000406000004080000040A0000040C0000040 + E00000600000006020000060400000606000006080000060A0000060C0000060 + E00000800000008020000080400000806000008080000080A0000080C0000080 + E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0 + E00000C0000000C0200000C0400000C0600000C0800000C0A00000C0C00000C0 + E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0 + E00040000000400020004000400040006000400080004000A0004000C0004000 + E00040200000402020004020400040206000402080004020A0004020C0004020 + E00040400000404020004040400040406000404080004040A0004040C0004040 + E00040600000406020004060400040606000406080004060A0004060C0004060 + E00040800000408020004080400040806000408080004080A0004080C0004080 + E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0 + E00040C0000040C0200040C0400040C0600040C0800040C0A00040C0C00040C0 + E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0 + E00080000000800020008000400080006000800080008000A0008000C0008000 + E00080200000802020008020400080206000802080008020A0008020C0008020 + E00080400000804020008040400080406000804080008040A0008040C0008040 + E00080600000806020008060400080606000806080008060A0008060C0008060 + E00080800000808020008080400080806000808080008080A0008080C0008080 + E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0 + E00080C0000080C0200080C0400080C0600080C0800080C0A00080C0C00080C0 + E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0 + E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000 + E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020 + E000C0400000C0402000C0404000C0406000C0408000C040A000C040C000C040 + E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060 + E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080 + E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0 + E000C0C00000C0C02000C0C04000C0C06000C0C08000C0C0A000F0FBFF00A4A0 + A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF + FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F60808F6F6F6F6F6F6 + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F60808F6F6 + F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F608080707070707 + 0808F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F608080707 + 0707070808F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608080707F7 + F7F7F7F707070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F60807 + 0707F7F7F7F7F707070808F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807 + 07F7F7A4A4A4A4A4F7F707070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6 + 08070707F7F7A4A4A4A4A4F7F7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 + F60807F7F7A4A49B9B9B9BA4A4A4F7F7070708F6F6FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF6F6080707F7F7A4A4A49B9B9B9BA4A4F7F70708F6F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFF6F60807F7F7A4A45B5B5B5B5B5B9B9BA4A4F70708F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF6F60807F7A4A49B9B5B5B5B5B5B5B9BA4F7F70708F6F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFF6F60707F7A4A49BA4529B9B5252525B9BA4A4F70708F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFF60807F7A4A49B9B9B529B9B9B52525B9BA4F70707F6F6 + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFF6F60807F7A49B9BA4A4075B49525B5B525B9BA4F70708 + F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF6F608F7F7A4A45B495B07A4A49B5B5B525B9BA4 + F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFF6F607F7F75BA4070708F7A4004952A45B5B9B + 9BA4F70708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F608F7A49BA4524900A4F7080707A452 + 9B525B9BA4F707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608079B5200A4F7A4A4F7A4005352 + F7A45B9B9BA4F7F7070808F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080808 + 08F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080808 + 08F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080807F75BA4F7525300A4F7A4 + A4F7A40052525B9BA4F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608F79B4949F7F74A52A4 + 9B49A4A4A4F75B9B5B9BA4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFF6F608 + 07070707070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608 + 07070707070708F6F6FFFFFFFFFFFFFFFFFFFFF6F6F6080707F7A45BF7A4A4A4 + 499BA4524AF7F749495B5B9BA4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608F7A4A4A408 + A4A4F7A45252F7A407F79B5B5B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFF + F6F6080707F7F7F7F7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F6F6080707F7F7F7F7070708F6F6FFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B + F707A4F75252A4F7A4A408A4A4A4A49BA4F70708F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F607 + 52F708F70708F60752A4F7A4F7A4495252525B9BA4A4A4F7070708F6F6F6F6FF + FFFFFFFFF6F60707F7A4A4A4A4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF6F60807F7A4A4A4A4F70707F6F6FFFFFFFFFFF6F6F6F6080707F7A4 + A49B5249A4F7A4F7A45207F60807F708F75207F7A4F70708F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF6FF0749A407F708F6F65B5BF7F70707A452525B52525B5B9BA4A4F7F70707 + 08F6F6F6F6F6F6F6F60807F7A4A49B9BA4F70708F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6F60807F7A4A49BA4A4F70708F6F6F6F6F6F6F6F6080707 + F7F7A4A49B9B5252A40707F7F75B5BF6F608F707A44907F6F7F707F6F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFF6A4A452A4A408F6F7499BF7A4F6F6A4A407529B5B525B5B5B9B + A4A4F70707070808F6F6F6080807F7F7A4A49B9BA4F70708F6F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF6F60807F7A4A49B9B9BA4F7070808F6F6F60808 + 070707F7A4A49BA4A45207A4A4F6F6A4F79B49F7F608A4A452A4A4F6070708F6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF65B07A4525BA4A452529BA45B07F7A4F7F75B495B52 + 9B5B525B9BA4A4F7F7F707070707070707F7A45B529B9B9BA4F70708F6F6FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F7A49B525BA45B5BA4A4F7070707 + 07070707F7F7F7A4A4A4525B495BF7F7A4F7075BA49B5252A4A45B52A4075B08 + F607F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF69B08F7A49B524949F70707F7A4A4F7A4A4 + F7A5529B5B9B5B525B5B9BA4A4A4F7F7F70707F7F7F752499B52A49B9BF70708 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F79BA4529B49529B5B9BA4 + A4F7F70707F7F7F7A4A4A4A49B5B9B52A5F7A4A4F7A4A4F70707F74949529BA4 + F7085B070808F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4A407F7079B0052A407F6F69C + A4F707070807A407F6A4529B9B525B5B9BA4A4A4A4A4F7A4A49B49A4F707F75B + 9BF70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A45BF707F7A449 + 5B5B5B9BA4A4A4F7F7A4A4A4A4A4A45BA4F607A407080707F7A49CF6F607A452 + 009B07F707A49B0708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF075208A4075B49F79B + 9BF607A4A4F70708F7A49B0708A4005BA45B52525B5B9B9B9BA4A49BA349A4F7 + 07F60852A4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6075B08 + F607F7A4495B525B5B9B9BA4A49B9B9B9BA45B00A408079BA4F70807F7A4A407 + F69B9BF7495B07A40852A40708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF652F70749 + 499BF7F79B07A49BA40707F7F7F7A4075B52A4A49B5B9B5B525B525B5B5B5B9B + 52525B9BF7F7A49BA4F7F70708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6 + F608A4A4F7F79B5B525253525B5B5B5B9B5B9B9B5B9BA4A4525B07A4F7F7F707 + 07A49BA4079BF7F79B494907F7520708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 07525B005B07A407F75B525B0707F7F7080752529BF70707A452A45B5B9B9B52 + 525252525BA4A40708A4529B9BA4F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF6F6F60807F75BA40807A4A45B52525252529B9B5B5BA452A40707F79B5252 + 0708F7F707075B525BF707A4075B005B52F70708F6FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF607F79BA4F69B07075200F707F70707079B9BA407F6F7A4F7F7F75B + 9BA452529B5B52005B9BA4F707A49B5B5B9BA4F7F7070708F6F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF6F6F6080707F7F7A4A407F7A49B5B00525B9B5252A49B5BF7F7F7A4F7 + F607A49B9B070707F707F7005207079BF6A49BA4F70708F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFF6FF0752F6F7A4A44952529BF707F7A4F7070708089BF7 + 07A4A407F6F6A49B52A4529B9BF7F7079B52A4525B5B9BA4A4F707070808F6F6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF6F6F608080707F7A4A4A4529B07F7F79B9B52A4529BA4F6F607A4 + A407F79B08080707F7A4F707F79B525B49F7A4F7F65207F60708F6F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF652F7F652A4F70708A45252A4F7070807 + 08F69B9BF7F707F6F6F707F7F7F7F7F707F6FF089B49A49B52525B9BA4A4F7F7 + 070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A4A4A4499B08FFF607F7F7F7F7F707 + F7F6F607F7F79B9BF608070807F7A45252A40707F7A452F6F752F6F608F6F6F6 + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA449A4A408F6F6FFFFF7525B + F7F7070808F79BF707F6F607F7F70807A4A4F7A4F7F7F7F7A407A49B9B52525B + 5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49BA49BA407A4F7F7F7F7A4F7 + A4A40708F7F707F6F607F79BF7080807F7F75B52F7F6F6FFFFF6A4A449A4FFF6 + F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65BA408F6FFFFFF + FFFF08F7A49BF7F7F7F7F708F607F7F707F7A45B525B5B9CA4F79B525BF7F752 + 499B5B52525B9B9BA4A4F707070808F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF6F6F608080707F7A4A4A4A49B4952F7F75B529B + F7A49C5B5B525BA4F707F7F707F608F7F7F7F7F79BA4A408F6FFFFFFFFFFF6A4 + 5BF6FFF6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6FF + FFFFFFFFFFFFFFFFF6075B52F707F608A4F707F7F7A45B52A4A408F7F6F60752 + 5B5BA49BA4A45B5B5B52525B9BA4A4F7F7070708F6F6F6F6FFFFFFFFF6F6F6F6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF6F6F6F6F6FFFFFFFFF6F6F6F6080707F7F7A4A49B9B5BA4A49BA4 + 5B5B5207F6F6F708A4A4525BA4F7F707F7A408F607F7525BF708F6F6FFFFFFFF + FFFFFFF6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFF08A45B07A4A4A40708079BA407F60708A49C + 9B07F6F7F7F608FFF6FF0752525B5B525B5B9BA4A4F7F7070708F6F6F6F6F6F6 + F6F6F6F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFF6F6F6F6F6F6F6F6F6F6F6F6F6080707F7F7A4A4A49B525207 + FFF6FF08F6F7F7F6079B9CA40807F607A49B070807A4A4A4075BA408F6F6FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF607A4A45BF7F608079BF7F6F7 + F7525252A49B07A407F6FFF6FFF6F6F6A452529B5B525B9B9BA4A4F7F7070708 + 08080808080707070808F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF6F608080707070808080808080707F7F7A4A4A4A45B + 52A4F6F6F6FFF6FFF607A4079BA4525252F7F7F6F79B0708F6F75BA4A407F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6A49B070708 + A4F7F6F79BF75207F6A4A49BA407F7F7F79BF707F6075B525B5B525B5B9BA4A4 + A4F7F707070707070707F707070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFF6F608070707F707070707070707F7F7A4A4A4 + 9B9B525B07F607F79BF7F7F707A49BA4A4F60752F79BF7F6F7A40807079BA407 + 08F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 + 9BA4A407F79B0807A4525249F7A49B5B9BA449A49BF75A9BAC07F6075B525B52 + 525B5B9BA4A4A4F7F7F7F7F7F7F7A4F7F7F70708F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807F7F7F7A4F7F7F7F7F7F7F7A4 + A4A49B9B525B07F607AC9B5AF79BA449A49B5B9BA4F7495252A407089BF707A4 + A45B0708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF6F700A40752F7F69B52A49B495B07F70708F79B080707079BA4F708 + F6F7525B9B52525B5B9B9BA4A4A4A4A4A4A4A4A4A4F7070708F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6080707F7A4A4A4A4A4A4A4 + A4A4A49B9BA45B52F7F608F7A49B070707089BF70807F7075B499BA4529BF6F7 + 5207A400A4F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF089B9B085BA4F6F75B0807A49B07F7A4F608A4A4F707F6 + F6F7A4A4070808A4529B5B52525B5B5B9B9B9B9B9B9B9B9BA4A4F70708F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807F7F7A49B9B + 9B9B9B9B9B9B9B9B9B52A4080807A4A4F7F6F607F7A4A408F6A4F7079BA40708 + 5BF7F6A45B089B52A4F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF6F607499BF79B0708A4A4A4529BA4A452F708F7 + 5B9B070807F608F7A4F7F7F608A45B9B5B5B5252525B5B9B9B9B9B9BA4A4F707 + 07F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60707A4 + A4A4A49B9B5B5B5B5B5B9B5BA408F6F7F7A4F708F60708079B5BF708F752A4A4 + 9B52A4A4A408079BF79B49A49BA4F707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608070052F752F7FF0807A49B9B9BF7 + 07F70708F75BF7F707F6F6F607F7A4A407F608A49B5B5B5B9B9B5252005BA4A4 + A4A4F70707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 + F607F7A45B005B529B9B5B5B5B9BA408F607A4A4F707F6F6F607F7F75BF70807 + F707F79B9B9BA40708FFF752F75200A49BA4F70708F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608075B4907F7A40708F7A4 + 07F6A4A40708F70708F7A4A407F6F608F6F607A4A4F708FF08F7A45B5B005249 + 529BA45BA4F7F70707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF608F75BA49B524952005B5BA4F708FF08F7A4A407F6F608F6F607A4A4 + F70807F70807A4A4F607A4F70807A4F707495BA49BA4F70708F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F607F75B52F7FFA4 + 9C5249F7F6FF0852A4A4A4A4F70707F7F7F707F6F608F6F6F7A4A407F6FFF6F6 + 070707F6F79C07A45BF7F7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFF6F6085BA4079CF7F6070707F6F6FFF607A4A4F7F6F608F6F607 + F7F7F70707F7A4A4A4A45208FFF6F749529CA4FFF7525BA45B9BA4F707F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608079B52 + 9B5B08F65B5B529BFFF6FFA4A4085B9BA4A4F707F7F7F7F707F6F6F6F608F7A4 + F708F6FFF6F7F75BA452F7075A9BF7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF6F6A45A07F752A45BF7F7F6FFF608F7A4F708F6F6F6 + F607F7F7F7F707F7A4A49B5B08A4A4FFF6FF9B525B5BF6085B9B525B9B9BA4F7 + 0708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 + 08F75252A4A4A4075BA4075207F6F6079BA4A4F707F7A4A40707F7F7A4F70808 + 08F6F607A5A407F7F7A4004949525BF7A300F7F7070708F6F6F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF6F6F60800A4F79B5B494900A4F7F707A4A507F6 + F6080808F7A4F7F70707A4A4F707F7A4A49B07F6F6075207A45B07A4A4A45252 + 9B9BA4F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF608F79BA49B07F7A4495BF6A4A4FFF6F6F752A407080807F7A5F70707 + 07F7A4F70708F6F6F6A45BA40707A45252525B9B9B52A4A4F7F7070808F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60808F752A4A4A49B5B53A40707A45B + A4F6F6F60807F7A4F7070707F7A5F707080807A452F7F6F6FFA4A4F65B49A4F7 + 079BA49BA4A3A4F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFF6089B9B08F7F7F6A452A49BA452F7FFFFF69B49F708F6F608 + 07F7A407070707F7F7F7F70708F70708FFF607F7A45B52525B9BA4A4A4F7F707 + 0708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7A4A4A49B9BA4F707 + F6FF0807F70807F7F7F7F707070707A4F70708F6F608F7499BF6FFFFF752A49B + A452A4F6F7F7089B5BA4F7F707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF08F7499B0708A452A4F70808A4525BF708FFF69C9B + F708F6F6F607F7A40707070707EEF7A4A4A4F707F7FFFF0807F7A45B52525B5B + 9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4 + F70708FFFFF707F7A4A4A4F7EE0707070707A4F707F6F6F608F79B9CF6FF08F7 + 5B52A408F607A452A408079B49A4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08525B5BA4F60752F707F6F6F608F7A4A4 + 07F6F6F7A4F70708F6F608F7A4F7080707080708079BF7F7F7EEF6FFF608F7A4 + 9B5B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B + A4A4A4F708F6FFF6EEF7F7F79B07080708070708F7A4F708F6F60807F7A4F7F6 + F607A4A4F707F6FFFFFF075207F6A45B5B52F707F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65BF7A4A4F7F79B07F6F6F6FF + FFFF08F79BA407FF08A4A4F707F6F6F6F79BF708080707080707F7A40789DB07 + F6FFF607F7A4A45252525B9B9BA4A4F7070708F6F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7A4 + A49B9BA4A4F707F6FFF607DB8907A4F707070807070808F79BF7F6F6F607F7A4 + A408FF07A49BF707F6FFFFFFFFFFF69BF7F7A4A4F75B07F6F6F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A4F7A45B52F7F6 + F6F6FFFFFFFFFFFF079B9BF7F6F607A4A40708F6F607A4A407F60807F707A407 + DB040489E408F6FFF607A4A45B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707 + F7F7A4A49B9BA4A407F6FFF608E4890404DB07A407F70708F607A4A407F6F608 + 07A4A407F6F6F79B9B07F6F6FFFFFFFFFFFFFF07525BA4F7A4F7F6F6F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F7A4A4 + 52A5F6F6FFFFFFFFFFFFFFFFFFF6F79BA4F7F6F6A49BA40708F608A452F708F7 + F7F7F707040404040489EDF6FFFF08F7A59B5B52525B5B9BA4A4F7F7070708F6 + F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F608 + 0707F7F7A4A49B9BA4A5F708FFFFF6ED89040404040407F7F7F7F708F752A408 + F60807A49BA4F6F6F7A49BF7F6F6FFFFFFFFFFFFFFFFFFF6F752A4A4F7F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF6A452A4F6FFFFFFFFFFFFFFFFFFFFFFFFFF07A45BA407F6079B9BF707F608 + A49BA4A407A407D2040404040404049207F6FFF607F7A49B5252525B5B9BA4A4 + F7F7070808F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6 + F6080807F7F7A4A49B9B9BA4F707F6FFF6079204040404040404D207A407A4A4 + 9BA408F607F79B9B07F607A45B9B07F6FFFFFFFFFFFFFFFFFFFFFFFFF6A452A4 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF07F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6079B9BF708F6F7 + 9BA4F708F6F7A4F7F7F7ED040404040404040404070707F6FFF607F7A45B5252 + 525B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF6F6F6080707F7F7A4A49B9BA4F707F6FFF6070707040404040404040404ED + F7F7F7A4F7F608F7A49BF7F608F79B9B07F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFF607FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F7 + 5BA4F7F6F6F7A4A4F7AC0707A407890404040404040404E4F6E589E408F6FFF6 + 07F7A45B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF6F6F6080707F7F7A4A49B9BA4F707F6FFF608E489E5F6E40404040404 + 0404048907A40707ACF7A4A4F7F6F6F7A45BF708F6FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF6F7A4A407FFF6A4A44907F707E40404040404040404890808890404 + 92EDF6FFFF08F7A49B5B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFF + FFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4A4F708FFFFF6ED92040489080889 + 0404040404040404E407F70749A4A4F6FF07A4A4F708F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFF08F7F7F708FF079BF7F708890404040404040404E4F6 + E404040404049307F6FFF607F7A49B5252525B9B9BA4A4F707070808F6F6FFFF + FFFFFFFFFFFFFFFFF6F608080707F7A4A49B9B9BA4F707F6FFF6079304040404 + 04E4F6E404040404040404048908F7F79B07FF08F7A4A407F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08F75B07FFA4A4F7F707DB0404040404 + 049208078904040404040404DB07F6FFF607F7A45B52525B5B9BA4A4F7F70707 + 08F6F6F6FFFFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4F707F6FFF607DB0404 + 040404040489070892040404040404DB07F7F7A4A4FF075BA4F708F6F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A49BF60752F6A4A407ED + 9204040404ED08DB04040404040404048908ED08FFFFF607F7A45B52525B5B9B + A4A4F7F7070708F6F6F6F6F6F6F6F6080707F7F7A4A49B9BA4F707F6FFFF08ED + 08890404040404040404DB08ED0404040492ED07A4A4F65207F69B5BF70708F6 + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64907F65B9B + 07F7A4F707E48904DBF6ED04040404040404040407089292EDF6FFF608F7A49B + 5252525B5B9BA4A4F7F7070708F6F6F6F6080707F7F7A4A49B9B9BA4F708F6FF + F6ED92920807040404040404040404EDF6DB0489E407F7A4F7079B5BF60749F7 + 0707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69B + 52FFF74907F607F7A4F707DC0707920404040404040404DBF6ED0404049B07F6 + FFF607F7A49B5252525B9B9BA4A4F70707070808070707F7A4A49B9B9BA4F707 + F6FFF6079B040404EDF6DB0404040404040404920707DC07F7A4F707F60749F7 + FF5252F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF0700070849F7F6FFF607F7A40707070404040404040404890708920404 + 040404E408F6FFF607F7A45B52525B5B9BA4A4F7F7F70707F7F7F7A4A49B9BA4 + F707F6FFF608E40404040404920807890404040404040404070707A4F707F6FF + F6F749080700F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF08499B9B529B0707F6FF08F7A4A407ED89040404040404E4F6 + E40404040404040489ED07FFFF0807F79B5B52525B5B9BA4A4A4F7F7A4A4A49B + 9BA4F70708FFFF07ED8904040404040404E4F6E404040404040489ED07A4A4F7 + 08FFF608079B529B9B490708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF0700A4F7A4F7F70707F6FFF607F7A4F707E4890404 + 04890807890404040404040404E408EDF6FFF607F7A49B5252525B5B9B9BA4A4 + 9B9B9B9BA4F707F6FFF6ED08E404040404040404048907088904040489E407F7 + A4F707F6FFF60708F7F7A4F7A40007F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF075BA4F707F7A49BA40708F6FFF607F7A4 + F707DB0404EDF6DB040404040404040492080704DB07F6FFF607F7A49B525252 + 5B5B5B5B5B9BA4F707F6FFF607DB040708920404040404040404DBF6ED0404DB + 07F7A4F707F6FFF60807A49BA4F707F7A45B07F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07F7A452F75B5BF7F6F6F6F6 + F6FFF607A5A40707DB08ED040404040404040404EDF6DB040489E408F6FFF607 + F7A45B525252525BA4F707F6FFF608E4890404DBF6ED040404040404040404ED + 08DB0707A4A507F6FFF608F6F6F6F75B5BF752A4F707F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6FFF6 + FFFFFFF6F6F6FFFF08F7A4F70708DB040404040404040492F6EE040404040492 + EDF6FFFF08F7A49B52529BA4F708FFFFF6ED920404040404EEF6920404040404 + 040404DB0807F7A4F708FFFF0808F6FFFFFFF6FFF6F6F6F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFF6F6F6FFF607F7A4F707E4810404040404040708920404 + 04040404049207F6FFF607F7A4A4F707F6FFF607920404040404040492080704 + 040404040481E407F7A4F707F6FFF608F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FFF607F7A40707DB04040404E4F6 + E5040404040404040404070707F607A4F707F6FFF60707070404040404040404 + 04E5F6E404040404DB0707A4F707F6FFF608F6F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607A4A407ED92 + 04890707890404040404040404E4F6E492A4F707F6FFFF08E489E4F6E4040404 + 0404040404890707890492ED07A4A407F6FFF608F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FFFF08 + F7A4F707EDE5F6DB04040404040404048908079BA4F708FFFFF6ED9204048907 + 08890404040404040404DBF6E5ED07F7A4F708FFFF0808F6FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F6F6F6FFF607F7A4F70708890404040404040404E5F7A4F707F6FFF607930404 + 040404DBF6E50404040404040404890807F7A4F707F6FFF608F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFF6F6F6FFF607F7A4F707DB0404040404049BA4F707F6FFF607E4 + 0404040404040489070892040404040404DB07F7A4F707F6FFF608F6F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FF08EEA4A407ED920404899BF70708FFFF + F6ED089204040404040404049208ED0404040492ED07A4A4EE08FFF60707F6F6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60808FFF608F7A4F707E49BA4F708 + F6FFF6ED92920807040404040404040404EDF6DB0489E407F7A4F708F6F607F7 + 070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F608070708FFF607F7A4A4 + F707F6FFF6079B040404EDF6DB0404040404040404890707DC07F7A4F707F6FF + 07F7A4A4F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7F7F708 + 08A4F707F6FFF607E48904040404890807890404040404040404070707A4A507 + F6FF08F79B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4 + A49B9BA4A5EE08FFFFF607DB04040404040404E4F6E404040404040489ED07A4 + A4F708FFF607A45B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080807F7 + F7A4A49B9B9BA4F707F6FFF6EDDB08ED040404040404048907089204040489E4 + 07F7A4F707F6FFF6F607F7A49B5252525B5B9BA4A4F7F7070808F6F6F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F608 + 0707F7F7A49B9B9BA4F707F6FFF607DB0404EDF6DB04040404040404DBF6ED04 + 04DB07F7A4F707F6FF07ED07F6FFF607F7A49B5252525B9B9BA4F7F7070708F6 + F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6 + F6080707F7F7A4A49B9BA4F707F6FFF608E48904040492080789040404040404 + 04ED08DBEE07A4A407F6FF08E4920489E408F6FFF607F7A45B52525B5B9BA4A4 + F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F6F6F6080707F7F7A4A49B9BA4A4F708FFFF08ED92040404040404E4F6E40404 + 0404040404DB0807F7A4F708FFF60792890404040492ED08FFFF08F7A49B5B52 + 525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFF6F6F608080707F7A4A49B9B9BA4F707F6FFF607ED040404040404040489 + 0708890404040481E407F7A4F707F6FF0807920404040404040404ED07F6FFF6 + 07F7A49B5252525B5B9BA4A4F707070808F6F6F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4F707F6FFF607DB07078904040404 + 04040404DBF6E4040404DB0707A4F707F6FF07ED08DC04040404040404048907 + 07DB07F6FFF607F7A45B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4F707F6FFFF08E48904DBF6ED + 04040404040404048907089292ED07A4A407F6FFF6EDDB080789040404040404 + 0404EDF6DB0489E408FFFFF607F7A45B52525B5B9BA4A4F7F7070708F6F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9B9CA4F708FFFFF6ED920404 + 0489EE0892040404040404040492F6EE07F7A4F708FFF607F707EEF692040404 + 04040404049208EE8904040492EDF6FFFF08F7A49B5252525B5B9BA4A4F7F707 + 0708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF6F608080707F7A4A49B9B9BA4F707F6FFF60793 + 0404040404049208078904040404040404E407F7A4F707F6FFF60807F7A4F707 + E404040404040404890708920404040404049307F6FFF607F7A49B5252525B9B + 9BA4A4F707070808F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4F707F6FFF6 + 0707890404040404040404EDF6DB0404040404DB0707A4F707F6FFF60708F6FF + F607F7A40707DB0404040404DBF6ED0404040404040404890707F6FFF607F7A4 + 5B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4F70708 + FFF608070708DB040404040404040492080789040492ED07A5A4EE08FFF60808 + F6F6F6F6F6FF08EEA4A507ED920404890708920404040404040404DB08070708 + F6FF0807F7A45B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9B9BA4 + F708F6FF08070707070707890404040404040404E4F6E489E407F7A4F708F6FF + 0807F6F6FFFFFFF60808FFF608F7A4F707E489E4F6E404040404040404048907 + 070707070708FFF608F7A49B5252525B5B9BA4A4F7F7070708F6F6F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7A4A49B9B + 9BA4F707F6FFF60707070707070708E4040404040404040404070707F7A4F707 + F6FFF60708F6FFFFFFFFFFFFFFF608F6FFF607F7A4F707070704040404040404 + 0404E40807070707070707F6FFF607F7A49B5252525B9B9BA4A4F7070708F6F6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4 + A49B9BA4F707F6FFF6070707070707070707070892040404040404049207F7A4 + A507F6FFF60708F6FFFFFFFFFFFFFFFFFFFFFFF608F6FFF607A5A4F707920404 + 0404040404920807070707070707070707F6FFF607F7A45B52525B5B9BA4A4F7 + F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7 + F7A4A49B9BA4A5EE08FFFF08070707070707070707070707ED040404040489ED + 07A4A4F708FFF60807F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFF60808FFFF08F7A4 + A407ED890404040404ED07070707070707070707070708FFFF08EEA59B5B5252 + 5B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F60808 + 07F7F7A4A49B9B9BA4F707F6FF080707070707070707070707070707089B0404 + 89E407F7A4F707F6FF0807F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608 + F6FFF607F7A4F707E48904049B08070707070707070707070707070708FFF607 + F7A49B5252525B5B9BA4A4F7F7070808F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6 + F6080707F7F7A4A49B9BA4F707F6FFF607070707070707070707070707070707 + 070704DB0707A4F707F6FFF60708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF608F6FFF607F7A40707DB0407070707070707070707070707070707 + 0707F6FFF607F7A45B5252525B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F6F6F6080707F7F7A4A49B9BA4F707F6FFF60707070707070707070707070707 + 0707070707080707A4A407F6FFF60708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFF0808F6FFF607A4A40707080707070707070707070707 + 0707070707070707F6FFF607F7A45B52525B5B9BA4A4F7F7070708F6F6F6FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFF6F6F6080707F7F7A4A49B9BA4A4F708FFFF080707070707070707070707 + 07070707070707070707F7A4F708FFFF0807F6F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60808FFFF08F7A4F70707070707070707 + 0707070707070707070707070708FFFF08F7A49B5B52525B5B9BA4A4F7F70707 + 08F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF6F6F608080707F7A4A49B9B9BA4F707F6FFF6070707070707070707 + 070707070707070707070707F7A4F707F6FFF607F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607F7A4F70707 + 07070707070707070707070707070707070707F6FFF607F7A49B5252525B9B9B + A4A4F707070808F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4F707F6FFF607070707070707 + 0707070707070707070707070707F7A4F707F6FFF60708F6FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF6 + 07F7A4F7070707070707070707070707070707070707070707F6FFF607F7A45B + 52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9BA4F707F6FFF60707070707 + 07070707070707070707070707070707F7A4A407F6FFF60808F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F60808F6FFF607A4A4F7070707070707070707070707070707070707070707F6 + FFF607F7A45B52525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFF6F6F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFF6F6F6080707F7F7A4A49B9B9CA4F708FFFF080707 + 07070707070707070707070707070707070707A5A4F708FFFF0807F6F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFF60808FFFF08F7A4A50707070707070707070707070707070707 + 0707070708FFFF08F7A49B5252525B5B9BA4A4F7F7070708F6F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFF6F6F6F6F6F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608080707F7A4A49B9B9BA4F707F6FFF6 + 070707070707070707070707070707070707070707F7A4F707F6FFF60708F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607F7A4F70707070707070707070707 + 07070707070707070707F6FFF607F7A49B5252525B9B9BA4A4F707070808F6F6 + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FFFFFFFF000000FFF6F6F60808 + 08F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6080707F7F7A4A49B9BA4F707F6 + FFF6070707070707070707070707070707070707070707F7A4F707F6FFF60708 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607F7A4F70707070707 + 07070707070707070707070707070707F6FFF607F7A45B52525B5B9BA4A4F7F7 + 070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F6FFFF000000FFF6 + F6080707070808F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807F7F7A4A49B9BA4F7 + 0708FFF6080707070707070707070707070707070707070707EEA4A4EE08FFF6 + 0808F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60808F6FF08EEA4A4 + EE070707070707070707070707070707070707070708F6FF0807F7A45B52525B + 5B9BA4A4F7F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F60808F6F6F6FFFF00 + 0000FFF6F608070707070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60807F7F7A49B9B + 9BA4F707F6FF08070707070707070707070707070707070707070707F7A4F707 + F6FF0807F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6 + FFF607F7A4F707070707070707070707070707070707070707070708FFF607F7 + A49B5252525B5B9BA4F7F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F60807070708F6 + F6FFFF000000FFF6F6080707F7F7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807F7 + A49B9BA4F707F6FFF6070707070707070707070707070707070707070707F7A4 + F707F6FFF60708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF608F6FFF607F7A4F70707070707070707070707070707070707070707 + 07F6FFF607F7A49B5252525B9BA4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707 + 070707F6F6FFFF000000FFF6920707F7F7F7F7F70708F6F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 + F60807F7A4A4F707F6FFF6070707070707070707070707070707070707070707 + F7A4A507F6FFF60708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFF608F6FFF607A5A4F70707070707070707070707070707 + 07070707070707F6FFF607F7A45B525B9BA4F70708F6F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608 + 0707F7F7F70707F6F6FFFF000000FFFF91920707F7A4A4F7F70707F6F6F6FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF6F608F7A4A5EE08FFFF08070707070707070707070707070707070707 + 070707A4A4F708FFF60807F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF60808FFFF08F7A4A4070707070707070707 + 07070707070707070707070708FFFF08EEA59C5B9BA4F70708F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F6F6080707F7F79B9B0707F6F6FFFF000000FFFF9A899207F7A4A4A4A4F70708 + F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6F7A4F707F6FFF607070707070707070707070707070707 + 0707070707F7A4F707F6FFF607F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607F7A4F7070707 + 070707070707070707070707070707070707F6FFF607F7A4A4A4F70708F6FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF6F6080707F7A49B89A40708F6F6FFFF000000FFFFE4898991F7A4A4A4 + A4A4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFA4F707F6FFF60707070707070707070707070707 + 07070707070707F7A4F707F6FFF60708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607 + F7A4F7070707070707070707070707070707070707070707F6FFF607F7A40707 + F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFF6F60807F7F7A49B8989F707F6F6FFFFFF000000FFFF08898989 + 89A4A49B9BA4F70707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F708FF070707070707070707070707 + 070707070707070707F7A4A407F6FFF60708F6F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0808F6FFF607A4A4F7070707070707070707070707070707070707070707FF08 + F7A40708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF6F60707F7A4928989890708F6F6FFFFFF000000FFFF + FF07898989899B9B9BA4A4F707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A407FF0807070707070707 + 070707070707070707070707A5A4F708FFFF0807F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF60708FFFF08F7A4A5070707070707070707070707070707070707 + 0708FF07A40708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF60807F7A4928989899B0708F6FFFFFFFF00 + 0000FFFFFFFFE489898989929BA4A4F707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07F708FF070707 + 0707070707070707070707070707F7A4F707F6FFF60708F6FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFF607F6FFF607F7A4F7070707070707070707070707 + 0707070707FF08F7F707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60807F79189898992F707F6F6FF + FFFFFF000000FFFFFFFF088989898989919BA4F707F6F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7EE + F6F60707070707070707070707070707F7A4F707F6FFF60708F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F6FFF607F7A4F7070707070707 + 0707070707070707F6F6EEA40708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608F78989898989A407 + 08F6FFFFFFFFFF000000FFFFFFFFF692898989898992F70708F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF08A507FF070707070707070707070707F7A4A407F6FFF60808F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0808F6FFF607A4A4F7 + 070707070707070707070707FF07A5F707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E489898989 + 8992F70708F6FFFFFFFFFF000000FFFFFFFFFFA4898989898989F70708F6FFFF + FFFFFFF6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFF7F7F6F607070707070707070707F7A4F708F6FF0808F6FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FF + F608F7A4F707070707070707070707F6F6F7A40708F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF689 + 89898989899BF70708F6FFFFFFFFFF000000FFFFFFFFFFED898989898989F707 + 08F6FFFFFFFFF6F6F6F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFF6A407FF0807070707070707F7A4F707F6FFF608F6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFF6F6F6FFF607F7A4F70707070707070708FF07A4F708F6F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF07898989898989A4F707F6F6FFFFFFFFFF000000FFFFFFFFFF0789898989 + 9B89A40708F6FFFFFFF6F6F608080808F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F6FF0707070707F7A4F707F6FFF6 + 08F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6F6F6FFF607F7A4F70707070707FFF6F7A50708F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6FFFF + FFFFFFFFFFFFF5898989898991F7F707F6F6FFFFFFFFFF000000FFFFFFFFFFF6 + 89898989A4A4F70708F6FFFFFFF6F6080707070708F6F6F6FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6FFFFFFFFF6A407FFF6070707A4A4F708 + FFF60808F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6FFFF08F7A4A4070707F6FF07A40708F6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6 + F6F6F6F6FFFFFFFFFFFFEDE49A89898992F70708F6FFFFFFFFFFFF000000FFFF + FFFFFFF6918989899BA4F70708F6FFFFFFF6F60807070707070708F6F6FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F6F6F6FFFF07F708FF07A4A4 + F707F6FF0808F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FFF607F7A4A407FF08F7 + F708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF6F6F60808F6F6F6FFFFFFFFFFF6F69B8989899AF70708F6FFFFFFFFFFFF00 + 0000FFFFFFFFFFF69B8989899BA4F70708F6FFFFFFF6F6080707F7F7F7070708 + F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F60808070808F6F6F6FFFFF7F7 + F608F707F6FFF608F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FFF607F7 + 08F6F7A408F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFF6F60808070708F6F6FFFFFFFFFFF6F692898989A3F70708F6FFFFFF + FFFFFF000000FFFFFFFFFFFFE48989899AA4F70707F6F6FFFFFF92080707F7F7 + F7F7F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807070707070708F6 + F6F608A40707F6FFF608F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 + 08F6FFF60707A407F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6F60807070708F6F6FFFFFFFFFFF60891898989A4F70708 + F6FFFFFFFFFFFF000000FFFFFFFFFFFFED8989899AA4F7F707F6F6FFFFFF8992 + ED07F7A4A4A4F7F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFF6F60807F7F7F7F7 + F7070708F6F6F6F7F708FF08F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF6F6FF08F7F7F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF6080707F7070708F6FFFFFFFFFFF60889898989 + F7F707F6F6FFFFFFFFFFFF000000FFFFFFFFFFFF0789898992A4F7F707F6F6FF + FFFF9A8989A4F7A4A4A4A4F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFF6F60707 + F7A4A4A4A4F7F70708F6F6F6A408F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF6F608A5F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60707A4F7F70708F6FFFFFFFFFFF607 + 89898992F70707F6F6FFFFFFFFFFFF000000FFFFFFFFFFFFF689898989A4A4F7 + 0708F6FFFFFFE48989899BA4A4A4A4F70707F6F6FFFFFFFFFFFFFFFFFFFFFFFF + F60807F7A4A4A4A4A4F7F7070708F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608079A89F7F70708F6FFFFFF + FFFFF6ED89898992F70708F6F6FFFFFFFFFFFF000000FFFFFFFFFFFFF6918989 + 89A4A4F70708F6FFFFFFFFA3898989919BA4A4F70707F6F6FFFFFFF6F6F6F6F6 + FFFFFFFFF608F792929BA4A4A4F7F7F7070708F6F6FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6089B8989F7F70708 + F6FFFFFFFFF6F6A48989899AF70708F6FFFFFFFFFFFFFF000000FFFFFFFFFFFF + F69A8989899BA4F70708F6FFFFFFFFFF9B8989898992A4F70708F6F6F6F6F6F6 + F6F6F6F6F6FFFFFFF6ED8989898989A3F7F7F7F7F7070708F6F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608918989 + A4F70708F6FFFFFFFFF6F69B898989A3F70708F6FFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFE48989899BA4F70708F6F6FFFFFFFF07898989898992F70708F6F6 + F6F6F60807070708F6F6F6FFF69B8989898989899B070707F707070708F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6 + 07898989A4F70708F6FFFFFFFFF60892898989A4F70708F6FFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFED8989899AA4F7F707F6F6FFFFFFFFF6898989898989F7 + 0708F6F6F608070707F707070708F6F6F69A898989898989899A070707070707 + 08F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFF608A4898991A4F70708F6FFFFFFFFF60889898989F7F707F6F6FFFFFFFF + FFFFFF000000FFFFFFFFFFFFFF0789898992A4F7F707F6F6FFFFFFFFF6928989 + 899189F70708F6F6F60807F7F7A4F7F7070708F6F69A89898991928989899207 + 070707070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFF60892898991A4F70708F6FFFFFFFFF60789898992F7F707F6F6 + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFF689898991A4A4F70708F6FFFFFFFF + F69B898989F7A4F70708F6F6F607F7F7A4A4A4A4F70708F6F69A898989F7F7ED + 9A89899B070707070707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFF6F60789898991A4F70708F6FFFFFFFFF6ED89898992F7 + 0708F6F6FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFF689898989A4A4F70708F6 + FFFFFFFFFFE4898989A4F7F70708F6F60807F7A4A49BA4A4F7F70708F6A38989 + 9BF70707089B8989E40707F7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFF608F789898991A4F70708F6FFFFFFF6F6E489 + 89899AF70708F6FFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFF69A898989A4A4 + F70708F6FFFFFFFFFF07898989A4F7F70708F6F6089B89899A9B9BA4A4F70707 + 08E48989A307070708F69B8989ED07F7F70707F6F6FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 + F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFF6089B89898991A4F70708F6FFFFFF + F6F6A38989899BF70708F6FFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFA489 + 89899BA4F70708F6FFFFFFFFFF088989899BF7F70707F6F6F78989898991A4A4 + F7F7F70707ED89899B0707070708F692899207F7F7070708F6F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFF6F6F6F6F6F6F6F6FFFFFFFFFFFFFFFFFFFFF6F6089189898991A4F70708 + F6FFFFFFF6F692898989A4F70708F6FFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFF78989899AA4F70707F6F6FFFFFFFFF68989899AF7F7070708089B898989 + 898991A4F7F7F70707078989920707070708F6078989A407F7F70707F6F6FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF6F60808070708F6F6FFFFFFFFFFFFFFFFFFFFF6F6078989898991 + A4F70708F6FFFFFFF60891898989F7F707F6F6FFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFF0789898992A4F7F707F6F6FFFFFFFFF69A898992F7F7F7070808 + 9289898989898991F7F7F7F707079A8989070707070708F69B899107F7F7F707 + 08F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFF6F608070707070708F6F6FFFFFFFFFFFFFFFFFFF608A489 + 89898991A4F70708F6FFFFFFF60889898989F7F707F6F6FFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFF689898992A4A4F70708F6FFFFFFFFF69B898989F7F7 + F707080889898989898989899A07F7F7F707ED8989ED07F7F7070708ED8989A4 + F7F7F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFF6F60807F7F7F7F70707F6F6FFFFFFFFFFFFFFFFFF + F6089A8989898991A4F70708F6FFFFFFF6ED89898992F70707F6F6FFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFF689898989A4A4F70708F6F6FFFFFFFFE489 + 8989F7F7F70708088989898992A49A8989A4F7F7F707079A899B07F7F7F7F707 + 07918991F7F7F70707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60707F7A4A4F7F70708F6FFFFFFFFFF + FFFFFFF6F607898989898992F7F707F6F6FFFFF6F6F78989899AF70708F6FFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFF69A898989A4A4F7F70708F6F6F6 + FFFF07898989A4F7F7070708898989899BA4F7918991F7F7F7F707078989F7F7 + A4A4A4F7F79B89899BA4F7F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6FFFFF6F60807F7A49BA4A4F70708F6FF + FFFFFFFFFFFFFFF608F789898989899AF70707F6F6FFFFF6F6A48989899BF707 + 08F6FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFF69B8989899BA4A4F707 + 0708F6F6F6F6088989899BF7F7070708898989899BA4F7E489899BF7F7F70707 + A4899BA4A4A4A4A4A49B898992A4A4F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F60808F6F6F6F6F6F607079A89899BF707 + 07F6F6FFFFFFFFFFFFFFFFF6089B89898989899AF70707F6F6FFFFF6F69A8989 + 89A3F70708F6FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFE48989899B + A4A4A4F7F7070708F6F6F68989899BF7F7070708898989899BA4F707918989F7 + F7F7F707079289A4A49B9B9B9B9B8989899BA4F70708F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707070708F6F6F608079B8989 + 8992F70708F6F6FFFFFFFFFFFFFFF6F6089189898992899BF70708F6F6FFFFF6 + 0892898989A4F70708F6FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFF07 + 89898992A4A4A4A4F7F7070708F6F692898992F7F7F70708918989899BA4F707 + 9B89899BF7F7F7F7F7928992A45B5B5B5B5B8989899AA4A4F707F6F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F608070707F7F7F70707080807 + F78989898989ED08F6F6FFFFFFFFFFFFFFFFF6F607898989919A899BF70708F6 + F6FFFFF60889898989F7F707F6F6FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFF0789898992A4A4A4A4A4F7F70708F6F69B898991F7F7F7070892898989 + 9BA4F707ED898991F7F7F7F79B89898989925B5B5B5B898989929BA4F70708F6 + F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6080707F7F7F7F7F7F7 + 07070707928989898989ED08F6FFFFFFFFFFFFFFFFFFF608A4898989929A899B + F70708F6F6FFFFF60789898992F70707F6F6FFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFF689898989A49BA4A4A4A4F7F70708F6E4898989F7F7F70707 + 928989899BA4F70707898989A4F7F7F792898989898989925B5B898989919BA4 + F7070708F6F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FFF6F6F6080707F7F7A4 + A4A4A4F7F70707F789898989898908F6FFFFFFFFFFFFFFFFFFFFF6089A898989 + 9B9B899BF70708F6F6FFFFF6F789898992F70708F6FFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFF692898989A489919BA4A4F7F7070708ED898989A4 + F7F70707A48989899AA4F707079A89899AA4A4F79B8989898989898989918989 + 8989A4A4F7F70707070808F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F6F6F6080707 + F7F7F7A4A4A4A4A4F707079B89898989F707F6F6FFFFFFFFFFFFFFFFFFF6F607 + 89898989A49B899B070708F6F6FFF6F6A48989899BF70708F6FFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFF69B8989899B898989A4F7F7F7F7070807 + 898989A3A4F70707A48989899AA4F70707A4898989A4A4F7A489898989898989 + 898989898989A4A4F7F7F7070707070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F60808F6F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F608080808080808 + 08080707F7A39189899BA4A4F7F70791898989A40707F6F6FFFFFFFFFFFFFFFF + FFF608F789898992F79B899B070708F6F6FFF6F69B898989A3F70708F6FFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFE48989899B89898989F7F7F7 + F70707088989899BA4F7F707ED89898992A4F7F707ED898989A4A4F7F7898989 + 89898989898989898989A4F7F7F7F7F7F7F7F7070708F6F6FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F60807070707 + 0708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F608070707 + 07070707070707F79189898989899BA4F7F7F789898991F70708F6FFFFFFFFFF + FFFFFFFFFFF6089B8989899BF79B899B070708F6F6FFF60892898989A4F70708 + F6FFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFED8989899A898989 + 8992F7F7F7F7070792898992A4A4F707ED89898992A4F7F707088989899AA4A4 + F792898989898989898989898989F7070707F7F7F7A4A4F7F70708F6F6FFFFFF + F6F6F6F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6080707 + 07F7F7F7070708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F60807 + 07F7F7F7F7F7F7070707A48989898989898992F7F7F7A48989899BF70708F6FF + FFFFFFFFFFFFFFFFF6F60791898989A4F79B899B070708F6F6FFF60889898989 + F7F707F6F6FFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF07898989 + 92A49B898989A4F7F7F7070792898991A4A4F7F70789898989A4A4F707089189 + 8991A4A4F7A3898992918989898989898989ED9BF70707F7A4A4A4A4F70708F6 + F6F6F6F6F6F6080808F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F608 + 070707F7F7F7F7F7F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6 + F6080707F7F7A4A4A4F7F70707A4898989918989898991F7F7F79B898989A4F7 + 0708F6FFFFFFFFFFFFFFFFFFF6F60789898989F7F79289A4070708F6F6FFF607 + 89898992F7F707F6F6FFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + F689898991A4A49B898991F7F7F7F7079B898989A4A4A4F70792898989A4A4F7 + 070792898989A4A4F7F789899BF7A492898989898989ED9A8991A3F7A4A4A4A4 + F70708F6F6F6F6F608070707070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6 + 0808070707F7F7A4A4A4A4F7F70707F6F6FFFFFFFFFFFFFFFFFFFFF6F6F6F6F6 + F6F6F6F6080707F7A4A4A4A4A4F7F7F7F78989899B0707A4898989F7F7F79A89 + 8989F7F707F6F6FFFFFFFFFFFFFFFFFFF608A48989899AF7079289F7070708F6 + F6F6F6ED89898992F70708F6F6FFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFF691898989A4A4F7918989A4F7F7F7F7A48989899BA4A4A4F79A8989 + 899BA4F70707A48989899BA4F7F7A4899BF7A4A49B928989898908F789898989 + 929BA4A4F70708F6F6F6F60807F7F7F7F7F7070708F6F6F6FFF6F6F6F6F6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6 + F6080807070707F7F7A4A4A4A4A4A4F7F70708F6F6FFFFFFFFF6F6F6F6F6F6F6 + F60808080808F6080707F7A4A49B9A9BA4F7F707F789899A070707F7898989A4 + F7F792898989F7F707F6F6FFFFFFFFFFFFFFFFF6F60892898989A3F7079289F7 + 070708F6F6F6F6A48989899AF70708F6FFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFF69A8989899BA4F7A4898991F7F7F7F7A4898989929B9BA4 + A49B8989899BA4F70707F78989899AA4A4F7F79291A4A4A4A4A4A49B9AF7F6F6 + 0791898989898992F70708F6F6F60807F7F7A4A4A4A4F7070708F6F6F6F6F6F6 + F6F6F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFF6F608070707F7F7F7A4A4A4A3928989A307070708F6F6F6FFF6F6F6F6F6 + 08080808070707070707080707F7F79A8989898989A40707A3898907070707A4 + 898989A4F7F789898992F70707F6F6FFFFFFFFFFFFFFFFF6F60789898989F707 + 079289F7070708F6F6F6F69B898989A3F70708F6FFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFE48989899BA4F7F7898989A4F7A4F7A4898989 + 915B5B9BA49B8989899AA4F7F707ED89898992A4A4F7F7A4899BA4A4A4A4F7F7 + 070708F6F6ED898989898989A40708F6F6F607F7F7A49B9BA4A4A4F707070808 + F608080707070808F6F6F6FFFFFFFFFFF6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFF6F6080707F7A4A4A4A49B9289898989899B0808F6F6F6F6F6F6 + 080807070707070707F7F7F707070707F7AC91898989898989A40808A489E407 + 0707F79B898989F7F7F78989899BF70708F6FFFFFFFFFFFFFFFFFFF608F78989 + 8992F707079289F7070708F6F6F60892898989A4F70708F6FFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFF78989899AA4F7F79B898992F7A4A4 + A4898989895B5B5B9BA489898991A4F7F7070789898989A4A4F7F7918989919B + A4A4F7F7F7070708F608898989899291A40708F6F60807F7A49B9B9B9BA4A4F7 + F707070807070707F70707070808F6F6F6F6F6F6F6F6F6F6F6F6F6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF6F60807F7F7A4A49B928989898989898989A4F6F6F6 + F6F6F6080707F7F7F7F7F7F7F7F7F7F707070707F791898989898989899AF6F6 + 9B89070707F7F792898991F7F7A48989899BF70708F6FFFFFFFFFFFFFFFFFFF6 + 089B8989899BF707079289F7070708F6F6F60889898989F7F707F6F6FFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFF0789898992A4F7F7F78989 + 89A4A4A4A491898989925B5B9B9B91898989A4F7F7070789898989A4A4A49B89 + 8989898992A4F7F7F7F70708F6F689898989A4F7F70708F6F608F79189898992 + 9BA4A4F7F70707070707F7F7F7F7F7F7070708F6F6F6F608080807080808F6F6 + F6FFFFFFFFFFFFFFFFFFFFFFFFFF07ED0807F7A4A49289898989898989919A89 + E4FFFFFFF6F60807F7F7A4A4A4A4A4A4A4A4A4F7F70707F7928989898989929A + 899BF6F69A9A0707F7F7A489898992F7F7A4898989A4F70708F6FFFFFFFFFFFF + FFFFF6F60791898989A40707089289F7070708F6F6F60789898991F7F707F6F6 + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFF689898991A4A4 + F7078989899BA49B9B89898989899B9B899B92898989A4A4F70707928989899B + A4A49289898989898991F7F7F7F7070708F69A898989A4A4F70708F6F6078989 + 8989898989A3F7F70707070707F7F7F7F7F7F7F7F70707080808080707070707 + 070708F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFE4899B07F79B8989898989898991 + F708F60807FFFFFFF6F60707F7A4A4A4A4A4A4A49B9B92920707079B89898989 + 910708F60808FFF6929B07F7F7A4928989899BF7079B898989A4F70708F6FFFF + FFFFFFFFFFFFF6F6ED89898989F70707089289F7070708F6F6F6ED89898992F7 + 0708F6F6FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFF68989 + 8989A4A4F7079A898991A49B8989898989898989899B9B8989899BA4F7F70792 + 8989899BA4A4928989898991898992F7F7F7F7070708A3898989A3A4F70708F6 + F6A48989898989898989A4070707070707F7F7F7F7F7F7F7F7F7070707070707 + F7F7F7F7F707070708F6F6FFFFFFFFFFFFFFFFFFFFFF07898989898989898989 + 89899BF7070708F6F6FFFFFFF60807F7A4A49B9BA49B9291898989920707F789 + 89898991ED08F6F6FFFFF6F689A407F7A49A89898989A407079A898989F7F707 + F6F6FFFFFFFFFFFFFFFFF608A489898992F70708089289F7070708F6F6F6E489 + 89899AF70708F6FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFF69A898989A4A4F707A4898989A49B89898989898989898992A48989899BF7 + F7F7079B8989899AA4A4928989899BF79B89899BF7F7F7F70708A48989899BA4 + F70708F60892898989898989898989F7080808EDA392929BA4F7F7F7F7F7F707 + 070707F7F7F7F7F7F7F7F70707F6F6FFFFFFFFFFFFFFFFFFFFF6F60789898989 + 8989898991A3A4F7F7070708F6F6FFF6F60707A39189919AA4928989898992A4 + 07079B89898989A4070708F6F6F6F6F691F7F7A4928989898989070707928989 + 92F7F70708F6FFFFFFFFFFFFFFF6F60892898989A3F70708088989F7070708F6 + F6F69B8989899BF70708F6FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFF69B8989899BA4F707F78989899BA489898989899289898992A492 + 898992F7F7F7F79B89898992A4A492898989A4F7F7918989F7F7F7F70707ED89 + 89899BA4F7070808088989898989899189898989F6F6F689898989898991F707 + F7F7F7F7F707F7F7F7F7F7F7F7F7F7F70708F6F6FFFFFFFFFFFFFFFFF6F60807 + F78989898989899AA4A4A4A4F7F70707F6F6F6F6F6079B8989898989A49A8989 + 8992F7F707079189898992F7070708080808080807F7A49189898989899A0707 + 0789898992A4F70708F6FFFFFFFFFFFFFFF6F60789898989F70708F608898907 + 070708F6F6F692898989A3F70708F6FFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFE48989899AA4F7F70789898992A49B898989899B9189 + 8991F7A3898989F7F7F7F7A389898991A4A492898989F7F7F7A489899AF7F7F7 + 0707078989899AA4F70707080789898989899BF707F78989F5F6F68989898989 + 898989A4F7F7F7F7F7F7F7A39BA4F7F7F7F7F7F7F70708F6FFFFFFFFFFFFFFF6 + F60807F7F7A48989899AF7F7F7F7F7A4A4F7F70708F6F6F608F7898989898989 + 929B8989899BF7F707F789898989A4F7F70707070707070707F7918989898989 + 89ED0708078989899AA4F70708F6F6FFFFFFFFFFFFF608F789898992F70708F6 + F6898907070708F6F60891898989A4F70708F6FFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFF0789898992A4F7F70792898989A4A4A49289 + 899AA489898907F7898989A4F7F7F7A489898991A4F79A898989A4F7F7F78989 + 89A4F7F7F7070889898992A4F7F70708ED8989898991A4F707080892E4F6F69A + 8989A4ED9A898989A4F7A4F7A391898989898992F7F7F7F7F70708F6F6FFFFFF + FFFFFFF6F60707F7A49B9289898989899AA4F7A4A4A4F7F70708F6F608918989 + 8989898989898989899BF7F7079B89898992A4A4F7F7F7F7F7F7F7F7F7918989 + 898989899B070808F78989899BA4F7F70708F6FFFFFFFFFFFFF6089B8989899B + F70708F6F6898907070708F6F60889898989F7F707F6F6FFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFF0789898992A4A4F7079A898989A3 + A4F7F792898908898989F7079A89899BF7F7A49B89898991A4F79B898989A4F7 + F7079289899AA4F7F7070791898991A4F7F70708ED898989899BA4F7F7070808 + 07F6F69A89E4080808E4898989A4A4A49B8989898989898989F7F7F7F7F707F6 + F6FFFFFFFFFFF6F60807F79B8989898989898989898992A4A4A4A4F70708F6F6 + F5898989898991898989898989A4F7F707928989899BA4A4A4A4A4A4A4F7F7F7 + 928989898989899107070707A48989899BA4A4F70708F6F6FFFFFFFFF6F60789 + 898989A40707F6F6F6898907070708F6F6ED89898991F7F707F6F6FFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFF689898989A4A4F707A3 + 8989899BA4F7F7078989089B8989F708ED89898907F7F79B89898989A4F7F789 + 8989A4F7F7F79B898991A4A4F7070792898989A4F7F70708ED898989899BA4A4 + F70707070808F6E48908080807079B898992A4A49B898989A4F789898989A4A4 + A4F70708F6FFFFFFFFFFF6F607F79B89898989898991898989898989A4A4A4F7 + F7070808A489898989A3F7079A89898989A4F707ED898989899BA4A4A4A4A4A4 + A4A4F7A489898989898991ED070707079B8989899B9BA4F70708F6F6FFFFFFFF + F608ED89898989F70708F6F6F6898907070708F6F6F789898992F70708F6F6FF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFF692898989A4 + A4F707A489898992A4A4F707078907078989E4F6F6918989E407F7A389898989 + F7F7078989899BF7F7F7A4898989A4A4F7F7079B898989A4A4F7070807898989 + 89A4A4A4A4F7F707070707A48908080707F7A4898989A4A4A48989F50708079B + 898992A4A4F70708F6FFFFFFFFFFF608079B8989898989E408F6FFED89898989 + 91A4A4A4F70708089289898992F70707F789898992F7F707F789898991A4A4A4 + A4A4A4A4A4A4A492898989898992070707070707928989899B9BA4F70708F6F6 + FFFFFFFFF6089B89898992F70708F6F607898907070708F608A38989899BF707 + 08F6FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFF69A + 8989899BA4F7F7F789898991A4A4F707080707FF9A899AF6F6F589899107079B + 89898991F707089289899AF7F7F7F78989899BA4A4F707A38989899BA4F7F707 + 0889898989A4A4A4A4F7F7F7F7F707F789070707F7A4A48989899BA4A4899B07 + 070707F78989899BA4F70708F6FFFFFFFFF6F607F78989898991ED08F6F6FFFF + 08898989899AA4A4F7070708928989899BF70707ED89898992F7F707A3898989 + 92A4A49B9289898991A4A489898989899B070707070707F7918989919B929BF7 + 0708F6FFFFFFFFF6F608928989899BF707F6F6F6F58989070707080808928989 + 899BF70708F6F6FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFF6A489898992A4A4F7F789898989A4A4F70708F6FFFF088992FFFFFF9A89 + 8992F791898989920707F6A3898992F7F7F7F789898992A4A4F7F7A48989899B + A4A4F7070789898989A4A4A4A4A4F7F7F7F7F7F792F7F7F7A4A49B89898992A4 + A489A3070707F7F791898992A4F70708F6FFFFFFFFF608079189898989A40708 + F6FFFFFFFFE489898989A4A4F707070789898989A4F70707ED89898992F7F707 + 9B898989918989898989898992A4A489898989A4F707E49B070707F789898989 + 89899B0708F6F6FFFFFFFFF6F60789898989AC0708F6F6F6F589890707070808 + 0891898989A3F70707F6F6FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFFF6E4898989929BA4A4F7898989899BA4F70708F6FFFFFFF607FF + FFFFF689898989898989899A08F6F607898989EDF7F7F7898989919BA4A4F7A4 + 89898992A4A4A4F707928989899B9BA4F7F7F7F7A4A4F7F7F7F7F7A4A49B5289 + 898992A4F789A307F7F7A4A491898991A4F70708F6FFFFFFFFF608A489898989 + 9AF707F6F6FFFFFFFF08898989899BA4A4F7070789898989A4F70707F7898989 + 9AF7F7079289898989898989898989899AA49B898989A4F7F7F79A920707F7A4 + 898989898989A407F6F6FFFFFFFFFFF608A489898992F70708F6F6F6F5898907 + 070708080789898989A4A4F707F6F6FFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFF6F6ED898989919B9BA4A4898989899BA4F70708F6FFFF + FFFFFFFFFFFFFF0789898989898989E4F6F6F6FF918989F707F7F7918989899B + A4A4F7F7898989929B9BA4A4F7928989898989899AA3F7F7A4A4A4F7F7F7F79B + 92918989898992F70792A407F7A4A49B89898989A4F70708F6FFFFFFFFF60892 + 89898989A40708F6F6FFFFFFFFF69289898992A4A4F7070789898991A4F70707 + A48989899AF7F707928989898989919B928989899BF79A898992A4A4F7F7919A + 07078989898989898989F708F6FFFFFFFFFFFFF608928989899BF707F6F6F6F6 + ED8992F707070707F7898989899BA4F70708F6FFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFF6F607898989899B9B9BA48989898992A4F707 + 08F6FFFFFFFFFFFFFFFFFFFFED898989898989F6F6FFFFFFED89899B07F7F792 + 898989A4A4A4F7F7898989919B9B9BA4A49B89898989898989898992A4A4A4A4 + F7A389898989898989899207070707F7F7A49B9289898989F70707F6F6FFFFFF + F6F6F58989898992F70708F6FFFFFFFFFFF6A389898989A4A4F7070789898992 + F7F70707A3898989A3F70707928989899BA4F7F79A898989A4F79289899BA4A4 + A4A4899B07F7898989898989898907F6F6FFFFFFFFFFF6F60789898989A40707 + F6F6F6F6ED8992F7F70707079B898989919BA4F70708F6FFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFF6F608898989899B9B9B9B89898989 + 92A4F70708F6FFFFFFFFFFFFFFFFFFFFFF089B898989EDFFFFFFFFFFF6918989 + 0707F791898989A4F7F7F7F7918989899B9B9B9BA49B89898992928989898989 + 8992A4A4A48989898989898989899207070707F79B92898989898989F70708F6 + F6FFFFFFF6F6A4898989899BF70708F6FFFFFFFFFFF6E489898989A4A4F707F7 + 89898992F7F70707A3898989A3F7070789898992A4F7F7F792898989F7079289 + 89A4A4A4A49B89A307079A89898989929BED08F6FFFFFFFFFFFFF608F7898989 + 89F70708F6F6F6F6A48992F7F7F7F7F79A89898992A4A4F70708F6FFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFF607F7898989899B9B9B9B + 8989898991A4F70708F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFF + FFED89899B0807898989898992F7070792898989929B9B9BA4A48989899BF7F7 + F79B89898989A4A49B898989898989898989A3070707A4898989898989898989 + 0708F6F6FFFFFFFFF6F69289898989A4F70708F6FFFFFFFFFFF607898989899B + A4F707F78989899AF7F7070792898989A4F7070789898992A4A4A4F789898992 + 0707928989F7F7F7A49289F707070789898992F7F707F6F6FFFFFFFFFFFFF608 + 9B89898992F70708F6F6F608A38992A4A4F7F7F79289898992A4F7F707F6F6FF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFF9A8989898989 + 92A4A49B8989898991A4F707F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF9A89899292898989898989A4080792898989899BA49292A49189 + 899BF7F7F7F789898989A4A492898989898989898989070808F5898989898989 + 898989920708F6F6FFFFFFFFF6F68989898989A4F707F6F6FFFFFFFFFFF60789 + 8989899BA4F7F7F78989899AF7F7070792898989A4F707088989899BF7A4A4A4 + 8989899B07089A8989F707F79B8989ED08080891898992F70707F6F6FFFFFFFF + FFF6F607918989899BF70708F6F6F6089B8992A4A4A4F7A4898989898992F707 + 08F6F6FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFE489 + 898989898992A4928989898991F70708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF6928989898989898989899BED9A8989898989898989 + 92F79A898992F7F7F7F792898989A4F7928989898989898989E4070707A48989 + 89898989898989E40808F6F6FFFFFFFFF6088989898991A4F707F6F6FFFFFFFF + FFF6F58989898992A4F7F79B8989899BA4F7070791898989A4F707089189899B + F7F7A49B898989F707089A8989899B9A89898908F6F6088989899AF70708F6F6 + FFFFFFFFFFF608ED89898989A4F70708F6F608079B8991A4A4A4F79B89898989 + 8989ED08F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFED8989898989898989898989898992F70708F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69289898989899B9B8991ED8989898989 + 8989898991F7F78989890707F7F792898989A4F79289898989919BA4F5070707 + 079A898989898989898992070708F6F6FFFFFFFFF6F58989898992A4F707F6F6 + FFFFFFFFFFF6088989898992A4F7F79B8989899BA4F7070789898991A4F70708 + 9A89899AF7F7F7918989920708F6ED898989898989899BF6F6F6ED8989899BF7 + 0708F6FFFFFFFFFFF6F608A389898991A4F70708F6F60807928989A4A4F7A389 + 89898989898908F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFF0789898989898989898989898989920708F6F6FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC928989E4FFFFF607F689 + 898989899B898989890707928989F70707F792898989F7F79B898989F7F7F7F7 + F7070707079289898989898992A407070708F6F6FFFFFFFFF6F58989898992A4 + F707F6F6FFFFFFFFFFF6F68989898992A4F7F79B8989899BF7F707F789898992 + F70707F6A48989920707A4898989E408F6F6F68989898989899BF6F6F6F6ED89 + 8989A4F70708F6FFFFFFFFFFF608079289898992A4F70708F6F608078989899B + F7A38989898989898992F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFFF07E492898989898989898989899B08F6F6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF6EC8989899AE48989890708ED89899B0807F789898989F707A4898992 + F7F7F7F7A49BF7F7079289898992A4F7F7F70707070708F6F6FFFFFFF6ED8989 + 89899BA4F707F6F6FFFFFFFFFFF6ED8989898992A4F7F792898989A3F7F707F7 + 8989899BF70708F607898989E4E489898992F6F6F6FFFF088989899A07FFFFFF + F6F6A4898989A4F70708F6FFFFFFFFF6F607F7898989899BA4F70708F6F608F7 + 89898989F79A89898989898992E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6ED9289898989898989EDF6F6FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF08928992F691898907F6F6E48989F508ED898989890708 + F589899207F7F7F7A489F7F7079A898992F7F7F7F7A4A3F7070708F6F6FFFFFF + F6E4898989899BA4F707F6F6FFFFFFFFFFF6ED8989898992A4F7F792898989F7 + F70707A38989899B0707F6F6F6A38989898989898907F6F6FFFFFFFFFFFFFFFF + FFFFFFFFFFF69B898989F70707F6F6FFFFFFFFF60807A489898989A4A4F70708 + F6089B898989898908928989899BEDF6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08A38989898989 + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA389FFED8989E4F6F6F6928989A3928989 + 899208F6F68989890707F7F7A489A40707A489899B07F7F7F79B89F7070708F6 + F6FFFFFFF6E4898989899BA4F707F6F6FFFFFFFFFFF6ED898989899BA4F70789 + 898989070707E489898989A408F6F6F6FFF6928989898989EDF6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFF69A898991070708F6F6FFFFFFF6F608079289898991A4 + F7F70708F6E4898989898992F6899AEDF6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 07ECECF6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07FFFFED89E4FFFFFFF69289 + 8989898989EDF6F6F6E48989F7070707A489F70707ED8989920707F7F79B89F7 + 070708F6FFFFFFFFF6E4898989899BA4F707F6F6FFFFFFFFFFF6ED898989899B + F7F79B898989890708A38989898989EDF6F6F6FFFFFFF6E489899B08FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFF689898992070708F6F6FFFFFFF6F608078989 + 89898992A40708F6F6A38989898989E4F608FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08F6FFFF + FFFFF6928989898992F6F6FFFFF6898989A307ED8989A40808F6898989070707 + F79B89F70708F6F6FFFFFFFFFFED898989899BA4F70708F6FFFFFFFFF6F6A489 + 8989899BF7898989898989F6F69B898989898907F6F6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF078989899B0808F6F6FFFFFFFFF6F6 + 089B898989898989A408F6F6F69A8992ED08FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFED9A9AA3F6FFFFFFFFFFED89898989898989E4F6F6F6E489 + 89920707ED8989ED08F6F6F6FFFFFFFFFF07898989899BA4F70708F6FFFFFFFF + F608A389898989A4A489898989899AF6F6F6FF08ED9B8907FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07898989E4F6F6F6F6FFFF + FFFFFFF69A89898989898989EDF6F6F6FFEDF6FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED8989898989899BF6 + F6FFF6928989899A898989F5F6F6F6FFFFFFFFFFFF07898989899BA4F70708F6 + FFFFFFFFF6089289898989F7070707ED9B899AFFFFFFFFFFFFFFF6FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69A8989EDF6F6 + FFFFFFFFFFFFFFE4898989898989898907F6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A39289 + 92E4F6FFFFFFFF0892898989898989F5F6FFFFFFFFFFFFFFFF08898989899BA4 + F7F707F6F6FFFFF6F6079189898992F70708F6FFFFF607FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 + 8907FFFFFFFFFFFFFFFFFFA38989898992E4ED07FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFF6EC9289899AEDFFFFFFFFFFFFFFFFFFFFF68989 + 89899AA4A4F70708F6F6F6F60807898989899BF707F6F6FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFECFFFFFFFFFFFFFFFFFFFF9A89A307F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF9A8989899AA4A4F7070708F6F60807A489898989A40708F6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFE489898992A4A4F7F70707080707079A898989890707F6F6FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFF0789898989F7A4A4F7F7070707F7F7898989899A0708 + F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91898989A4F7F7F7F7F7F7F7F79B898989 + 89F708F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE48989899BF7F7F7F7F7F7F7F7 + 918989899208F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF689898989ED07F7F7 + F7F7F79B89898989F5F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED898989 + 9207070707F7A489898989A3F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF9A89898989A3EDE492898989899AF6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF692898989898989898989899AF6F6FFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFEC8989898989898989EDFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6EDE49A9BE407FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000} + end + object Label1: TLabel + Left = 2 + Top = 2 + Width = 287 + Height = 13 + Align = alTop + AutoSize = False + end + object Button1: TButton + Left = 87 + Top = 240 + Width = 117 + Height = 25 + Caption = '&New Game' + ModalResult = 1 + TabOrder = 0 + end + object Button2: TButton + Left = 87 + Top = 284 + Width = 117 + Height = 25 + Caption = '&Load Game' + ModalResult = 4 + TabOrder = 1 + end + object Button3: TButton + Left = 87 + Top = 328 + Width = 117 + Height = 25 + Caption = '&Help && Info' + TabOrder = 2 + OnClick = Button3Click + end + object Button4: TButton + Left = 87 + Top = 380 + Width = 117 + Height = 25 + Caption = 'E&xit' + ModalResult = 2 + TabOrder = 3 + end + end + object OpenDialog1: TOpenDialog + DefaultExt = 'pq6' + Filter = 'Progress Quest VI games|*.pq6' + Left = 196 + Top = 172 + end +end diff --git a/chaff/Unit3.pas b/chaff/Unit3.pas new file mode 100644 index 0000000..54618ea --- /dev/null +++ b/chaff/Unit3.pas @@ -0,0 +1,40 @@ +unit Unit3; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls; + +type + TForm3 = class(TForm) + Panel1: TPanel; + Image1: TImage; + Button1: TButton; + Button2: TButton; + Button3: TButton; + Label1: TLabel; + OpenDialog1: TOpenDialog; + Button4: TButton; + procedure Button3Click(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + Form3: TForm3; + +implementation + +uses ShellAPI, Main; + +{$R *.dfm} + +procedure TForm3.Button3Click(Sender: TObject); +begin + ShellExecute(Form1.Handle, 0, PChar('res://' + Application.ExeName + '/6'), 0, 0, SW_SHOWNORMAL); +end; + +end. diff --git a/chaff/Wilhelmina.pq6 b/chaff/Wilhelmina.pq6 new file mode 100644 index 0000000..7e45b70 Binary files /dev/null and b/chaff/Wilhelmina.pq6 differ diff --git a/chaff/Xx.pq6 b/chaff/Xx.pq6 new file mode 100644 index 0000000..66f29ff Binary files /dev/null and b/chaff/Xx.pq6 differ diff --git a/chaff/Xxx.pq6 b/chaff/Xxx.pq6 new file mode 100644 index 0000000..e3f82da Binary files /dev/null and b/chaff/Xxx.pq6 differ diff --git a/chaff/Yyy.pq6 b/chaff/Yyy.pq6 new file mode 100644 index 0000000..2fc58fb Binary files /dev/null and b/chaff/Yyy.pq6 differ diff --git a/chaff/Zweep.pq6 b/chaff/Zweep.pq6 new file mode 100644 index 0000000..3c40da7 Binary files /dev/null and b/chaff/Zweep.pq6 differ diff --git a/chaff/Zzz.pq6 b/chaff/Zzz.pq6 new file mode 100644 index 0000000..80cd226 Binary files /dev/null and b/chaff/Zzz.pq6 differ diff --git a/chaff/a.pq6 b/chaff/a.pq6 new file mode 100644 index 0000000..78ddb34 Binary files /dev/null and b/chaff/a.pq6 differ diff --git a/chaff/ask.php b/chaff/ask.php new file mode 100644 index 0000000..6d51323 --- /dev/null +++ b/chaff/ask.php @@ -0,0 +1,25 @@ + + + + + + + Your message was sent, it seems. + + +
+Q: +

+ + + + \ No newline at end of file diff --git a/chaff/ddd.pq6 b/chaff/ddd.pq6 new file mode 100644 index 0000000..89f8048 Binary files /dev/null and b/chaff/ddd.pq6 differ diff --git a/chaff/fff.pq6 b/chaff/fff.pq6 new file mode 100644 index 0000000..058adaf Binary files /dev/null and b/chaff/fff.pq6 differ diff --git a/chaff/gg.pq6 b/chaff/gg.pq6 new file mode 100644 index 0000000..bcaefff Binary files /dev/null and b/chaff/gg.pq6 differ diff --git a/chaff/hhh.pq6 b/chaff/hhh.pq6 new file mode 100644 index 0000000..5ba289d Binary files /dev/null and b/chaff/hhh.pq6 differ diff --git a/chaff/never mind.pq6 b/chaff/never mind.pq6 new file mode 100644 index 0000000..e69de29 diff --git a/chaff/pq6.cfg b/chaff/pq6.cfg new file mode 100644 index 0000000..9df49a9 --- /dev/null +++ b/chaff/pq6.cfg @@ -0,0 +1,35 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-LE"c:\appl\delphi6\Projects\Bpl" +-LN"c:\appl\delphi6\Projects\Bpl" diff --git a/chaff/pq6.dof b/chaff/pq6.dof new file mode 100644 index 0000000..51baacb --- /dev/null +++ b/chaff/pq6.dof @@ -0,0 +1,87 @@ +[FileVersion] +Version=6.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;VclSmp;vclshlctrls;dbrtl;adortl;vcldb;qrpt;bdertl;vcldbx;dsnap;cds;bdecds;teeui;teedb;tee;teeqr;ibxpress;visualclx;visualdbclx;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;dbexpress;dbxcds;indy;dclOffice2k +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir= +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= diff --git a/chaff/pq6.dpr b/chaff/pq6.dpr new file mode 100644 index 0000000..c7105cd --- /dev/null +++ b/chaff/pq6.dpr @@ -0,0 +1,27 @@ +program pq6; + + + +uses + Forms, + Classes, + Main in 'Main.pas' {Form1}, + NewGuy in 'NewGuy.pas' {Form2}, + Config in 'Config.pas' {K}, + Front in 'Front.pas' {Form3}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Progress Quest VI'; + if ParamCount > 0 then begin + Form1.LoadGame(ParamStr(1)); + end else begin + Application.CreateForm(TForm1, Form1); + Application.CreateForm(TForm2, Form2); + Application.CreateForm(TForm3, Form3); + end; + Application.CreateForm(TK, K); + Application.Run; +end. diff --git a/chaff/pq6.gif b/chaff/pq6.gif new file mode 100644 index 0000000..fe28e8e Binary files /dev/null and b/chaff/pq6.gif differ diff --git a/chaff/pq6.html b/chaff/pq6.html new file mode 100644 index 0000000..6aa868b --- /dev/null +++ b/chaff/pq6.html @@ -0,0 +1,20 @@ + + +

+ + +
+quamvis progressio + +

+ +
+Information + +Download + +Comment +
+ +

+

diff --git a/chaff/pq6.res b/chaff/pq6.res new file mode 100644 index 0000000..7651df8 Binary files /dev/null and b/chaff/pq6.res differ diff --git a/chaff/pq6help.html b/chaff/pq6help.html new file mode 100644 index 0000000..ae49a5c --- /dev/null +++ b/chaff/pq6help.html @@ -0,0 +1,123 @@ + + + +

Progress Quest

+ +Web site + +

Back story

+ +Since time before time the Vorlak had held the Crosshutch at Thraeskamp. +The ancient reckoning held that the Five Skrelkampi (and their Truebine) would +return when the great Trond-feast could be held anew and the Belnap reunited. +But this legend became lost to all but the Papperboxen at Horbug. +One of their own was Yallow the Speldrig, who found an unlikely pupil in +Torbole Understeady, the discarded illigitimate waif of Wainthane Topknox, +whom Yallow renamed Grumdrig and began to school as a boar-pulmet's apprentice. ...And, as it +was said by some, in aberdoxy. +

+As our story opens young Grumdrig has returned to Horbug following a trying stint in +Spilwaer Spond where his laconic disposition and fertile mind bred a series +of misadventures which had landed him outside the good graces of the Jordref there, +Welham, who had secretly begun a long term course of slow but +disaccomodating illpeel in the lad's morning fanwael. +Meanwhile, though scarce a tuft of mansefur had yet made its appearance +on the boy's manssach, a number of visiting Roilwachhs have begun to +exhibit a discreet +and seemingly inexplicable interest in the boy. Strange indeed, as he would not reach +his krouchensterm for another harvest or more. +And when Grumdrig's resiliant compatriot Paedri +appears at Drumdrig's lochnotat with a Scrolstamp from the old Speldrig, +a woozy foreboding feeling rises from his young gut... + +

Introduction

+ +Progress Quest is next generation computer role-playing game. +Gamers who have played modern online role-playing games, +or almost any computer role-playing game, +or who have at any time installed or upgraded their operating system, will find themselves +incredibly comfortable with Progress Quest's very familiar gameplay. +Progress Quest follows reverently in the footsteps of recent smash hit +online worlds, but is careful to streamline the more tedious aspects of those +offerings. Players will still have the satisfaction of building thier character +from a ninety-pound level 1 teenager, to an incredibly puissant, magically imbued warrior, +well able to snuff out the lives of a barnload of bugbears +without need of so much as a lunch break. Yet, gone are the tedious micromanagement +and other frustrations common to that older generation of RPG's. + +

User manual

+ +Even inexpereinced gamers will find Progress Quest +remarkably intutive and simple to play. Start the program +and click the New Game button. You will presented with the character creation screen. + +Select a name, race and class for the new character. Then, use the Roll button +until you are statisfied with the stats +for your character. Tip: You can use the Unroll button (a feature exclusive to Progress Quest) +to go back to any previous roll if you find that you've +clicked too hastily. Use the Game Style slider (another unique feature) to choose between a more +action-oriented game, vs. a more strategic game style. If you're not sure what to select, leave +it on the middle setting, which is a good compromise for most people. +

+If "Play online" is checked, your character will share adventures with other Progress +Quest characters in an online virtual world. Online play is reccommended only for +users with always-on internet connectivity, though sophisiticated algorithms +keep the bandwidth usage to a minimum. You can compare your character against +the top Progress Quest players by visiting +http://bigretard.com/pq6hi.php. +

+Finally, hit the Sold! button to begin the game. The game will start immediately and +you can safely familiarize yourself with the game's single interface screen as the game progresses +on its own. +Soon your avatar will will be seeking and destroying an exotic panopoly of beasts while you +gaze proudly on. Missing, you will notice, is the tedious march from town, the bewildering maze of cookie cutter +streets hiding some specific merchant or NPC, +and the repetetive hunt for just the right beast to execute. Progress Quest supplies +your character with an endless series of victims, as well as exciting quests which keep your quest +log full to the brim at all times. +

+TREASURE: Each slain creature yields a trophy, which can be sold in any town. +When the encumberance bar reaches maximum, your character automatically returns to the nearest town +to sell your loot. If sufficiently liquid, he may then purchase an upgrade in equpiment (weapon or armor). +That being done, the interpid adventurer then returns to the frontier to spill more blood. +Tip: The amount your character can carry before his encumberance bar fills up increases as his CON stat improves. +

+QUESTS: When a quest is complete, your character is rewarded with one of: a) a special, valuable, treasure item, +b) an improved weapon +or piece of armor, c) a boost in stats, or d) a new spell for his spellbook. The character is then assigned +a follow-up quest, which he immediately begins to make progress on. +

+EXPERIENCE AND LEVELING UP: Experience represents your character's knowledge about the world +around him, as well as his battle prowess and ability to channel the forces of magical power. +Your character gains experience by killing monsters and sentient beings, +over and over again. Once the experience bar is full, your character levels up, and is +given an automatic boost in several of his stats and a new spell for his spellbook. +

+DYING: Be warned that your character can be slain by monsters which are tougher than +he can handle. However, this concept +has been abstracted out of the game and takes effect simply by somewhat reducing the experience +accumulated for each successful murder. +

+SAVING YOUR PROGRESS: Your game is saved whenever you quit, as well as each time your character levels +up or completes a quest. You can pick up where you left off by restarting Progress Quest and clicking the Load Game +button. + +

Game controls

+ +Progress Quest belongs to a new breed of "fire and forget" RPG's. There is no need to interact +with Progress Quest at all; it will make progress with you or without you. +

+You can quit Progress Quest by using the window close box, or by hitting <Alt>-<F4> +(hold down the <Alt> key while hitting <F4>), but there is really little need to ever do so. +Please note that your character will not make any progress except when Progress Quest is +running. Your character will make no progress once you quit the program, until you start +Progress Quest again. + +

Keyboard quick reference

+ + +
KeyDescription
Alt-F4Exit Progress Quest
+ +

+©:Copyright 2002 +efredricksen@yahoo.com diff --git a/chaff/pq6hi.php b/chaff/pq6hi.php new file mode 100644 index 0000000..7414125 --- /dev/null +++ b/chaff/pq6hi.php @@ -0,0 +1,140 @@ += 1") or die(mysql_error()); + if (mysql_num_rows($result) > 0) { + echo("taken|The character name you have selected is not available. Please choose a different name."); + } else { + mysql_query("DELETE FROM pq6hi WHERE name='$name'") or die(mysql_error()); + mysql_query("INSERT INTO pq6hi(name,passkey) VALUES ('$name',$passkey)") or die(mysql_error()); + echo("ok|$passkey"); + } + exit(); + } + else if ($cmd == 'brag') { + $name = mysql_escape_string($name); + $class = mysql_escape_string($class); + $race = mysql_escape_string($race); + $level = intval($level); + $plot = mysql_escape_string($plot); + $item = mysql_escape_string($item); + $spell = mysql_escape_string($spell); + $stat = mysql_escape_string($stat); + $motto = mysql_escape_string($motto); + $result = mysql_query("SELECT passkey FROM pq6hi WHERE name='$name'") or die(mysql_error()); + $key = mysql_result($result,0,0); + if ($passkey == (~$level * 9831) ^ $key) { + mysql_query("UPDATE pq6hi SET class='$class', race='$race', level='$level', item='$item', spell='$spell', stat='$stat', plot='$plot', motto='$motto' WHERE name='$name'"); + echo("ok"); + } else { + echo("forbidden"); + } + exit(); + } + else if (isset($query) && $passwd == 'livers') { + $query = stripslashes($query); + $query2 = htmlspecialchars($query); + echo("

$query2

"); + $result = mysql_query($query) or die(mysql_error()); + print "\n"; + while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { + print "\t\n"; + foreach ($line as $col_value) { + print "\t\t\n"; + } + print "\t\n"; + } + print "
$col_value
\n"; + } + + if (isset($cmd)) { + echo("'$cmd'?"); + exit(); + } + + $result = mysql_query('SELECT name,race,class,level,plot,item,spell,stat,motto FROM pq6hi WHERE level >= 1 ORDER BY -level LIMIT 100'); +?> + + + + Progress Quest Hall of Fame + + + +
+ + +
+quamvis progressio + +

+

Hall of Fame

+ + + +"); + exit(); + } +?> + + +"); + $n = $n + 1; + } +?> +
RankNameRaceClassLevelPrime StatPlot StageMost Prized ItemSpecialtyMotto (Ctrl-M)
$n.$name$race$class$level$stat$plot$item$spell$motto
+ + +

+← Regress + diff --git a/chaff/x.pq6 b/chaff/x.pq6 new file mode 100644 index 0000000..7b4a1f2 Binary files /dev/null and b/chaff/x.pq6 differ diff --git a/check.bmp b/check.bmp new file mode 100644 index 0000000..5de3755 Binary files /dev/null and b/check.bmp differ diff --git a/check2.bmp b/check2.bmp new file mode 100644 index 0000000..4c328d8 Binary files /dev/null and b/check2.bmp differ diff --git a/eklog.php b/eklog.php new file mode 100644 index 0000000..50a0f2a --- /dev/null +++ b/eklog.php @@ -0,0 +1,526 @@ += count_digit_length) +$digit_length = 0; + +# number of zeroes to prefix the count +# (used when $digit_length < count_digit_length) +$digit_pad = 1; + +# show digits in what language? +# (used when showing digits as text) +$arabic_count = 1; +$chinese_count = 0; +$roman_count = 0; + +if ($arabic_count) { + $bold = 0; + $italic = 0; + $cnt_color = '#ff0000'; + $cnt_face = 'Comic Sans MS'; + $cnt_size = '+1'; +} elseif ($chinese_count) { + $bold = 1; + $italic = 0; + $cnt_color = '#ff0000'; + $cnt_face = ''; + $cnt_size = '+1'; +} elseif ($roman_count) { + $bold = 0; + $italic = 0; + $cnt_color = '#ff0000'; + $cnt_face = 'Comic Sans MS'; + $cnt_size = '+1'; +} + +# digit images directory name & file extension +# directory can use absolute or relative path +# absolute paths start with "http://", "https://" or "/" +# all other paths are considered relative (to main script directory) +# (used when showing digits as images) +$img_dir = 'digit'; +$img_ext = 'gif'; + +# individual digit image width & height +$img_width = 16; +$img_height = 21; + +# digit images text alignment +# e.g. absmiddle, top, middle, bottom +$img_align = 'absmiddle'; + +########################################################################### + +# statistics visible? +$visible_stat = 1; + +# statistics page window name +# use empty string for same window (as count page) +$stat_frame = '_blank'; + +# statistics summary visible? +# statistics detail visible? +$summary_stat = 1; +$detail_stat = 1; + +# statistics background colours +$back_col_type = 'yellow'; +$back_col_head = 'lightblue'; +$back_col_body = 'lightcyan'; + +########################################################################### +# main programme +########################################################################### + +$agent_stat = array(); + +# create initial data files during first run +if (! file_exists($vst_file)) { + $vst_fp = fopen($vst_file, 'w') or die("Can't open $vst_file\n"); + flock($vst_fp, 2); + fwrite($vst_fp, '0.0.0.0|0'); + fclose($vst_fp); +} + +if (! file_exists($cnt_file)) { + $cnt_fp = fopen($cnt_file, 'w') or die("Can't open $cnt_file\n"); + flock($cnt_fp, 2); + fwrite($cnt_fp, '0'); + fclose($cnt_fp); +} + +# run script +if (getenv('QUERY_STRING') == '') { + takeLog(); # take log +} elseif (strtolower(getenv('QUERY_STRING')) == 'stat') { + viewStat(); # view statistics +} else { + # exit when script is called with invalid parameter + print '[parameter invalid]'; +} + +########################################################################### +# functions +########################################################################### + +function takeLog() { + global $script_url, $vst_file, $cnt_file, $log_file; + global $visible_count; + global $digit_type, $digit_length, $digit_pad; + global $arabic_count, $chinese_count, $roman_count; + global $bold, $italic, $cnt_color, $cnt_face, $cnt_size; + global $img_dir, $img_ext, $img_width, $img_height, $img_align; + global $visible_stat, $stat_frame; + + # do access log + if (handleListedIP() || isReload()) { # no logging needed + $cnt_fp = fopen($cnt_file, 'r') or die("Can't open $cnt_file\n"); + $cnt = fread($cnt_fp, filesize($cnt_file)); + $cnt = chop($cnt); + fclose($cnt_fp); + } else { # logging needed + # process last-visit data + $vst_fp = fopen($vst_file, 'w') or die("Can't open $vst_file\n"); + flock($vst_fp, 2); + $tm = time(); + fwrite($vst_fp, getenv('REMOTE_ADDR')."|$tm"); + fclose($vst_fp); + + # process count data + $cnt_fp = fopen($cnt_file, 'r+') or die("Can't open $cnt_file\n"); + flock($cnt_fp, 2); + $cnt = fread($cnt_fp, filesize($cnt_file)); + $cnt = chop($cnt); + $cnt++; + rewind($cnt_fp); + fwrite($cnt_fp, $cnt); + ftruncate($cnt_fp, ftell($cnt_fp)); + fclose($cnt_fp); + + # process log data + $log_fp = fopen($log_file, 'a') or die("Can't open $log_file\n"); + flock($log_fp, 2); + + $aTime = localtime($tm, 1); + $iY = $aTime['tm_year']+1900; + $iM = $aTime['tm_mon']+1; + $iM = ($iM>=10?$iM:"0$iM"); + $iD = $aTime['tm_mday']; + $iD = ($iD>=10?$iD:"0$iD"); + $iHH = $aTime['tm_hour']; + $iHH = ($iHH>=10?$iHH:"0$iHH"); + $iMM = $aTime['tm_min']; + $iMM = ($iMM>=10?$iMM:"0$iMM"); + $iSS = $aTime['tm_sec']; + $iSS = ($iSS>=10?$iSS:"0$iSS"); + $logTime = "$iY-$iM-$iD $iHH:$iMM:$iSS"; + + if (gethostbyaddr(getenv('REMOTE_ADDR'))) { + $logHost = gethostbyaddr(getenv('REMOTE_ADDR')); + } else { + $logHost = '[Unknown]'; + } + + if (getenv('HTTP_USER_AGENT')) { + $logAgent = getenv('HTTP_USER_AGENT'); + } else { + $logAgent = '[Unknown]'; + } + + fwrite($log_fp, "$logTime|$logHost|$logAgent\n"); + fclose($log_fp); + } + + # show output + $html_out = ''; + + if ($visible_count) { + # pad zero(es) to the count + # (used when showing text digits in Arabic or image digits) + if (($digit_type == 0) && $arabic_count || ($digit_type == 1)) { + if ($digit_length >= strlen($cnt)) { $digit_pad = $digit_length - strlen($cnt); } + for ($i=0; $i<$digit_pad; $i++) { $cnt = '0' . $cnt; } + } + + if ($digit_type == 0) { + if (! $arabic_count) { + if ($chinese_count) { + $cnt = arabic2chinese($cnt); + } elseif ($roman_count) { + $cnt = arabic2roman($cnt); + } + } + } elseif ($digit_type == 1) { + # check if relative path is used for digit images directory + if (! preg_match('@^(http://|https://|/)@', $img_dir)) { + $img_url = preg_replace('@(.*)/.*@', '\\1', $script_url); + $img_dir = "$img_url/$img_dir"; + } + } + + if ($visible_stat) { + if ($stat_frame) { + # show statistics page in given window + $html_out .= ""; + } else { + # show statistics page in same window + $html_out .= ""; + } + } + if ($digit_type == 0) { + # show count as text + if ($cnt_color || $cnt_face || $cnt_size) { $html_out .= ' $agent_stat[$b]) { + return(-1); + } elseif ($agent_stat[$a] < $agent_stat[$b]) { + return(1); + } else { + if ($a > $b) { + return(-1); + } elseif ($a < $b) { + return(1); + } else { + return(0); + } + } + } + + # handle listed ip + handleListedIP(); + + # return if no stat or stat invisible + if ((! file_exists($log_file)) || !$visible_stat || !$summary_stat && !$detail_stat) { + print '[statistics not available]'; + return(0); + } + + # get count file data + $cnt_fp = fopen($cnt_file, 'r') or die("Can't open $cnt_file\n"); + $cnt_no = fread($cnt_fp, filesize($cnt_file)); + $cnt_no = chop($cnt_no); + fclose($cnt_fp); + + # get log file data + $log_fp = fopen($log_file, 'r') or die("Can't open $log_file\n"); + for ($log_no=0; ! feof($log_fp); $log_no++) { + $tmp = preg_split('/\|/', fgets($log_fp, 256)); + $time[$log_no] = $tmp[0]; + $host[$log_no] = $tmp[1]; + $agent[$log_no] = chop($tmp[2]); + + if ($agent[$log_no]) { $agent_stat[$agent[$log_no]]++; } + } + $log_no--; + fclose($log_fp); + + # get count offset + $off_no = $cnt_no - $log_no; + + # output stat report + print "\n\n"; + print "Statistics\n\n"; + print "\n"; + + if ($summary_stat) { + print "\n"; + print "\n"; + print "
Log Summary
\n"; + print "
\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + + $agent_stat_keys = array_keys($agent_stat); + usort($agent_stat_keys, "doSort"); + foreach ($agent_stat_keys as $key) { + print "\n"; + print "\n"; + print "\n"; + print "\n"; + } + + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "
AgentCount
$key$agent_stat[$key]
Total$log_no
\n\n"; + } + + if ($summary_stat && $detail_stat) { print "


\n\n"; } + + if ($detail_stat) { + print "\n"; + print "\n"; + print "
Log Detail
\n"; + print "
\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + for ($i=0; $i<$log_no; $i++) { + print "\n"; + printf("\n", $i+1+$off_no); + print "\n"; + print "\n"; + print "\n"; + print "\n"; + } + print "
 TimeHostAgent
%d$time[$i]$host[$i]$agent[$i]
\n"; + } + + print "\n\n"; + print "\n"; +} + +function handleListedIP() { + global $white_ip_list, $black_ip_list; + global $visible_count, $visible_stat, $summary_stat, $detail_stat; + + $this_ip = getenv('REMOTE_ADDR') . '.'; + + foreach ($white_ip_list as $ip) { + if (preg_match("/^$ip\./", $this_ip)) { + # override default for white-listed ip + $visible_count = 1; + $visible_stat = 1; + $summary_stat = 1; + $detail_stat = 1; + + return(1); + } + } + + foreach ($black_ip_list as $ip) { + if (preg_match("/^$ip\./", $this_ip)) { + # override default for black-listed ip + $visible_count = 0; + $visible_stat = 0; + $summary_stat = 0; + $detail_stat = 0; + + return(2); + } + } + + return(0); +} + +function isReload() { + global $vst_file; + global $anti_reload_period; + + $vst_fp = fopen($vst_file, 'r') or die("Can't open $vst_file\n"); + $vst = preg_split('/\|/', fread($vst_fp, filesize($vst_file))); + $ip_last = $vst[0]; + $tm_last = chop($vst[1]); + fclose($vst_fp); + + $tm_now = time(); + $min_diff = ($tm_now-$tm_last)/60; + + # return true if current IP is the same as last IP and within anti-reload + # period + if ((getenv('REMOTE_ADDR')==$ip_last)&&($min_diff<=$anti_reload_period)) { + return(1); + } else { + return(0); + } +} + +function arabic2chinese($in) { + $d = '¹s'; + $mm = array('','¸U','»õ','¥ü'); + + # return 0 if input is all 0 + if (! intval($in)) { return($d); } + + # construct chinese characters, in groups of 4 digits from the right + for ($i=0,$s='',$out=''; $i diff --git a/html.rc b/html.rc new file mode 100644 index 0000000..2679b6f --- /dev/null +++ b/html.rc @@ -0,0 +1,2 @@ +6 23 DISCARDABLE "pq.html" + diff --git a/html.res b/html.res new file mode 100644 index 0000000..cc2456e Binary files /dev/null and b/html.res differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..4d6f708 --- /dev/null +++ b/index.html @@ -0,0 +1,51 @@ + + +Big and Retarded + + + + + + +

+ +Ask Big Retard! + +

+Q: Big Retard, what is important in life? +
+A: Joy through Fulfillment, and Success through Progress. + + +

+Everlasting Fulfillment +

+1. Watch the sun rise at least once every year
+2. Don't postpone joy
+3. Get the fuck out of my face right now + + +

+Everlasting Progress +

+Progress Quest + +

+Q: Big Retard, where can I get more advice of similar caliber? +
+A: Why, right here! + + +

+Q: Big Retard, where's that scan of the back cover of that book that I never thought +was as funny as you apparently did? +
+A: I've got that for you, right here! + diff --git a/oldindex.html b/oldindex.html new file mode 100644 index 0000000..4b1c7d2 --- /dev/null +++ b/oldindex.html @@ -0,0 +1,7 @@ +BIG AND RETARDED +

+ +
+ + + diff --git a/pq.bmp b/pq.bmp new file mode 100644 index 0000000..ea2244c Binary files /dev/null and b/pq.bmp differ diff --git a/pq.cfg b/pq.cfg new file mode 100644 index 0000000..9df49a9 --- /dev/null +++ b/pq.cfg @@ -0,0 +1,35 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-LE"c:\appl\delphi6\Projects\Bpl" +-LN"c:\appl\delphi6\Projects\Bpl" diff --git a/pq.dof b/pq.dof new file mode 100644 index 0000000..03d90aa --- /dev/null +++ b/pq.dof @@ -0,0 +1,90 @@ +[FileVersion] +Version=6.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;VclSmp;vclshlctrls;dbrtl;adortl;vcldb;qrpt;bdertl;vcldbx;dsnap;cds;bdecds;teeui;teedb;tee;teeqr;ibxpress;visualclx;visualdbclx;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;dbexpress;dbxcds;indy;dclOffice2k +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir= +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; diff --git a/pq.dpr b/pq.dpr new file mode 100644 index 0000000..9ef668d --- /dev/null +++ b/pq.dpr @@ -0,0 +1,22 @@ +program pq; + +uses + Forms, + Config in 'Config.pas' {K}, + Front in 'Front.pas' {Form3}, + Main in 'Main.pas' {Form1}, + NewGuy in 'NewGuy.pas' {Form2}; + +{$E exe} + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Progress Quest'; + Application.CreateForm(TForm1, Form1); + Application.CreateForm(TK, K); + Application.CreateForm(TForm3, Form3); + Application.CreateForm(TForm2, Form2); + Application.Run; +end. diff --git a/pq.gif b/pq.gif new file mode 100644 index 0000000..d81c232 Binary files /dev/null and b/pq.gif differ diff --git a/pq.res b/pq.res new file mode 100644 index 0000000..7651df8 Binary files /dev/null and b/pq.res differ diff --git a/saves/Aspirin.pq b/saves/Aspirin.pq new file mode 100644 index 0000000..8a07a5c Binary files /dev/null and b/saves/Aspirin.pq differ diff --git a/saves/Bljsd.pq b/saves/Bljsd.pq new file mode 100644 index 0000000..6ca906b Binary files /dev/null and b/saves/Bljsd.pq differ diff --git a/saves/Clombor.pq b/saves/Clombor.pq new file mode 100644 index 0000000..04faded Binary files /dev/null and b/saves/Clombor.pq differ diff --git a/saves/Compo.pq b/saves/Compo.pq new file mode 100644 index 0000000..730f985 Binary files /dev/null and b/saves/Compo.pq differ diff --git a/saves/Copy of Gandalfini.pq b/saves/Copy of Gandalfini.pq new file mode 100644 index 0000000..bb963dd Binary files /dev/null and b/saves/Copy of Gandalfini.pq differ diff --git a/saves/Dead Leopard II.pq b/saves/Dead Leopard II.pq new file mode 100644 index 0000000..396de23 Binary files /dev/null and b/saves/Dead Leopard II.pq differ diff --git a/saves/Dead Leopard.pq b/saves/Dead Leopard.pq new file mode 100644 index 0000000..cbc2f28 Binary files /dev/null and b/saves/Dead Leopard.pq differ diff --git a/saves/Fredo Baggins.pq b/saves/Fredo Baggins.pq new file mode 100644 index 0000000..e3944f6 Binary files /dev/null and b/saves/Fredo Baggins.pq differ diff --git a/saves/Gandalfini.pq b/saves/Gandalfini.pq new file mode 100644 index 0000000..bd13a82 Binary files /dev/null and b/saves/Gandalfini.pq differ diff --git a/saves/Glabboreux.pq b/saves/Glabboreux.pq new file mode 100644 index 0000000..f681af6 Binary files /dev/null and b/saves/Glabboreux.pq differ diff --git a/saves/Grumdrig ]I[.pq b/saves/Grumdrig ]I[.pq new file mode 100644 index 0000000..a321010 Binary files /dev/null and b/saves/Grumdrig ]I[.pq differ diff --git a/saves/Grumdrig.pq b/saves/Grumdrig.pq new file mode 100644 index 0000000..547e848 Binary files /dev/null and b/saves/Grumdrig.pq differ diff --git a/saves/Hlld.pq b/saves/Hlld.pq new file mode 100644 index 0000000..10d4d39 Binary files /dev/null and b/saves/Hlld.pq differ diff --git a/saves/S'pang.pq b/saves/S'pang.pq new file mode 100644 index 0000000..59605f3 Binary files /dev/null and b/saves/S'pang.pq differ diff --git a/saves/Stench of Death.pq b/saves/Stench of Death.pq new file mode 100644 index 0000000..3140ac1 Binary files /dev/null and b/saves/Stench of Death.pq differ diff --git a/saves/Testes ][.pq b/saves/Testes ][.pq new file mode 100644 index 0000000..2d3a84e Binary files /dev/null and b/saves/Testes ][.pq differ diff --git a/store/ask.psd b/store/ask.psd new file mode 100644 index 0000000..1adb276 Binary files /dev/null and b/store/ask.psd differ diff --git a/store/bigger and doubler.psd b/store/bigger and doubler.psd new file mode 100644 index 0000000..43d79c3 Binary files /dev/null and b/store/bigger and doubler.psd differ diff --git a/store/bigger.png b/store/bigger.png new file mode 100644 index 0000000..caa94aa Binary files /dev/null and b/store/bigger.png differ diff --git a/store/bigger.psd b/store/bigger.psd new file mode 100644 index 0000000..fe801bf Binary files /dev/null and b/store/bigger.psd differ diff --git a/store/bluer.png b/store/bluer.png new file mode 100644 index 0000000..319afc3 Binary files /dev/null and b/store/bluer.png differ diff --git a/store/bunnytail.gif b/store/bunnytail.gif new file mode 100644 index 0000000..ad067bb Binary files /dev/null and b/store/bunnytail.gif differ diff --git a/store/bust.gif b/store/bust.gif new file mode 100644 index 0000000..324ccca Binary files /dev/null and b/store/bust.gif differ diff --git a/store/dancy.gif b/store/dancy.gif new file mode 100644 index 0000000..d4e1ddc Binary files /dev/null and b/store/dancy.gif differ diff --git a/store/doublelogo.png b/store/doublelogo.png new file mode 100644 index 0000000..f22a385 Binary files /dev/null and b/store/doublelogo.png differ diff --git a/store/doublelogo2.png b/store/doublelogo2.png new file mode 100644 index 0000000..322a2f5 Binary files /dev/null and b/store/doublelogo2.png differ diff --git a/store/forum.psd b/store/forum.psd new file mode 100644 index 0000000..d5a83fb Binary files /dev/null and b/store/forum.psd differ diff --git a/store/golden.png b/store/golden.png new file mode 100644 index 0000000..c9b0b84 Binary files /dev/null and b/store/golden.png differ diff --git a/store/goldwords.psd b/store/goldwords.psd new file mode 100644 index 0000000..d584da1 Binary files /dev/null and b/store/goldwords.psd differ diff --git a/store/icon.psd b/store/icon.psd new file mode 100644 index 0000000..0c9c97a Binary files /dev/null and b/store/icon.psd differ diff --git a/store/logo.bmp b/store/logo.bmp new file mode 100644 index 0000000..11006cc Binary files /dev/null and b/store/logo.bmp differ diff --git a/store/logo.psd b/store/logo.psd new file mode 100644 index 0000000..b630db9 Binary files /dev/null and b/store/logo.psd differ diff --git a/store/logo2.bmp b/store/logo2.bmp new file mode 100644 index 0000000..0456eba Binary files /dev/null and b/store/logo2.bmp differ diff --git a/store/logo2.psd b/store/logo2.psd new file mode 100644 index 0000000..820834a Binary files /dev/null and b/store/logo2.psd differ diff --git a/store/logo3.bmp b/store/logo3.bmp new file mode 100644 index 0000000..f650d03 Binary files /dev/null and b/store/logo3.bmp differ diff --git a/store/pq88x31.psd b/store/pq88x31.psd new file mode 100644 index 0000000..883b7e9 Binary files /dev/null and b/store/pq88x31.psd differ diff --git a/store/smalogo.psd b/store/smalogo.psd new file mode 100644 index 0000000..0e1de92 Binary files /dev/null and b/store/smalogo.psd differ diff --git a/store/smalogold.psd b/store/smalogold.psd new file mode 100644 index 0000000..723b152 Binary files /dev/null and b/store/smalogold.psd differ diff --git a/store/swords.png b/store/swords.png new file mode 100644 index 0000000..7714fea Binary files /dev/null and b/store/swords.png differ diff --git a/store/swords.psd b/store/swords.psd new file mode 100644 index 0000000..c87abcf Binary files /dev/null and b/store/swords.psd differ diff --git a/store/tard.psd b/store/tard.psd new file mode 100644 index 0000000..197d682 Binary files /dev/null and b/store/tard.psd differ diff --git a/www/.htaccess b/www/.htaccess new file mode 100755 index 0000000..0207896 --- /dev/null +++ b/www/.htaccess @@ -0,0 +1,3 @@ + +ForceType application/x-httpd-php + diff --git a/www/Copy of traffic.php b/www/Copy of traffic.php new file mode 100644 index 0000000..6f3587a --- /dev/null +++ b/www/Copy of traffic.php @@ -0,0 +1,116 @@ + 0 AND stamp='$d'") or die(mysql_error()); + $bs = $mysql_result($result,0,0); + $brags[$d] = $bs; + + $d2 = date("Y-m-d", $day); + $result = mysql_query("SELECT COUNT(*) FROM posts WHERE post_time='$d2'") or die(mysql_error()); + $ps = $mysql_result($result,0,0); + $posts[$d] = $ps; + + mysql_query("INSERT INTO pqsummary SET day='$d',posts=$ps,brags=$bs,dls=$ds") or die(mysql_error()); + } + + if ($m && ($m != $row[2])) { + ImageFilledRectangle($gif, $n * $w,$height+2,$n*$w,$height+$margin,$black); + ImageString($gif,2,$n*$w + 5,$height,$row[2],$black); + } + + ImageFilledRectangle($gif, $x, $height-$brags[$d]/$bscaler, $x, $height-1, $bcolor); + $x++; + ImageFilledRectangle($gif, $x, $height-$posts[$d]/$pscaler, $x, $height-1, $pcolor); + $x++; + ImageFilledRectangle($gif, $x, $height-$dls[$d]/$dscaler, $x, $height-1, $dcolor); + $x++; + $x++; + + $m = $row[2]; + $n += 1; +} + + + + + + + +// create the image +$width = 300; +$height = 100; +$scaler = 100; +$pscaler = 10; + +$margin = 12; +$gif = ImageCreate($width,$height + $margin); +$bg = ImageColorAllocate($gif,225,225,255); +$tx = ImageColorAllocate($gif,0,220,92); +$black = ImageColorAllocate($gif,0,0,0); +$white = ImageColorAllocate($gif,255,255,255); +$red = ImageColorAllocate($gif,255,128,92); +ImageFilledRectangle($gif,0,0,$width,$height,$bg); +ImageFilledRectangle($gif,0,$height,$width,$height+50,$white); +ImageString($gif,2,140,3,"daily player activity",$tx); +ImageString($gif,2,140,15,"daily forum activity (x10)",$red); + +$w = 4; +$limit = $width / $w; + +$posts = array(); +$result = mysql_query("SELECT COUNT(*), CONCAT(SUBSTRING(post_time,1,4),SUBSTRING(post_time,6,2),SUBSTRING(post_time,9,2)) AS t FROM posts GROUP BY t ORDER BY t LIMIT $limit"); +while ($row = mysql_fetch_row ($result)) { + $posts[$row[1]] = $row[0]; +} + +$result = mysql_query("SELECT COUNT(*), SUBSTRING(time,1,8) AS t, MONTHNAME(time) FROM access_log WHERE INSTR(uri,'cmd=brag') > 0 GROUP BY t ORDER BY t LIMIT $limit"); +$count = mysql_num_rows($result); +$n = 0; +$m = 0; +while ($row = mysql_fetch_row ($result)) { + if ($n == $count-1) + $tx = ImageColorAllocate($gif,162,220,180); + ImageFilledRectangle($gif, $n * $w,$height-$row[0]/$scaler,$n*$w+$w-2,$height,$tx); + if (isset($posts[$row[1]])) { + ImageFilledRectangle($gif, $n * $w,$height-$posts[$row[1]]/$pscaler,$n*$w+1,$height,$red); + } + if ($m && ($m != $row[2])) { + ImageFilledRectangle($gif, $n * $w,$height+2,$n*$w,$height+$margin,$black); + ImageString($gif,2,$n*$w + 5,$height,$row[2],$black); + } + $m = $row[2]; + $n += 1; +} + +// send the image +header("content-type: image/png"); +ImagePng($gif); + +?> \ No newline at end of file diff --git a/www/admin/.htaccess b/www/admin/.htaccess new file mode 100755 index 0000000..6af5040 --- /dev/null +++ b/www/admin/.htaccess @@ -0,0 +1,5 @@ +order deny,allow +deny from all +allow from .telocity.com +allow from .google.com +allow from .mclass.broadwing.net \ No newline at end of file diff --git a/www/admin/admin.php b/www/admin/admin.php new file mode 100644 index 0000000..b00a084 --- /dev/null +++ b/www/admin/admin.php @@ -0,0 +1,56 @@ + + + + + Progress Quest Admin + + + + +
+quamvis progressio + +

+

+ + + + +$query2
"); + $result = mysql_query($query) or die(mysql_error()); + if (is_bool($result)) { + echo($result ? 'OK' : 'FAILED'); + } + else { + print "\n"; + for ($i = 0; $i < mysql_num_fields($result); $i++) + print "\n"; + foreach ($line as $col_value) { + print "\t\t\n"; + } + print "\t\n"; + } + print "
" . mysql_field_name($result,$i) . "\n"; + while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { + print "\t
"; + if (0 == strncmp($col_value, "http://", 7)) + print "$col_value"; + else + print $col_value; + print "
\n"; + } + } +?> + + + diff --git a/www/admin/pop.html b/www/admin/pop.html new file mode 100644 index 0000000..847d3a4 --- /dev/null +++ b/www/admin/pop.html @@ -0,0 +1,7 @@ + diff --git a/www/admin/quote-admin.php b/www/admin/quote-admin.php new file mode 100644 index 0000000..d3b2804 --- /dev/null +++ b/www/admin/quote-admin.php @@ -0,0 +1,106 @@ + + +

PQ Quote Admin

+ + +List all + + + +

+

+ +Quote $disp"); + quotation($row[1], $row[2]); + if (isset($num)) { + $quote = $row[1]; + $source = $row[2]; + echo(""); + } + } + } +?> + +

+Quote
+ + +
+Source
+ + +
+ + + + + + + + +

+

+ +"); + $result = mysql_query("SELECT num,quote,source FROM pqquotes ORDER BY num")or die(mysql_error()); + while ($row = mysql_fetch_row($result)) { + $num = $row[0]; + $quote = $row[1]; + $source = $row[2]; + if (strlen($quote) > 50) + $quote = substr($quote,0,47) . "..."; + if (strlen($source) > 50) + $source = substr($source,0,47) . "..."; + $quote = htmlspecialchars($quote); + $source = htmlspecialchars($source); + echo("$num$quote$source"); + } + echo(""); + } +?> diff --git a/www/admin/referers.php b/www/admin/referers.php new file mode 100644 index 0000000..4195d12 --- /dev/null +++ b/www/admin/referers.php @@ -0,0 +1,69 @@ + + + + + + + Progress Quest Referers + + + + +
+PQ Referers + +

+Hosts"; + $query = <<$host (list all hosts)

"; + $query = <<\n"; +for ($i = 0; $i < mysql_num_fields($result); $i++) + print "" . mysql_field_name($result,$i) . "\n"; +while ($row = mysql_fetch_row($result)) { + $count = $row[0]; + $referer = $row[1]; + print "$count"; + if (0 == strncmp($referer, "http://", 7)) + print "$referer"; + else if (!isset($host)) + print "$referer"; + else + print $referer; +} +print "\n"; + +?> + + + diff --git a/www/bb-art/0.gif b/www/bb-art/0.gif new file mode 100644 index 0000000..cd38757 Binary files /dev/null and b/www/bb-art/0.gif differ diff --git a/www/bb-art/1.gif b/www/bb-art/1.gif new file mode 100644 index 0000000..a409865 Binary files /dev/null and b/www/bb-art/1.gif differ diff --git a/www/bb-art/2.gif b/www/bb-art/2.gif new file mode 100644 index 0000000..6ad878b Binary files /dev/null and b/www/bb-art/2.gif differ diff --git a/www/bb-art/3.gif b/www/bb-art/3.gif new file mode 100644 index 0000000..e6550b0 Binary files /dev/null and b/www/bb-art/3.gif differ diff --git a/www/bb-art/4.gif b/www/bb-art/4.gif new file mode 100644 index 0000000..ba8fe80 Binary files /dev/null and b/www/bb-art/4.gif differ diff --git a/www/bb-art/5.gif b/www/bb-art/5.gif new file mode 100644 index 0000000..1e28812 Binary files /dev/null and b/www/bb-art/5.gif differ diff --git a/www/bb-art/6.gif b/www/bb-art/6.gif new file mode 100644 index 0000000..c8347f3 Binary files /dev/null and b/www/bb-art/6.gif differ diff --git a/www/bb-art/7.gif b/www/bb-art/7.gif new file mode 100644 index 0000000..81b5aba Binary files /dev/null and b/www/bb-art/7.gif differ diff --git a/www/bb-art/8.gif b/www/bb-art/8.gif new file mode 100644 index 0000000..fab05de Binary files /dev/null and b/www/bb-art/8.gif differ diff --git a/www/bb-art/9.gif b/www/bb-art/9.gif new file mode 100644 index 0000000..66dedbb Binary files /dev/null and b/www/bb-art/9.gif differ diff --git a/www/bb-art/ChairmanTakeshiKaga.gif b/www/bb-art/ChairmanTakeshiKaga.gif new file mode 100644 index 0000000..aa68715 Binary files /dev/null and b/www/bb-art/ChairmanTakeshiKaga.gif differ diff --git a/www/bb-art/OnionBattle.gif b/www/bb-art/OnionBattle.gif new file mode 100644 index 0000000..79182d1 Binary files /dev/null and b/www/bb-art/OnionBattle.gif differ diff --git a/www/bb-art/ace.gif b/www/bb-art/ace.gif new file mode 100644 index 0000000..b500c8e Binary files /dev/null and b/www/bb-art/ace.gif differ diff --git a/www/bb-art/angel.gif b/www/bb-art/angel.gif new file mode 100644 index 0000000..5eb625e Binary files /dev/null and b/www/bb-art/angel.gif differ diff --git a/www/bb-art/bert.jpg b/www/bb-art/bert.jpg new file mode 100644 index 0000000..ef13c39 Binary files /dev/null and b/www/bb-art/bert.jpg differ diff --git a/www/bb-art/cod.gif b/www/bb-art/cod.gif new file mode 100644 index 0000000..7aa6400 Binary files /dev/null and b/www/bb-art/cod.gif differ diff --git a/www/bb-art/evil.gif b/www/bb-art/evil.gif new file mode 100644 index 0000000..c56c7b8 Binary files /dev/null and b/www/bb-art/evil.gif differ diff --git a/www/bb-art/grimlock.gif b/www/bb-art/grimlock.gif new file mode 100644 index 0000000..9652b5c Binary files /dev/null and b/www/bb-art/grimlock.gif differ diff --git a/www/chaff/Copy (2) of index.php b/www/chaff/Copy (2) of index.php new file mode 100644 index 0000000..13f64b8 --- /dev/null +++ b/www/chaff/Copy (2) of index.php @@ -0,0 +1,31 @@ + + + + +

+

+ + +

+ + + +
+ + +
+quamvis progressio + +
Information + Download + Hall of Fame + Store + Stats + Forum + +
+ + +©2002 grumdrig@progressquest.com +
+

diff --git a/www/chaff/Copy of index.php b/www/chaff/Copy of index.php new file mode 100644 index 0000000..eca53ae --- /dev/null +++ b/www/chaff/Copy of index.php @@ -0,0 +1,31 @@ + + + + +

+ + + +
+ +
+

+Information +

+Download +

+Comment + + +

+ + +
+quamvis progressio + +
+ +
+
+ +

diff --git a/www/chaff/WatermelonBattle.gif b/www/chaff/WatermelonBattle.gif new file mode 100644 index 0000000..81bf6e4 Binary files /dev/null and b/www/chaff/WatermelonBattle.gif differ diff --git a/www/chaff/exec.php b/www/chaff/exec.php new file mode 100644 index 0000000..aba0523 --- /dev/null +++ b/www/chaff/exec.php @@ -0,0 +1,56 @@ + \ No newline at end of file diff --git a/www/chaff/redsnapper.gif b/www/chaff/redsnapper.gif new file mode 100644 index 0000000..203a99a Binary files /dev/null and b/www/chaff/redsnapper.gif differ diff --git a/www/chaff/tip-admin.php b/www/chaff/tip-admin.php new file mode 100644 index 0000000..62d631d --- /dev/null +++ b/www/chaff/tip-admin.php @@ -0,0 +1,88 @@ + + +

PQ Tip Admin

+ + +List all + + + +

+

+ +Tip $num $tip"); + } + echo(""); + } +?> + +

+ + +
+ + + + + + + +

+

+ +"); + $result = mysql_query("SELECT num,tip FROM pqtips ORDER BY num")or die(mysql_error()); + while ($row = mysql_fetch_row($result)) { + $num = $row[0]; + $tip = $row[1]; + if (strlen($tip) > 30) + $tip = substr($tip,0,27) . "..."; + $tip = htmlspecialchars($tip); + echo("$num$tip"); + } + echo(""); + } +?> diff --git a/www/css.php b/www/css.php new file mode 100644 index 0000000..ae9ec54 --- /dev/null +++ b/www/css.php @@ -0,0 +1,5 @@ + diff --git a/www/db.php b/www/db.php new file mode 100644 index 0000000..c42ba82 --- /dev/null +++ b/www/db.php @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/www/dl/grab.php b/www/dl/grab.php new file mode 100644 index 0000000..3bbb820 --- /dev/null +++ b/www/dl/grab.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/www/dl/index.php b/www/dl/index.php new file mode 100644 index 0000000..04017f1 --- /dev/null +++ b/www/dl/index.php @@ -0,0 +1,90 @@ + +

+ +

Download Progress Quest

+
+ +

+ +
+ +We're having a few issues with transfer quotas, +so it may be kind of hard to get ahold of Progress Quest just now. +Please stay tuned as we try to alleviate the problem. +

+Try one of these links, + +HERE +, + + +HERE +, + + +HERE +, + +or + +HERE +. +They are likely to be mighty slow (Yahoo is only so generous). +Either + THIS +or + THIS +will sometimes work, also, and be faster if they do. +

+ + +Luckily for you, several kind PQ fans have offered to host the download. Try one of +these: +

+ + + + +
+
+
+ + + + +
+
+In the meantime here's your chance to donate to the cause... +A thousand thanks to those who already have! +If you'd rather donate bandwidth, kindly +send me a URL I can post here. +
+ + \ No newline at end of file diff --git a/www/hi.php b/www/hi.php new file mode 100644 index 0000000..c2969a0 --- /dev/null +++ b/www/hi.php @@ -0,0 +1,173 @@ += 1") or die(mysql_error()); + if (mysql_num_rows($result) > 0) { + echo("The character name you have selected is not available. Please choose a different name."); + } else if (!is_numeric($rev) || $rev < 2) { + echo("You version of Progress Quest is obsolete. You must download the latest version of Progress Quest before you can create any more online characters. Please visit http://progressquest.com/"); + } else { + mysql_query("DELETE FROM pqhi WHERE name='$name'") or die(mysql_error()); + mysql_query("INSERT INTO pqhi(name,passkey) VALUES ('$name',$passkey)") or die(mysql_error()); + echo("ok|$passkey"); + } + exit(); + } + else if ($cmd == 'brag') { + $name = arg($name); + $class = arg($class); + $race = arg($race); + $level = intval($level); + $plot = arg($plot); + $item = arg($item); + $spell = arg($spell); + $stat = arg($stat); + $motto = arg($motto); + $ip = mysql_escape_string($REMOTE_ADDR); + $result = mysql_query("SELECT passkey FROM pqhi WHERE name='$name'") or die(mysql_error()); + $key = mysql_result($result,0,0); + if ($passkey == ((~$level * 9831) ^ $key)) { + mysql_query("UPDATE pqhi SET class='$class', race='$race', level='$level', item='$item', spell='$spell', stat='$stat', plot='$plot', motto='$motto', ip='$ip' WHERE name='$name'"); + if (($level > 299) || ($REMOTE_ADDR == '208.180.156.195')) + mysql_query("UPDATE pqhi SET stigma=1 WHERE name='$name'"); + echo("ok"); + } else { + echo("forbidden"); + } + exit(); + } + + if (isset($cmd)) { + echo("'$cmd'?"); + exit(); + } + + if (!is_numeric($min)) + $min = 0; + if (!is_numeric($max)) + $max = $cheaters ? 100 : 10; + if (isset($name)) { + $sname = arg($name); + $result = mysql_query("SELECT level,stamp,stigma FROM pqhi WHERE level >= 1 AND name='$sname'"); + if ($row = mysql_fetch_row($result)) { + $l = $row[0]; + $s = $row[1]; + $cheaters = $row[2]; + $filter = $cheaters ? '(stigma > 0)' : '(stigma = 0)'; + $result = mysql_query("SELECT COUNT(*) FROM pqhi WHERE $filter AND (level > $l OR (level = $l AND stamp < '$s'))") or die(mysql_error()); + $min = mysql_result($result, 0); + $min -= 6; + $max = 13; + if ($min < 0) { $max += $min; $min = 0; } + } + } + + $title = "Fame"; + if ($cheaters) + $title = "Infamy"; + $filter = $cheaters ? '(stigma > 0)' : '(stigma = 0)'; + + $result = mysql_query("SELECT COUNT(*) FROM pqhi WHERE $filter AND level >= 1") or die(mysql_error()); + $count = mysql_result($result, 0); + +?> + + + + Progress Quest Hall of <? echo($title) ?> + + + + +

+ + +
+Pop. $count"); +?> + +

+

Hall of

+ + + + += 1 ORDER BY level DESC, stamp LIMIT $min,$max"); + $name = stripslashes($name); + $n = $min + 1; + while ($row = mysql_fetch_row ($result)) { + $dbname = htmlspecialchars($row[0]); + $race = htmlspecialchars($row[1]); + $class = htmlspecialchars($row[2]); + $level = $row[3]; + $plot = htmlspecialchars($row[4]); + $item = htmlspecialchars($row[5]); + $spell = htmlspecialchars($row[6]); + $stat = htmlspecialchars($row[7]); + $motto = htmlspecialchars($row[8]); + $td = ($row[0] == $name) ? "td class=sel" : "td"; + echo("<$td align=right>$n.<$td>$dbname<$td>$race<$td>$class<$td align=right>$level<$td>$stat<$td>$plot<$td>$item<$td>$spell<$td>$motto"); + $n = $n + 1; + } +?> +
RankNameRaceClassLevelPrime StatPlot StagePrized ItemSpecialtyMotto (Ctrl-M)
+Were you wrongly accused? Make your case."); + + +?> + +

+ +Top 10 - +Top 100 + 100) $span = 100; + if ($span < 10) $span = 10; + if ($min > 0) { + $from = $min - $span; + if ($from < 0) + echo("- First $span\n"); + else + echo("- Previous $span\n"); + } + if ($max < $count) { + $to = $max + $span; + if ($to >= $count) { + $span = $count - $max; + echo("- Last $span\n"); + } else { + echo("- Next $span\n"); + } + } + } + + footer(); +?> diff --git a/www/index.Xhtml b/www/index.Xhtml new file mode 100644 index 0000000..c9228a4 --- /dev/null +++ b/www/index.Xhtml @@ -0,0 +1,59 @@ + + +hello + + + + + +

If + you can see this page, your account with Name2Host.com has been successfully + opened. You have 10 days of free trial time. This account will be automatically + disabled by the end of 10 days, so please upgrade it to a real account within + 10 days.

+

Before + upload any files, please pay attention to the following:

+

(1). + You can use the following file names as your default home page file name, the + search order is: "index.html, index.htm, default.html, index.cgi, index.php, + index.php3". So if you have both "index.html" and "index.htm", only "index.html" + will be shown, if you have both "index.htm and "index.php", only "index.htm" + will be shown, and so on.

+

(2). + When you upload files into your home directory, please put them under "public_html". + this directory is setup by the system and you should NOT delete it.

+

(3). + For security reason, please set the permission of your sensitive files to 700(-rwx------). +

+

(4). + Our system is UNIX, all the file names are case sensitive, we suggest that you + use lower case.

+

+ (5). We do not support ASP.

+

(6). + About CGI, perl and PHP: your CGI programs should be in: /home/***/public_html/cgi-bin/, + where "***" is your user name; for Perl, use: #!/usr/bin/perl; for PHP, use: + #!/usr/bin/php. Please do not use our server as CGI house, any CGI programs + that run by web pages that are not in our server will be removed.

+

(7). + You can only use POP3 email when you become real user, we will tell you how + to setup POP3 email box at that time.

+

You + may want to change the name of this file and keep it for future reference. If + you have more question, please check our "FAQ" page or send us email by using + our "Contact" page.

+

Thanks + for using Name2Host.com, we hope you become a real user soon, so that we can + continue to serve you. +

diff --git a/www/index.php b/www/index.php new file mode 100644 index 0000000..5a6d167 --- /dev/null +++ b/www/index.php @@ -0,0 +1,101 @@ + +

+ +
+Well, it seems the site is partially down. +We've gotten swamped. +Perhaps you can +download it + + +HERE +, + + +HERE +, + + +HERE +, + +or + +HERE +. + +

+Those downloads are likely to be mighty slow (Yahoo Briefcase is only so generous). +Luckily for you, several kind PQ fans have offered to host the download. Try one of +these: +

+ +

+You'll have to stick with single-player mode for the time being. +Check back soon; we're working hard on getting site back up. +

+- grumdrig@progressquest.com + +
+
+
+
+ + + + +
+
+In the meantime here's your chance to donate to the cause... +A thousand thanks to those who already have! +If you'd rather donate bandwidth, which also rules, kindly +send me a URL I can post here. +
+ +

+ Home - + Info - + Hall of Fame/Infamy - + Store - + Stats - + Forum + + + +

more testimonials..."; + +/* + quotation( + "The site died, but has returned. Please have patience if it dies again. We're working on it!", + "Grumdrig"); + print "
"; +*/ + + footer(); + include('log.php'); +?> \ No newline at end of file diff --git a/www/log.php b/www/log.php new file mode 100644 index 0000000..8135764 --- /dev/null +++ b/www/log.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/www/pay.html b/www/pay.html new file mode 100644 index 0000000..ea2b643 --- /dev/null +++ b/www/pay.html @@ -0,0 +1,6 @@ +
+ + + + +
\ No newline at end of file diff --git a/www/pq.css b/www/pq.css new file mode 100644 index 0000000..150260d --- /dev/null +++ b/www/pq.css @@ -0,0 +1,4 @@ + th { padding: 3px; border-style: solid; background-color: #ddddff; color: black; font: 8pt verdana; text-align: left; } + td { padding: 3px; border-style: solid; color: black; font: 8pt verdana; } + td.sel { background-color: #ffffa0; } + td.nobo { padding: 3px; border-style: none; color: black; font: 8pt verdana; } diff --git a/www/pq.gif b/www/pq.gif new file mode 100644 index 0000000..d81c232 Binary files /dev/null and b/www/pq.gif differ diff --git a/www/pq.html b/www/pq.html new file mode 100644 index 0000000..25770d3 --- /dev/null +++ b/www/pq.html @@ -0,0 +1,122 @@ + + + +

Progress Quest

+ +http://progressquest.com/ + +

Back story

+ +Since time before time the Vorlak had held the Crosshutch at Thraeskamp. +The ancient reckoning held that the Five Skrelkampi (and their Truebine) would +return when the great Trond-feast could be held anew and the Belnap reunited. +But this legend became lost to all but the Papperboxen at Horbug. +One of their own was Yallow the Speldrig, who found an unlikely pupil in +Torbole Understeady, the discarded illigitimate waif of Wainthane Topknox, +whom Yallow renamed Grumdrig and began to school as a boar-pulmet's apprentice. ...And, as it +was said by some, in aberdoxy. +

+As our story opens young Grumdrig has returned to Horbug following a trying stint in +Spilwaer Spond where his laconic disposition and fertile mind bred a series +of misadventures which had landed him outside the good graces of the Jordref there, +Welham, who had secretly begun a long term course of slow but +disaccomodating illpeel in the lad's morning fanwael. +Meanwhile, though scarce a tuft of mansefur had yet made its appearance +on the boy's manssach, a number of visiting Roilwachhs have begun to +exhibit a discreet +and seemingly inexplicable interest in the boy. Strange indeed, as he would not reach +his krouchensterm for another harvest or more. +And when Grumdrig's resiliant compatriot Paedri +appears at Drumdrig's lochnotat with a Scrolstamp from the old Speldrig, +a woozy foreboding feeling rises from his young gut... + +

Introduction

+ +Progress Quest is next generation computer role-playing game. +Gamers who have played modern online role-playing games, +or almost any computer role-playing game, +or who have at any time installed or upgraded their operating system, will find themselves +incredibly comfortable with Progress Quest's very familiar gameplay. +Progress Quest follows reverently in the footsteps of recent smash hit +online worlds, but is careful to streamline the more tedious aspects of those +offerings. Players will still have the satisfaction of building thier character +from a ninety-pound level 1 teenager, to an incredibly puissant, magically imbued warrior, +well able to snuff out the lives of a barnload of bugbears +without need of so much as a lunch break. Yet, gone are the tedious micromanagement +and other frustrations common to that older generation of RPG's. + +

User manual

+ +Even inexpereinced gamers will find Progress Quest +remarkably intutive and simple to play. Start the program +and click the New Game button. You will presented with the character creation screen. + +Select a name, race and class for the new character. Then, use the Roll button +until you are statisfied with the stats +for your character. Tip: You can use the Unroll button (a feature exclusive to Progress Quest) +to go back to any previous roll if you find that you've +clicked too hastily. +

+If "Play online" is checked, your character will share adventures with other Progress +Quest characters in an online virtual world. Online play is reccommended only for +users with always-on internet connectivity, though sophisiticated algorithms +keep the bandwidth usage to a minimum. You can compare your character against +the top Progress Quest players by visiting +http://progressquest.com/hi.php. +

+Finally, hit the Sold! button to begin the game. The game will start immediately and +you can safely familiarize yourself with the game's single interface screen as the game progresses +on its own. +Soon your avatar will will be seeking and destroying an exotic panopoly of beasts while you +gaze proudly on. Missing, you will notice, is the tedious march from town, the bewildering maze of cookie cutter +streets hiding some specific merchant or NPC, +and the repetetive hunt for just the right beast to execute. Progress Quest supplies +your character with an endless series of victims, as well as exciting quests which keep your quest +log full to the brim at all times. +

+TREASURE: Each slain creature yields a trophy, which can be sold in any town. +When the encumberance bar reaches maximum, your character automatically returns to the nearest town +to sell your loot. If sufficiently liquid, he may then purchase an upgrade in equpiment (weapon or armor). +That being done, the interpid adventurer then returns to the frontier to spill more blood. +Tip: The amount your character can carry before his encumberance bar fills up +increases as his STR stat improves. +

+QUESTS: When a quest is complete, your character is rewarded with one of: a) a special, valuable, treasure item, +b) an improved weapon +or piece of armor, c) a boost in stats, or d) a new spell for his spellbook. The character is then assigned +a follow-up quest, which he immediately begins to make progress on. +

+EXPERIENCE AND LEVELING UP: Experience represents your character's knowledge about the world +around him, as well as his battle prowess and ability to channel the forces of magical power. +Your character gains experience by killing monsters and sentient beings, +over and over again. Once the experience bar is full, your character levels up, and is +given an automatic boost in several of his stats and a new spell for his spellbook. +

+DYING: Be warned that your character can be slain by monsters which are tougher than +he can handle. However, this concept +has been abstracted out of the game and takes effect simply by somewhat reducing the experience +accumulated for each successful murder. +

+SAVING YOUR PROGRESS: Your game is saved whenever you quit, as well as each time your character levels +up or completes a quest. You can pick up where you left off by restarting Progress Quest and clicking the Load Game +button. + +

Game controls

+ +Progress Quest belongs to a new breed of "fire and forget" RPG's. There is no need to interact +with Progress Quest at all; it will make progress with you or without you. +

+You can quit Progress Quest by using the window close box, or by hitting <Alt>-<F4> +(hold down the <Alt> key while hitting <F4>), but there is really little need to ever do so. +Please note that your character will not make any progress except when Progress Quest is +running. Your character will make no progress once you quit the program, until you start +Progress Quest again. + +

Keyboard quick reference

+ + +
KeyDescription
Alt-F4Exit Progress Quest
+ +

+©:Copyright 2002 +grumdrig@progressquest.com diff --git a/www/pq.zip b/www/pq.zip new file mode 100644 index 0000000..7ab4132 Binary files /dev/null and b/www/pq.zip differ diff --git a/www/qp.zip b/www/qp.zip new file mode 100644 index 0000000..82289d3 --- /dev/null +++ b/www/qp.zip @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/www/stats.php b/www/stats.php new file mode 100644 index 0000000..8daefb1 --- /dev/null +++ b/www/stats.php @@ -0,0 +1,61 @@ + + + +

+

Stats

+ + + +"; + print "$caption"; + $result = mysql_query($query) or die(mysql_error()); + $n = 1; + while ($row = mysql_fetch_row ($result)) { + $v = htmlspecialchars($row[0]); + $p = round($row[1] / $row[2]); + print "$n. $v$p"; + $n++; + } + print ""; + } + + $filter = '(stigma = 0 AND level < 99 AND level > 0)'; + + $result = mysql_query("SELECT COUNT(*), SUM(level), SUM(LEAST(level-1,1)) FROM pqhi WHERE $filter") or die(mysql_error()); + $count = mysql_result($result, 0); + $slugg = mysql_result($result, 0, 1); + $elite = mysql_result($result, 0, 2); + print "Pop. $count
($elite level 2 or higher)
"; + print "Average Level: " . round($slugg/$count); + + $top = 5; + $suffix = ",1 FROM pqhi WHERE $filter GROUP BY 1 ORDER BY c DESC LIMIT $top"; + + print "
"; + showstats("Top $top Races by Popularity", "SELECT race, COUNT(*) AS c $suffix"); + print ""; + showstats("Top $top Races by Combined Level", "SELECT race, SUM(level) AS c $suffix"); + print "
"; + showstats("Top $top Classes by Popularity", "SELECT class, count(*) AS c $suffix"); + print ""; + showstats("Top $top Classes by Combined Level", "SELECT class, sum(level) AS c $suffix"); + print "
"; + showstats("Top $top Avatars by Popularity", "SELECT CONCAT(race,' ',class), count(*) AS c $suffix"); + print ""; + showstats("Top $top Avatars by Combined Level", "SELECT CONCAT(race,' ',class), sum(level) AS c $suffix"); + print "
"; + + footer(); +?> + + diff --git a/www/testimonials.php b/www/testimonials.php new file mode 100644 index 0000000..d4d5906 --- /dev/null +++ b/www/testimonials.php @@ -0,0 +1,14 @@ +Player Testimonials"; + + $result = mysql_query("SELECT quote,source FROM pqquotes ORDER BY num DESC") + or die(mysql_error()); + while($row = mysql_fetch_row($result)) + quotation($row[0], $row[1]); + footer(); +?> \ No newline at end of file diff --git a/www/traffic.php b/www/traffic.php new file mode 100644 index 0000000..8256790 --- /dev/null +++ b/www/traffic.php @@ -0,0 +1,127 @@ + 0 AND time='$d'") or die(mysql_error()); + $bs = mysql_result($result,0,0); + $brags[$d] = $bs; + + $d2 = date("Y-m-d", $day); + $result = mysql_query("SELECT COUNT(*) FROM posts WHERE post_time='$d2'") or die(mysql_error()); + $ps = mysql_result($result,0,0); + $posts[$d] = $ps; + + mysql_query("INSERT INTO pqsummary SET day='$d',posts=$ps,brags=$bs,dls=$ds") or die(mysql_error()); + } + + $m = date("F",$day); + if ($mstore && ($m != $mstore)) { + ImageFilledRectangle($gif, $x, $height+2, $x, $height+$margin, $black); + ImageString($gif, 2, $x + 5, $height, $m, $black); + } + $mstore = $m; + + if ($bmax) { + ImageFilledRectangle($gif, $x, $height-$brags[$d]*$height/$bmax, $x+$thickness-1, $height-1, $bcolor); + $x+=$thickness; + } + if ($pmax) { + ImageFilledRectangle($gif, $x, $height-$posts[$d]*$height/$pmax, $x+$thickness-1, $height-1, $pcolor); + $x+=$thickness; + } + if ($dmax) { + ImageFilledRectangle($gif, $x, $height-$dls[$d]*$height/$dmax, $x+$thickness-1, $height-1, $dcolor); + $x+=$thickness; + } + $x += $gap; + + $d++; + $day = strtotime($d); +} + +// send the image +header("content-type: image/png"); +ImagePng($gif); + +?> \ No newline at end of file diff --git a/www/util.php b/www/util.php new file mode 100644 index 0000000..a7d3ee6 --- /dev/null +++ b/www/util.php @@ -0,0 +1,64 @@ + + + + <? echo($title) ?> + + +

+ + +
+ progressus imprimis + +

+ Home - + Info - + Download - + Hall of Fame/Infamy - + Store - + Stats - + Forum + + + +

+ + + ©2002 grumdrig@progressquest.com + + + +

+ +
+
+
+ + + +
+ - +
+
+
+
+
+ \ No newline at end of file diff --git a/www/zap.zip/index.php b/www/zap.zip/index.php new file mode 100644 index 0000000..ee7afc4 --- /dev/null +++ b/www/zap.zip/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file