# Path: caesure/bitcoin.py
# def P (msg):
#     def goto_testnet (self):
# def dhash (s):
# def rhash (s):
# def bcrepr (n):
# def float_to_btc (f):
# def key_to_address (s, version=0):
# def address_to_key (s, version=0):
# def compute_rewards (n):
# def compute_reward (height):
#     def __init__ (self):
#     def end (self):
#     def __init__ (self):
#     def copy (self):
#     def get_hash (self):
#     def dump (self, fout=sys.stdout):
#     def render (self):
#     def verify (self, index, lock_script, block_timestamp):
#     def dump (self, fout=sys.stdout):
#     def __len__ (self):
#     def get_height (self):
#     def make_TX (self):
#     def check_bits (self):
#     def get_merkle_hash (self):
#     def check_rules (self):
# W = sys.stderr.write
#     BITCOIN_PORT = 8333
#     MAGIC = '\xf9\xbe\xb4\xd9'
#     ADMIN_PORT = 8380
#     BD_FILE = '/tmp/caesure.bd'
#         ADMIN_PORT = 9380
#         BD_FILE = '/tmp/caesure_testnet.bd'
# ZERO_NAME = Name ('\x00' * 32)
# OBJ_TX    = 1
# OBJ_BLOCK = 2
# MAX_BLOCK_SIZE = 1000000
# COIN           = 100000000
# MAX_MONEY      = 21000000 * COIN
# NULL_OUTPOINT = (ZERO_NAME, 4294967295)
#         D = fout.write
# class NetworkConfig:
# class BadAddress (Exception):
# class timer:
# class TX (caesure.proto.TX):
# class BadBlock (Exception):
# class BLOCK (caesure.proto.BLOCK):


import os
import json
import re
import sys
    import argparse
from caesure.script import *
from caesure.bitcoin import TX, ZERO_NAME, KEY
    for i in range (len (s)):
        ch = s[i]
        if state_string:
            if ch == '\n':
                ch = r'\u000a'
            elif ch == '"':
                state_string = False
            r.append (ch)
        else:
            if ch == '"':
                state_string = True
            r.append (ch)
    return ''.join (r)

digits = re.compile ('-?[0-9]+$')

def parse_test (s):
    r = []
    for e in s.split():
        if digits.match (e):
            # push this integer
            r.append (make_push_int (int (e)))
        elif e.startswith ('0x'):
            # add raw hex to the script
            r.append (e[2:].decode ('hex'))
        elif len(e) >= 2 and e[0] == "'" and e[-1] == "'":
            # add a push to the script
            r.append (make_push_str (e[1:-1]))
        elif opcode_map_fwd.has_key (e):
            r.append (chr(opcode_map_fwd[e]))

# Path: caesure/bitcoin.py
# def P (msg):
#     def goto_testnet (self):
# def dhash (s):
# def rhash (s):
# def bcrepr (n):
# def float_to_btc (f):
# def key_to_address (s, version=0):
# def address_to_key (s, version=0):
# def compute_rewards (n):
# def compute_reward (height):
#     def __init__ (self):
#     def end (self):
#     def __init__ (self):
#     def copy (self):
#     def get_hash (self):
#     def dump (self, fout=sys.stdout):
#     def render (self):
#     def verify (self, index, lock_script, block_timestamp):
#     def dump (self, fout=sys.stdout):
#     def __len__ (self):
#     def get_height (self):
#     def make_TX (self):
#     def check_bits (self):
#     def get_merkle_hash (self):
#     def check_rules (self):
# W = sys.stderr.write
#     BITCOIN_PORT = 8333
#     MAGIC = '\xf9\xbe\xb4\xd9'
#     ADMIN_PORT = 8380
#     BD_FILE = '/tmp/caesure.bd'
#         ADMIN_PORT = 9380
#         BD_FILE = '/tmp/caesure_testnet.bd'
# ZERO_NAME = Name ('\x00' * 32)
# OBJ_TX    = 1
# OBJ_BLOCK = 2
# MAX_BLOCK_SIZE = 1000000
# COIN           = 100000000
# MAX_MONEY      = 21000000 * COIN
# NULL_OUTPOINT = (ZERO_NAME, 4294967295)
#         D = fout.write
# class NetworkConfig:
# class BadAddress (Exception):
# class timer:
# class TX (caesure.proto.TX):
# class BadBlock (Exception):
# class BLOCK (caesure.proto.BLOCK):


# Path: test/test_core.py
import os
import json
import re
import sys
    import argparse
from caesure.script import *
from caesure.bitcoin import TX, ZERO_NAME, KEY

    for i in range (len (s)):
        ch = s[i]
        if state_string:
            if ch == '\n':
                ch = r'\u000a'
            elif ch == '"':
                state_string = False
            r.append (ch)
        else:
            if ch == '"':
                state_string = True
            r.append (ch)
    return ''.join (r)

digits = re.compile ('-?[0-9]+$')

def parse_test (s):
    r = []
    for e in s.split():
        if digits.match (e):
            # push this integer
            r.append (make_push_int (int (e)))
        elif e.startswith ('0x'):
            # add raw hex to the script
            r.append (e[2:].decode ('hex'))
        elif len(e) >= 2 and e[0] == "'" and e[-1] == "'":
            # add a push to the script
            r.append (make_push_str (e[1:-1]))
        elif opcode_map_fwd.has_key (e):
            r.append (chr(opcode_map_fwd[e]))

        elif opcode_map_fwd.has_key ('OP_'+e):