'Create a new Timestamp.
:param timestamp: time in seconds since the Epoch, may be any of:
* a float or integer
* normalized/internalized string
* another instance of this class (offset is preserved)
:param offset: the second internal offset vector, an int
:param delta: deca-microsecond difference from the base timestamp
param, an int'

def __init__(self, timestamp, offset=0, delta=0):

    if isinstance(timestamp, six.string_types):
        parts = timestamp.split('_', 1)
        self.timestamp = float(parts.pop(0))
        if parts:
            self.offset = int(parts[0], 16)
        else:
            self.offset = 0
    else:
        self.timestamp = float(timestamp)
        self.offset = getattr(timestamp, 'offset', 0)
    if (offset >= 0):
        self.offset += offset
    else:
        raise ValueError('offset    must    be    non-negative')
    if (self.offset > MAX_OFFSET):
        raise ValueError(('offset    must    be    smaller    than    %d' % MAX_OFFSET))
    self.raw = int(round((self.timestamp / PRECISION)))
    if delta:
        self.raw = (self.raw + delta)
        if (self.raw <= 0):
            raise ValueError(('delta    must    be    greater    than    %d' % ((-1) * self.raw)))
        self.timestamp = float((self.raw * PRECISION))
    if (self.timestamp < 0):
        raise ValueError('timestamp    cannot    be    negative')
    if (self.timestamp >= 10000000000):
        raise ValueError('timestamp    too    large')
