Skip to content

Instantly share code, notes, and snippets.

@mplewis
Created March 6, 2014 06:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mplewis/9383518 to your computer and use it in GitHub Desktop.
Save mplewis/9383518 to your computer and use it in GitHub Desktop.
An iPython Notebook for analyzing Pokemon Red/Blue saves
{
"metadata": {
"name": "Pokemon save parser"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": "import string\nimport json\nfrom pprint import pprint\n\nchar_map = {}\n\ndef char_map_store(offset, symbols):\n for symbol in symbols:\n char_map[offset] = symbol\n offset += 1\n\nchar_map_store(0x50, '#')\nchar_map_store(0x7F, ' ')\nchar_map_store(0x80, string.uppercase + '():;[]')\nchar_map_store(0xA0, string.lowercase)\nchar_map_store(0xE1, '{}-')\nchar_map_store(0xE6, '?!.')\nchar_map_store(0xF1, '*')\nchar_map_store(0xF3, '/,')\nchar_map_store(0xF6, string.digits)\n\nwith open('pkmn_moves_gen1.json', 'r') as f:\n move_map = json.load(f)\n\nwith open('pkmn_indexes_gen1.json', 'r') as f:\n index_map = json.load(f)\n\n# Read <length> bytes from <source> starting at <offset>\ndef read_bytes(source, offset, length):\n return source[offset:offset+length]\n\n# Translate a binary string of data into a pseudo-ASCII string\ndef pkmn_to_ascii(binary, is_str=True):\n return ''.join([char_map[b] for b in binary])\n\n# Chop off the end of an array with a terminator\ndef term(ascii_array):\n return ascii_array.split('#')[0]\n\n# Convert multiple bytes to an integer\ndef bytes_to_int(bytes):\n num = len(bytes)\n val = 0\n for pos, byte in enumerate(bytes):\n val += byte << ((num - pos - 1) * 8)\n return val\n\n# Get the player's money from save data\ndef money(pkmn_save_data):\n curr_pos = 5\n money = 0\n for b in read_bytes(pkmn_save_data, 0x25F3, 3):\n money += int(ord(b) >> 4) * 10 ** curr_pos\n curr_pos -= 1\n money += int(ord(b) & 0x0F) * 10 ** curr_pos\n curr_pos -= 1\n return money\n\nwith open('tpp.sav', 'rb') as f:\n tpp = f.read()",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": "term(pkmn_to_ascii([ord(b) for b in read_bytes(tpp, 0x2598, 8)]))",
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 2,
"text": "'RED'"
}
],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": "bytes_to_int([ord(b) for b in read_bytes(tpp, 0x2605, 2)])",
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"text": "20152"
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": "term(pkmn_to_ascii([ord(b) for b in read_bytes(tpp, 0x25F6, 8)]))",
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"text": "'BLUE'"
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": "money(tpp)",
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 5,
"text": "40398"
}
],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": "pkmn_data = [ord(b) for b in read_bytes(tpp, 0x2F2C, 404)]\nnum_pkmn = pkmn_data[0]\npkmn_ids = [hex(n) for n in pkmn_data[1:num_pkmn + 1]]\n\ndef parse_pkmn(data):\n pkmn = {}\n pkmn['index'] = data[0]\n pkmn['species'] = index_map[pkmn['index']]\n pkmn['hp_curr'] = bytes_to_int(data[1:3])\n pkmn['hp_max'] = bytes_to_int(data[0x22:0x24])\n pkmn['moves'] = data[0x08:0x0C]\n pkmn['move_names'] = [move_map[move] for move in pkmn['moves']]\n pkmn['move_pp'] = data[0x1D:0x21]\n pkmn['type_1'] = data[0x05]\n pkmn['type_2'] = data[0x06]\n pkmn['trainer_id'] = bytes_to_int(data[0x0C:0x0E])\n pkmn['level'] = data[0x21]\n pkmn['exp'] = bytes_to_int(data[0x0E:0x11])\n pkmn['ev_hp'] = bytes_to_int(data[0x11:0x13])\n pkmn['ev_attack'] = bytes_to_int(data[0x13:0x15])\n pkmn['ev_defense'] = bytes_to_int(data[0x15:0x17])\n pkmn['ev_speed'] = bytes_to_int(data[0x17:0x19])\n pkmn['ev_special'] = bytes_to_int(data[0x19:0x1B])\n pkmn['attack'] = bytes_to_int(data[0x24:0x26])\n pkmn['defense'] = bytes_to_int(data[0x26:0x28])\n pkmn['speed'] = bytes_to_int(data[0x28:0x2A])\n pkmn['special'] = bytes_to_int(data[0x2A:0x2C])\n return pkmn\n\npkmn_length = 44\npkmn_offset = 0x08\ntrainer_length = 11\ntrainer_offset = 0x110\nnickname_length = 11\nnickname_offset = 0x152\n\nprint num_pkmn, 'pokemon in party'\nprint\nfor num in xrange(num_pkmn):\n pkmn_start = num * pkmn_length + pkmn_offset\n pkmn_end_inc = pkmn_start + pkmn_length\n trainer_start = num * trainer_length + trainer_offset\n trainer_end_inc = trainer_start + trainer_length\n nickname_start = num * nickname_length + nickname_offset\n nickname_end_inc = nickname_start + nickname_length\n \n one_pkmn_data_raw = pkmn_data[pkmn_start:pkmn_end_inc]\n trainer_data_raw = pkmn_data[trainer_start:trainer_end_inc]\n nickname_data_raw = pkmn_data[nickname_start:nickname_end_inc]\n \n one_pkmn_data = parse_pkmn(one_pkmn_data_raw)\n one_pkmn_data['trainer_name'] = term(pkmn_to_ascii(trainer_data_raw, is_str=False))\n one_pkmn_data['nickname'] = term(pkmn_to_ascii(nickname_data_raw, is_str=False))\n \n pprint(one_pkmn_data)\n\nprint\nprint 'Hex', '\\t', 'Dec', '\\t', 'Data', '\\t', 'Char'\nprint '================================'\nfor i, d in enumerate(pkmn_data):\n if d in char_map:\n print hex(i), '\\t', i, '\\t', hex(d), '\\t', char_map[d]\n else:\n print hex(i), '\\t', i, '\\t', hex(d)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "6 pokemon in party\n\n{'attack': 191,\n 'defense': 205,\n 'ev_attack': 40782,\n 'ev_defense': 40402,\n 'ev_hp': 29047,\n 'ev_special': 33900,\n 'ev_speed': 33170,\n 'exp': 675851,\n 'hp_curr': 207,\n 'hp_max': 274,\n 'index': 75,\n 'level': 81,\n 'move_names': [u'Thunder Shock', u'Drill Peck', u'Take Down', u'Thunder'],\n 'move_pp': [5, 16, 20, 0],\n 'moves': [84, 65, 36, 87],\n 'nickname': 'AA-j',\n 'special': 260,\n 'species': u'Zapdos',\n 'speed': 214,\n 'trainer_id': 20152,\n 'trainer_name': 'RED',\n 'type_1': 23,\n 'type_2': 2}\n{'attack': 131,\n 'defense': 113,\n 'ev_attack': 12535,\n 'ev_defense': 12535,\n 'ev_hp': 8723,\n 'ev_special': 9757,\n 'ev_speed': 10999,\n 'exp': 158232,\n 'hp_curr': 56,\n 'hp_max': 167,\n 'index': 7,\n 'level': 54,\n 'move_names': [u'Surf', u'Poison Sting', u'Strength', u'Fury Attack'],\n 'move_pp': [11, 35, 14, 16],\n 'moves': [57, 40, 70, 31],\n 'nickname': 'AAAAAAAAAA',\n 'special': 113,\n 'species': u'Nidoking',\n 'speed': 118,\n 'trainer_id': 20152,\n 'trainer_name': 'RED',\n 'type_1': 3,\n 'type_2': 4}\n{'attack': 93,\n 'defense': 148,\n 'ev_attack': 10409,\n 'ev_defense': 11047,\n 'ev_hp': 7396,\n 'ev_special': 7678,\n 'ev_speed': 8848,\n 'exp': 144399,\n 'hp_curr': 0,\n 'hp_max': 154,\n 'index': 99,\n 'level': 52,\n 'move_names': [u'Hydro Pump', u'Withdraw', u'Surf', u'Horn Attack'],\n 'move_pp': [4, 40, 14, 25],\n 'moves': [56, 110, 57, 30],\n 'nickname': 'OMASTAR',\n 'special': 139,\n 'species': u'Omastar',\n 'speed': 88,\n 'trainer_id': 20152,\n 'trainer_name': 'RED',\n 'type_1': 5,\n 'type_2': 21}\n{'attack': 68,\n 'defense': 59,\n 'ev_attack': 3306,\n 'ev_defense': 5723,\n 'ev_hp': 2656,\n 'ev_special': 2738,\n 'ev_speed': 5478,\n 'exp': 61577,\n 'hp_curr': 40,\n 'hp_max': 114,\n 'index': 119,\n 'level': 39,\n 'move_names': [u'Disable', u'Poison Powder', u'Leech Life', u'Stun Spore'],\n 'move_pp': [14, 34, 12, 30],\n 'moves': [50, 77, 141, 78],\n 'nickname': 'AATTVVV',\n 'special': 84,\n 'species': u'Venomoth',\n 'speed': 90,\n 'trainer_id': 20152,\n 'trainer_name': 'RED',\n 'type_1': 7,\n 'type_2': 3}\n{'attack': 62,\n 'defense': 61,\n 'ev_attack': 3687,\n 'ev_defense': 3653,\n 'ev_hp': 2898,\n 'ev_special': 3262,\n 'ev_speed': 3870,\n 'exp': 37252,\n 'hp_curr': 0,\n 'hp_max': 129,\n 'index': 19,\n 'level': 31,\n 'move_names': [u'Confuse Ray', u'Mist', u'Surf', u'Strength'],\n 'move_pp': [10, 30, 15, 14],\n 'moves': [109, 54, 57, 70],\n 'nickname': 'AIIIIIIRRR',\n 'special': 68,\n 'species': u'Lapras',\n 'speed': 51,\n 'trainer_id': 20152,\n 'trainer_name': 'RED',\n 'type_1': 21,\n 'type_2': 25}\n{'attack': 165,\n 'defense': 158,\n 'ev_attack': 46310,\n 'ev_defense': 43592,\n 'ev_hp': 36622,\n 'ev_special': 37385,\n 'ev_speed': 43788,\n 'exp': 343472,\n 'hp_curr': 0,\n 'hp_max': 225,\n 'index': 151,\n 'level': 69,\n 'move_names': [u'Mirror Move',\n u'Sand Attack',\n u'Quick Attack',\n u'Sky Attack'],\n 'move_pp': [15, 11, 28, 4],\n 'moves': [119, 28, 98, 143],\n 'nickname': 'aaabaaajss',\n 'special': 140,\n 'species': u'Pidgeot',\n 'speed': 174,\n 'trainer_id': 20152,\n 'trainer_name': 'RED',\n 'type_1': 0,\n 'type_2': 2}\n\nHex \tDec \tData \tChar\n================================\n0x0 \t0 \t0x6\n0x1 \t1 \t0x4b\n0x2 \t2 \t0x7\n0x3 \t3 \t0x63\n0x4 \t4 \t0x77\n0x5 \t5 \t0x13\n0x6 \t6 \t0x97 \tX\n0x7 \t7 \t0xff \t9\n0x8 \t8 \t0x4b\n0x9 \t9 \t0x0\n0xa \t10 \t0xcf\n0xb \t11 \t0x32\n0xc \t12 \t0x0\n0xd \t13 \t0x17\n0xe \t14 \t0x2\n0xf \t15 \t0x3\n0x10 \t16 \t0x54\n0x11 \t17 \t0x41\n0x12 \t18 \t0x24\n0x13 \t19 \t0x57\n0x14 \t20 \t0x4e\n0x15 \t21 \t0xb8 \ty\n0x16 \t22 \t0xa\n0x17 \t23 \t0x50 \t#\n0x18 \t24 \t0xb\n0x19 \t25 \t0x71\n0x1a \t26 \t0x77\n0x1b \t27 \t0x9f \t]\n0x1c \t28 \t0x4e\n0x1d \t29 \t0x9d \t;\n0x1e \t30 \t0xd2\n0x1f \t31 \t0x81 \tB\n0x20 \t32 \t0x92 \tS\n0x21 \t33 \t0x84 \tE\n0x22 \t34 \t0x6c\n0x23 \t35 \t0xe\n0x24 \t36 \t0x7a\n0x25 \t37 \t0x5\n0x26 \t38 \t0x10\n0x27 \t39 \t0x14\n0x28 \t40 \t0x0\n0x29 \t41 \t0x51\n0x2a \t42 \t0x1\n0x2b \t43 \t0x12\n0x2c \t44 \t0x0\n0x2d \t45 \t0xbf\n0x2e \t46 \t0x0\n0x2f \t47 \t0xcd\n0x30 \t48 \t0x0\n0x31 \t49 \t0xd6\n0x32 \t50 \t0x1\n0x33 \t51 \t0x4\n0x34 \t52 \t0x7\n0x35 \t53 \t0x0\n0x36 \t54 \t0x38\n0x37 \t55 \t0x21\n0x38 \t56 \t0x0\n0x39 \t57 \t0x3\n0x3a \t58 \t0x4\n0x3b \t59 \t0x78\n0x3c \t60 \t0x39\n0x3d \t61 \t0x28\n0x3e \t62 \t0x46\n0x3f \t63 \t0x1f\n0x40 \t64 \t0x4e\n0x41 \t65 \t0xb8 \ty\n0x42 \t66 \t0x2\n0x43 \t67 \t0x6a\n0x44 \t68 \t0x18\n0x45 \t69 \t0x22\n0x46 \t70 \t0x13\n0x47 \t71 \t0x30\n0x48 \t72 \t0xf7 \t1\n0x49 \t73 \t0x30\n0x4a \t74 \t0xf7 \t1\n0x4b \t75 \t0x2a\n0x4c \t76 \t0xf7 \t1\n0x4d \t77 \t0x26\n0x4e \t78 \t0x1d\n0x4f \t79 \t0xca\n0x50 \t80 \t0x7d\n0x51 \t81 \t0xb\n0x52 \t82 \t0x23\n0x53 \t83 \t0xe\n0x54 \t84 \t0x10\n0x55 \t85 \t0x36\n0x56 \t86 \t0x0\n0x57 \t87 \t0xa7 \th\n0x58 \t88 \t0x0\n0x59 \t89 \t0x83 \tD\n0x5a \t90 \t0x0\n0x5b \t91 \t0x71\n0x5c \t92 \t0x0\n0x5d \t93 \t0x76\n0x5e \t94 \t0x0\n0x5f \t95 \t0x71\n0x60 \t96 \t0x63\n0x61 \t97 \t0x0\n0x62 \t98 \t0x0\n0x63 \t99 \t0x1e\n0x64 \t100 \t0x0\n0x65 \t101 \t0x5\n0x66 \t102 \t0x15\n0x67 \t103 \t0x2d\n0x68 \t104 \t0x38\n0x69 \t105 \t0x6e\n0x6a \t106 \t0x39\n0x6b \t107 \t0x1e\n0x6c \t108 \t0x4e\n0x6d \t109 \t0xb8 \ty\n0x6e \t110 \t0x2\n0x6f \t111 \t0x34\n0x70 \t112 \t0xf\n0x71 \t113 \t0x1c\n0x72 \t114 \t0xe4\n0x73 \t115 \t0x28\n0x74 \t116 \t0xa9 \tj\n0x75 \t117 \t0x2b\n0x76 \t118 \t0x27\n0x77 \t119 \t0x22\n0x78 \t120 \t0x90 \tQ\n0x79 \t121 \t0x1d\n0x7a \t122 \t0xfe \t8\n0x7b \t123 \t0xd0\n0x7c \t124 \t0xe4\n0x7d \t125 \t0x4\n0x7e \t126 \t0x28\n0x7f \t127 \t0xe\n0x80 \t128 \t0x19\n0x81 \t129 \t0x34\n0x82 \t130 \t0x0\n0x83 \t131 \t0x9a \t(\n0x84 \t132 \t0x0\n0x85 \t133 \t0x5d\n0x86 \t134 \t0x0\n0x87 \t135 \t0x94 \tU\n0x88 \t136 \t0x0\n0x89 \t137 \t0x58\n0x8a \t138 \t0x0\n0x8b \t139 \t0x8b \tL\n0x8c \t140 \t0x77\n0x8d \t141 \t0x0\n0x8e \t142 \t0x28\n0x8f \t143 \t0x22\n0x90 \t144 \t0x0\n0x91 \t145 \t0x7\n0x92 \t146 \t0x3\n0x93 \t147 \t0x4b\n0x94 \t148 \t0x32\n0x95 \t149 \t0x4d\n0x96 \t150 \t0x8d \tN\n0x97 \t151 \t0x4e\n0x98 \t152 \t0x4e\n0x99 \t153 \t0xb8 \ty\n0x9a \t154 \t0x0\n0x9b \t155 \t0xf0\n0x9c \t156 \t0x89 \tJ\n0x9d \t157 \t0xa\n0x9e \t158 \t0x60\n0x9f \t159 \t0xc\n0xa0 \t160 \t0xea\n0xa1 \t161 \t0x16\n0xa2 \t162 \t0x5b\n0xa3 \t163 \t0x15\n0xa4 \t164 \t0x66\n0xa5 \t165 \t0xa\n0xa6 \t166 \t0xb2 \ts\n0xa7 \t167 \t0x90 \tQ\n0xa8 \t168 \t0xa6 \tg\n0xa9 \t169 \t0xe\n0xaa \t170 \t0x22\n0xab \t171 \t0xc\n0xac \t172 \t0x1e\n0xad \t173 \t0x27\n0xae \t174 \t0x0\n0xaf \t175 \t0x72\n0xb0 \t176 \t0x0\n0xb1 \t177 \t0x44\n0xb2 \t178 \t0x0\n0xb3 \t179 \t0x3b\n0xb4 \t180 \t0x0\n0xb5 \t181 \t0x5a\n0xb6 \t182 \t0x0\n0xb7 \t183 \t0x54\n0xb8 \t184 \t0x13\n0xb9 \t185 \t0x0\n0xba \t186 \t0x0\n0xbb \t187 \t0x14\n0xbc \t188 \t0x0\n0xbd \t189 \t0x15\n0xbe \t190 \t0x19\n0xbf \t191 \t0x2d\n0xc0 \t192 \t0x6d\n0xc1 \t193 \t0x36\n0xc2 \t194 \t0x39\n0xc3 \t195 \t0x46\n0xc4 \t196 \t0x4e\n0xc5 \t197 \t0xb8 \ty\n0xc6 \t198 \t0x0\n0xc7 \t199 \t0x91 \tR\n0xc8 \t200 \t0x84 \tE\n0xc9 \t201 \t0xb\n0xca \t202 \t0x52\n0xcb \t203 \t0xe\n0xcc \t204 \t0x67\n0xcd \t205 \t0xe\n0xce \t206 \t0x45\n0xcf \t207 \t0xf\n0xd0 \t208 \t0x1e\n0xd1 \t209 \t0xc\n0xd2 \t210 \t0xbe\n0xd3 \t211 \t0x3\n0xd4 \t212 \t0x71\n0xd5 \t213 \t0xa\n0xd6 \t214 \t0x1e\n0xd7 \t215 \t0xf\n0xd8 \t216 \t0xe\n0xd9 \t217 \t0x1f\n0xda \t218 \t0x0\n0xdb \t219 \t0x81 \tB\n0xdc \t220 \t0x0\n0xdd \t221 \t0x3e\n0xde \t222 \t0x0\n0xdf \t223 \t0x3d\n0xe0 \t224 \t0x0\n0xe1 \t225 \t0x33\n0xe2 \t226 \t0x0\n0xe3 \t227 \t0x44\n0xe4 \t228 \t0x97 \tX\n0xe5 \t229 \t0x0\n0xe6 \t230 \t0x0\n0xe7 \t231 \t0x3c\n0xe8 \t232 \t0x0\n0xe9 \t233 \t0x0\n0xea \t234 \t0x2\n0xeb \t235 \t0xff \t9\n0xec \t236 \t0x77\n0xed \t237 \t0x1c\n0xee \t238 \t0x62\n0xef \t239 \t0x8f \tP\n0xf0 \t240 \t0x4e\n0xf1 \t241 \t0xb8 \ty\n0xf2 \t242 \t0x5\n0xf3 \t243 \t0x3d\n0xf4 \t244 \t0xb0 \tq\n0xf5 \t245 \t0x8f \tP\n0xf6 \t246 \t0xe\n0xf7 \t247 \t0xb4 \tu\n0xf8 \t248 \t0xe6 \t?\n0xf9 \t249 \t0xaa \tk\n0xfa \t250 \t0x48\n0xfb \t251 \t0xab \tl\n0xfc \t252 \t0xc\n0xfd \t253 \t0x92 \tS\n0xfe \t254 \t0x9\n0xff \t255 \t0xaa \tk\n0x100 \t256 \t0x64\n0x101 \t257 \t0xf\n0x102 \t258 \t0xb\n0x103 \t259 \t0x1c\n0x104 \t260 \t0x4\n0x105 \t261 \t0x45\n0x106 \t262 \t0x0\n0x107 \t263 \t0xe1 \t{\n0x108 \t264 \t0x0\n0x109 \t265 \t0xa5 \tf\n0x10a \t266 \t0x0\n0x10b \t267 \t0x9e \t[\n0x10c \t268 \t0x0\n0x10d \t269 \t0xae \to\n0x10e \t270 \t0x0\n0x10f \t271 \t0x8c \tM\n0x110 \t272 \t0x91 \tR\n0x111 \t273 \t0x84 \tE\n0x112 \t274 \t0x83 \tD\n0x113 \t275 \t0x50 \t#\n0x114 \t276 \t0x80 \tA\n0x115 \t277 \t0x92 \tS\n0x116 \t278 \t0x87 \tH\n0x117 \t279 \t0x50 \t#\n0x118 \t280 \t0x89 \tJ\n0x119 \t281 \t0x80 \tA\n0x11a \t282 \t0x82 \tC\n0x11b \t283 \t0x91 \tR\n0x11c \t284 \t0x84 \tE\n0x11d \t285 \t0x83 \tD\n0x11e \t286 \t0x50 \t#\n0x11f \t287 \t0x80 \tA\n0x120 \t288 \t0x92 \tS\n0x121 \t289 \t0x87 \tH\n0x122 \t290 \t0x50 \t#\n0x123 \t291 \t0x89 \tJ\n0x124 \t292 \t0x80 \tA\n0x125 \t293 \t0x82 \tC\n0x126 \t294 \t0x91 \tR\n0x127 \t295 \t0x84 \tE\n0x128 \t296 \t0x83 \tD\n0x129 \t297 \t0x50 \t#\n0x12a \t298 \t0x80 \tA\n0x12b \t299 \t0x92 \tS\n0x12c \t300 \t0x87 \tH\n0x12d \t301 \t0x50 \t#\n0x12e \t302 \t0x89 \tJ\n0x12f \t303 \t0x80 \tA\n0x130 \t304 \t0x82 \tC\n0x131 \t305 \t0x91 \tR\n0x132 \t306 \t0x84 \tE\n0x133 \t307 \t0x83 \tD\n0x134 \t308 \t0x50 \t#\n0x135 \t309 \t0x80 \tA\n0x136 \t310 \t0x92 \tS\n0x137 \t311 \t0x87 \tH\n0x138 \t312 \t0x50 \t#\n0x139 \t313 \t0x89 \tJ\n0x13a \t314 \t0x80 \tA\n0x13b \t315 \t0x82 \tC\n0x13c \t316 \t0x91 \tR\n0x13d \t317 \t0x84 \tE\n0x13e \t318 \t0x83 \tD\n0x13f \t319 \t0x50 \t#\n0x140 \t320 \t0x80 \tA\n0x141 \t321 \t0x92 \tS\n0x142 \t322 \t0x87 \tH\n0x143 \t323 \t0x50 \t#\n0x144 \t324 \t0x89 \tJ\n0x145 \t325 \t0x80 \tA\n0x146 \t326 \t0x82 \tC\n0x147 \t327 \t0x91 \tR\n0x148 \t328 \t0x84 \tE\n0x149 \t329 \t0x83 \tD\n0x14a \t330 \t0x50 \t#\n0x14b \t331 \t0x80 \tA\n0x14c \t332 \t0x92 \tS\n0x14d \t333 \t0x87 \tH\n0x14e \t334 \t0x50 \t#\n0x14f \t335 \t0x89 \tJ\n0x150 \t336 \t0x80 \tA\n0x151 \t337 \t0x82 \tC\n0x152 \t338 \t0x80 \tA\n0x153 \t339 \t0x80 \tA\n0x154 \t340 \t0xe3 \t-\n0x155 \t341 \t0xa9 \tj\n0x156 \t342 \t0x50 \t#\n0x157 \t343 \t0x50 \t#\n0x158 \t344 \t0x50 \t#\n0x159 \t345 \t0x50 \t#\n0x15a \t346 \t0x50 \t#\n0x15b \t347 \t0x50 \t#\n0x15c \t348 \t0x8b \tL\n0x15d \t349 \t0x80 \tA\n0x15e \t350 \t0x80 \tA\n0x15f \t351 \t0x80 \tA\n0x160 \t352 \t0x80 \tA\n0x161 \t353 \t0x80 \tA\n0x162 \t354 \t0x80 \tA\n0x163 \t355 \t0x80 \tA\n0x164 \t356 \t0x80 \tA\n0x165 \t357 \t0x80 \tA\n0x166 \t358 \t0x80 \tA\n0x167 \t359 \t0x50 \t#\n0x168 \t360 \t0x8e \tO\n0x169 \t361 \t0x8c \tM\n0x16a \t362 \t0x80 \tA\n0x16b \t363 \t0x92 \tS\n0x16c \t364 \t0x93 \tT\n0x16d \t365 \t0x80 \tA\n0x16e \t366 \t0x91 \tR\n0x16f \t367 \t0x50 \t#\n0x170 \t368 \t0x50 \t#\n0x171 \t369 \t0x50 \t#\n0x172 \t370 \t0x50 \t#\n0x173 \t371 \t0x80 \tA\n0x174 \t372 \t0x80 \tA\n0x175 \t373 \t0x93 \tT\n0x176 \t374 \t0x93 \tT\n0x177 \t375 \t0x95 \tV\n0x178 \t376 \t0x95 \tV\n0x179 \t377 \t0x95 \tV\n0x17a \t378 \t0x50 \t#\n0x17b \t379 \t0x80 \tA\n0x17c \t380 \t0x8b \tL\n0x17d \t381 \t0x8b \tL\n0x17e \t382 \t0x80 \tA\n0x17f \t383 \t0x88 \tI\n0x180 \t384 \t0x88 \tI\n0x181 \t385 \t0x88 \tI\n0x182 \t386 \t0x88 \tI\n0x183 \t387 \t0x88 \tI\n0x184 \t388 \t0x88 \tI\n0x185 \t389 \t0x91 \tR\n0x186 \t390 \t0x91 \tR\n0x187 \t391 \t0x91 \tR\n0x188 \t392 \t0x50 \t#\n0x189 \t393 \t0xa0 \ta\n0x18a \t394 \t0xa0 \ta\n0x18b \t395 \t0xa0 \ta\n0x18c \t396 \t0xa1 \tb\n0x18d \t397 \t0xa0 \ta\n0x18e \t398 \t0xa0 \ta\n0x18f \t399 \t0xa0 \ta\n0x190 \t400 \t0xa9 \tj\n0x191 \t401 \t0xb2 \ts\n0x192 \t402 \t0xb2 \ts\n0x193 \t403 \t0x50 \t#\n"
}
],
"prompt_number": 6
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment