This is a Hapag-Lloyd booking confirmation.

The page header lists the carrier entity (e.g. 'HAPAG-LLOYD AG') and an area office line (e.g. 'AREA GERMANY & CENTRAL EUROPE, ROSENSTRASSE 17, D-20095 HAMBURG (AS CARRIER)'). Other branches print their own entity name (e.g. 'Hapag-Lloyd (Vietnam) Ltd.').

The colored summary band has: Our Reference, Your Reference, BL/SWB No(s)., Contract No., Booking Date, Summary, Export, Import.

Export haulage variants (printed on the 'Export:' line, e.g. 'FCL / Merchant's Haulage (CY)' or 'FCL / Carrier's Haulage (Door)'):
- Merchant's Haulage (CY): the customer hauls the empty to the carrier's terminal. The equipment table has an 'Empty pick up depot' column and an 'Export empty pick up depot(s)' block names the depot.
- Carrier's Haulage (Door): the carrier hauls the empty to the customer's premises. The equipment table has NO 'Empty pick up depot' column (just 'Empty pos. date/time'), and there is an 'Export door positioning address(es)' block instead. In this case 'Empty Container Depot' is not part of the document — leave pickUpDepot null. The door positioning address is the customer's facility, NOT a depot, so do NOT use it as pickUpDepot.

transportLegs rules:
- Sea freight only — emit ONE leg per VESSEL row of the 'From / To / By / ETD / ETA' table, in chronological order. SKIP inland rows (e.g. 'Combined Rail', 'Combined Truck', 'Feeder Truck' — any row whose 'By' column has no 'Vessel' block); do not emit them.
- portOfLoading = 'From' column of the vessel row. Join the cell's lines with a single space — do NOT keep newline characters (e.g. emit 'HAMBURG CTA,ALTENWERDER (DEHAM)', not 'HAMBURG\nCTA,ALTENWERDER\n(DEHAM)').
- portOfDischarge = 'To' column of the vessel row, joined with a single space — no newlines.
- etd / eta = ETD / ETA columns of the vessel row. Join date and time with a single space (e.g. '30-Apr-2026 13:53'); no newlines.
- vesselName = the name printed under the 'Vessel' label in the 'By' column. The 'By' column also lists 'DP Voyage', 'Voy. No', 'IMO No', 'Call Sign', 'Flag'.
- voyage = the value next to 'Voy. No:' (e.g. 'NA615A'). NOT 'DP Voyage'.
- Connectivity: leg N's portOfDischarge MUST equal leg N+1's portOfLoading.
- Time integrity ('no time travel'): each leg's eta must be >= its etd, AND <= the next leg's etd.
