digraph G { initial[label="", shape="circle"]; pending_create[label="pending(purse-create)"]; pending_qr[label="pending(qr-ready)", shape="box"]; aborting_delete[label="aborting(delete-purse)"]; pending_withdraw[label="pending(withdraw)"]; suspended_withdraw[label="suspended(withdraw)", shape="box"]; pending_kyc[label="pending(kyc)"]; suspended_kyc[label="suspended(kyc)", shape="box"]; pending_aml[label="pending(aml)"]; suspended_aml[label="suspended(aml)", shape="box"]; aborted[label="aborted", shape="box"]; failed[label="failed", shape="box"]; done[label="done", shape="box"]; deleted[label="deleted", shape="box"]; // subgraph { // rank = same; pending_withdraw; failed; // } initial->pending_create [color="blue", label="form data"]; pending_create->pending_qr; pending_create->deleted [color="red", label="failure"]; pending_create->deleted [color="blue", label="cancel"]; pending_qr->aborted [label="timeout"]; pending_qr->aborting_delete [color="blue", label="abort"]; pending_qr->pending_withdraw; pending_qr->aborting_delete [color="red", label="poll-failure"]; aborting_delete->pending_withdraw [color="red", label="failure:already-merged"]; aborting_delete->aborted; aborting_delete->aborted [color="red", label="failure:other"]; aborting_delete->aborted [color="blue", label="force-abort"]; aborted->deleted [color="blue", label="delete"]; pending_withdraw->done; pending_withdraw->failed [color="red", label="failure"]; pending_withdraw->pending_kyc [label="kyc-required"]; pending_withdraw->pending_aml [label="aml-required"]; pending_withdraw->suspended_withdraw [color="blue", label="suspend"]; suspended_withdraw->pending_withdraw [color="blue", label="resume"]; suspended_withdraw->deleted [color="blue", label="force-delete"]; pending_kyc->suspended_kyc [color="blue", label="suspend"]; pending_kyc->pending_withdraw [color="purple", label="poll-success"]; suspended_kyc->pending_kyc [color="blue", label="resume"]; suspended_kyc->deleted [color="blue", label="force-delete"]; pending_aml->suspended_aml [color="blue", label="suspend"]; pending_aml->pending_withdraw [color="purple", label="poll-success"]; suspended_aml->pending_aml [color="blue", label="resume"]; suspended_aml->deleted [color="blue", label="force-delete"]; failed->deleted [color="blue", label="delete"]; done->deleted [color="blue", label="delete"]; }