def contract_all_update_search(p, contract_hash, start=(- 1), end=(- 1)):
    results = []
    head_level = p.shell.head.header()['level']
    contract = p.contract(contract_hash)
    (origin_level, data) = contract_origin_search(p, contract_hash, verbose=1)
    start = start
    if ((origin_level > start) or (start == (- 1))):
        start = origin_level
        results.append([origin_level, data])
    else:
        data = contract.storage(start)
        results.append([start, data])
    end = end
    if ((end > head_level) or (end == (- 1))):
        end = head_level
    for lvl in range((start + 1), (end + 1)):
        if (contract_hash not in contract_dict.keys()):
            break
        data = contract.storage(lvl)
        if (data != results[(len(results) - 1)][1]):
            print('Ntf past', contract_hash, lvl, data, '\n')
            results.append([lvl, data])
            sleep(2)
    return (start, end, results)
def contract_all_update_search(p, contract_hash, start=(- 1), end=(- 1)):
    results = []
    head_level = p.shell.head.header()['level']
    contract = p.contract(contract_hash)
    (origin_level, data) = contract_origin_search(p, contract_hash, verbose=1)
    start = start
    if ((origin_level > start) or (start == (- 1))):
        start = origin_level
        results.append([origin_level, data])
    else:
        data = contract.storage(start)
        results.append([start, data])
    end = end
    if ((end > head_level) or (end == (- 1))):
        end = head_level
    for lvl in range((start + 1), (end + 1)):
        if (contract_hash not in contract_dict.keys()):
            break
        data = contract.storage(lvl)
        if (data != results[(len(results) - 1)][1]):
            print('Ntf past', contract_hash, lvl, data, '\n')
            results.append([lvl, data])
            sleep(2)
    return (start, end, results)