import sys; sys.path.insert(0, "/root/fwa1")
from sim import *
days = ["2026-09-%02d" % d for d in range(15, 31)] + ["2026-10-0%d" % d for d in range(1, 5)]
E = load_edge(days)
L, Wt = load_crew(); root = {p: r for p, b, tx, c, r, *_ in L}; lb = {p: b for p, b, *_ in L}
cre = collections.defaultdict(list)
for pool, b, tx, creator, r_, fam, fee, t in L:
    if creator and b: cre[creator.lower()].append((b, r_))
def tag(creator, b, hops=5):
    w = (creator or "").lower()
    for h in range(hops):
        r = Wt.get(w)
        if not r or not r[1]: return None
        f = r[1]; prev = [x for x in cre.get(f, []) if x[0] < b and x[1]]
        if prev: return max(prev)[1]
        w = f
    return None
coins = []
for p, r in E.items():
    c = prep(r)
    if not c: continue
    p0, e = entry(c)
    if not p0: continue
    ret = {k: run(c, v)[0] for k, v in PLANS.items()}
    pk = peak(c)
    last = c["bs"][-1]
    res = (c["pull"] if c["pull"] is not None else last + 18000) + r["b0"]
    coins.append(dict(pool=p, day=r["day"], crew=root.get(p), tag=tag(r.get("creator") or r.get("tx_from") or "", lb.get(p, r["b0"])),
        badge=(r.get("fp") == "3854_17ad80" and not r.get("ival")), eb=r["b0"] + e, rb=res,
        hit3=pk >= 3, peak=pk, ret=ret, pull_s=(c["pull"] - c["fb"]) / 10 if c["pull"] is not None else None))
coins.sort(key=lambda x: x["eb"])
json.dump(coins, open("/root/fwa1/coins.json", "w"))
print("coins", len(coins), collections.Counter(x["day"] for x in coins))
