@seatlayer/core 0.102.0 → 0.103.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/dist/ar-D6ASWQBI.js +1 -0
  2. package/dist/be-T23MSCFC.js +1 -0
  3. package/dist/bg-2MMSY43I.js +1 -0
  4. package/dist/ca-EXRTYE33.js +1 -0
  5. package/dist/{categoryInventory-7gSFTu0l.d.cts → categoryInventory-D_gpkfsq.d.cts} +1 -1
  6. package/dist/{categoryInventory-hJxuFF9L.d.ts → categoryInventory-i-mGCBD3.d.ts} +1 -1
  7. package/dist/{chunk-ZS5YFXSE.js → chunk-2STEWCI2.js} +1 -1
  8. package/dist/chunk-33SRM2CP.js +1 -0
  9. package/dist/chunk-3W4ZMU4G.js +1 -0
  10. package/dist/chunk-76AUT55N.js +1 -0
  11. package/dist/chunk-B75VUM6L.js +1 -0
  12. package/dist/{chunk-GTRYL7YV.js → chunk-FAY7ARLB.js} +1 -1
  13. package/dist/chunk-NWRHKTMV.js +1 -0
  14. package/dist/{chunk-4DYJCT62.js → chunk-QG7ZFUNX.js} +1 -1
  15. package/dist/{chunk-AFJWTB7L.js → chunk-R2TRYVOY.js} +1 -1
  16. package/dist/{chunk-PHV2U54Y.js → chunk-RF4QU72N.js} +1 -1
  17. package/dist/{chunk-FOIYJ5NT.js → chunk-TFYAMLCK.js} +1 -1
  18. package/dist/chunk-TZBJCAXH.js +1 -0
  19. package/dist/{chunk-254ABRJF.js → chunk-UEYHH7Y5.js} +1 -1
  20. package/dist/{chunk-COECA63Q.js → chunk-WH2EVBIG.js} +1 -1
  21. package/dist/chunk-WKWXU5QM.js +1 -0
  22. package/dist/core/chart-ops/index.cjs +1 -1
  23. package/dist/core/chart-ops/index.d.cts +466 -14
  24. package/dist/core/chart-ops/index.d.ts +466 -14
  25. package/dist/core/chart-ops/index.js +1 -1
  26. package/dist/core/color.d.cts +1 -1
  27. package/dist/core/color.d.ts +1 -1
  28. package/dist/core/inventory/index.cjs +1 -1
  29. package/dist/core/inventory/index.d.cts +4 -4
  30. package/dist/core/inventory/index.d.ts +4 -4
  31. package/dist/core/inventory/index.js +1 -1
  32. package/dist/core/layout/index.cjs +1 -1
  33. package/dist/core/layout/index.d.cts +5 -5
  34. package/dist/core/layout/index.d.ts +5 -5
  35. package/dist/core/layout/index.js +1 -1
  36. package/dist/core/quality/index.d.cts +3 -3
  37. package/dist/core/quality/index.d.ts +3 -3
  38. package/dist/core/render-assets/index.cjs +1 -1
  39. package/dist/core/render-assets/index.d.cts +45 -5
  40. package/dist/core/render-assets/index.d.ts +45 -5
  41. package/dist/core/render-assets/index.js +1 -1
  42. package/dist/core/seatConfidence.d.cts +1 -1
  43. package/dist/core/seatConfidence.d.ts +1 -1
  44. package/dist/core/sections/index.cjs +1 -1
  45. package/dist/core/sections/index.d.cts +5 -5
  46. package/dist/core/sections/index.d.ts +5 -5
  47. package/dist/core/sections/index.js +1 -1
  48. package/dist/cs-L5EG7LLR.js +1 -0
  49. package/dist/cy-AB2Q6XHI.js +1 -0
  50. package/dist/da-EGJO7W4Q.js +1 -0
  51. package/dist/de-Q56NNVPD.js +1 -0
  52. package/dist/el-JW2YADAL.js +1 -0
  53. package/dist/es-N35HVHMD.js +1 -0
  54. package/dist/et-53UYPQR7.js +1 -0
  55. package/dist/{eventConfigurations-BHIfPJJJ.d.cts → eventConfigurations-C0x_OtjQ.d.cts} +1 -1
  56. package/dist/{eventConfigurations-I5UBS6r9.d.ts → eventConfigurations-CDPqKz_8.d.ts} +1 -1
  57. package/dist/{fa-5MS3C6YX.js → fa-JL3HW42Q.js} +1 -1
  58. package/dist/fi-ZFWROLPU.js +1 -0
  59. package/dist/fr-6EKBGKIT.js +1 -0
  60. package/dist/he-KSOTIRJW.js +1 -0
  61. package/dist/hi-RWHSYCVV.js +1 -0
  62. package/dist/hr-ECH5LYKR.js +1 -0
  63. package/dist/hu-BAXHRRWC.js +1 -0
  64. package/dist/id-ECFNLK3G.js +1 -0
  65. package/dist/index.cjs +1 -1
  66. package/dist/index.d.cts +22 -15
  67. package/dist/index.d.ts +22 -15
  68. package/dist/index.js +1 -1
  69. package/dist/{it-KG53QPQF.js → it-HT57FDFI.js} +1 -1
  70. package/dist/ja-LHVHSM5J.js +1 -0
  71. package/dist/ko-G2HVHBKT.js +1 -0
  72. package/dist/ku-MNPV6BJJ.js +1 -0
  73. package/dist/{labeling-CDKZ9TO1.d.ts → labeling-20iLar-Q.d.ts} +1 -1
  74. package/dist/{labeling-2A31f781.d.cts → labeling-DW_pEMgl.d.cts} +1 -1
  75. package/dist/localeLoaders-L36RHPNS.js +1 -0
  76. package/dist/lt-GB2GJDNS.js +1 -0
  77. package/dist/lv-3ZE6IM47.js +1 -0
  78. package/dist/ms-YH2PYOHG.js +1 -0
  79. package/dist/nl-D4FX7T7U.js +1 -0
  80. package/dist/no-5YNLYHN4.js +1 -0
  81. package/dist/pl-RUXCR6JV.js +1 -0
  82. package/dist/pt-TKFGIUL6.js +1 -0
  83. package/dist/{renderedQuality-CwZ8hY-5.d.cts → renderedQuality-BIWwSRMS.d.cts} +1 -1
  84. package/dist/{renderedQuality-wDIiUId3.d.ts → renderedQuality-CdpKQidA.d.ts} +1 -1
  85. package/dist/{renderer-D6ggv3bV.d.cts → renderer-BSjyHBDK.d.cts} +1 -1
  86. package/dist/{renderer-CdJx5l3B.d.ts → renderer-BurPZ2Io.d.ts} +1 -1
  87. package/dist/ro-UFIOIOVH.js +1 -0
  88. package/dist/ru-VMRD53B7.js +1 -0
  89. package/dist/{seatTypeIcons-DMJX4rVN.d.cts → seatTypeIcons-BlEzPXFf.d.cts} +1 -1
  90. package/dist/{seatTypeIcons-UpUTD8Xf.d.ts → seatTypeIcons-D_T5HfJs.d.ts} +1 -1
  91. package/dist/{sections-lpdfwSdO.d.ts → sections-BySKMsFE.d.ts} +1 -1
  92. package/dist/{sections-CempT5a0.d.cts → sections-DXUcW0ZT.d.cts} +1 -1
  93. package/dist/{segmentedRowModel-HwY4XuYa.d.ts → segmentedRowModel-C5qFY6jJ.d.ts} +1 -1
  94. package/dist/{segmentedRowModel-Ddx5ol8T.d.cts → segmentedRowModel-CyW-LFuI.d.cts} +1 -1
  95. package/dist/sk-XIK2KO3F.js +1 -0
  96. package/dist/sl-CDZGH6C6.js +1 -0
  97. package/dist/sr-A3TESNV3.js +1 -0
  98. package/dist/sv-HKGKDGSG.js +1 -0
  99. package/dist/{tableSizing-C0zx97eg.d.ts → tableSizing-Bos5ueqg.d.cts} +5 -4
  100. package/dist/{tableSizing-BJqAuJDg.d.cts → tableSizing-CAiE_oii.d.ts} +5 -4
  101. package/dist/th-ZPGRIY7D.js +1 -0
  102. package/dist/{ticketRestrictions-DDQHiKF-.d.cts → ticketRestrictions-DKdJWh9u.d.cts} +2 -2
  103. package/dist/{ticketRestrictions-AU8UUmdL.d.ts → ticketRestrictions-DRDtAVKw.d.ts} +2 -2
  104. package/dist/tr-IUB54G3R.js +1 -0
  105. package/dist/{types-DL7qIUrD.d.cts → types-ZviQR7ch.d.cts} +127 -8
  106. package/dist/{types-DL7qIUrD.d.ts → types-ZviQR7ch.d.ts} +127 -8
  107. package/dist/uk-JQKEV42K.js +1 -0
  108. package/dist/vi-KRM5S2Q7.js +1 -0
  109. package/dist/view3d/crossfade/panorama.d.cts +1 -1
  110. package/dist/view3d/crossfade/panorama.d.ts +1 -1
  111. package/dist/view3d/index.cjs +54 -54
  112. package/dist/view3d/index.d.cts +7 -3
  113. package/dist/view3d/index.d.ts +7 -3
  114. package/dist/view3d/index.js +44 -44
  115. package/dist/view3d/scene/scene.worker.cjs +1 -1
  116. package/dist/view3d/scene/scene.worker.js +1 -1
  117. package/dist/zh-Hans-FEUYIOYS.js +1 -0
  118. package/dist/zh-Hant-PK2XOE2G.js +1 -0
  119. package/package.json +1 -1
  120. package/dist/ar-TGXEBJUB.js +0 -1
  121. package/dist/be-JIDOHWF6.js +0 -1
  122. package/dist/bg-ODVJNCC2.js +0 -1
  123. package/dist/ca-3I7TMWYU.js +0 -1
  124. package/dist/chunk-4R6TXHY2.js +0 -1
  125. package/dist/chunk-5N4H3KMR.js +0 -1
  126. package/dist/chunk-66T4EAUA.js +0 -1
  127. package/dist/chunk-EIV3CAGV.js +0 -1
  128. package/dist/chunk-FUFRWRPM.js +0 -1
  129. package/dist/chunk-TAMY7HTV.js +0 -1
  130. package/dist/chunk-TQN2VWQO.js +0 -1
  131. package/dist/cs-XXB624Z3.js +0 -1
  132. package/dist/cy-W2QNU2GO.js +0 -1
  133. package/dist/da-Q47YPK2E.js +0 -1
  134. package/dist/de-TS3DPLM5.js +0 -1
  135. package/dist/el-3JQUH6DB.js +0 -1
  136. package/dist/es-GP7VOX7S.js +0 -1
  137. package/dist/et-A22OMZ6V.js +0 -1
  138. package/dist/fi-OJLAOJO2.js +0 -1
  139. package/dist/fr-7ATOYJCF.js +0 -1
  140. package/dist/he-37LKRY5W.js +0 -1
  141. package/dist/hi-YXZ5EWK7.js +0 -1
  142. package/dist/hr-QFOPGLMR.js +0 -1
  143. package/dist/hu-RHRBK46E.js +0 -1
  144. package/dist/id-A5Q3MLSX.js +0 -1
  145. package/dist/ja-CC6EPUSN.js +0 -1
  146. package/dist/ko-7H4RGYFK.js +0 -1
  147. package/dist/ku-HFYWPSS4.js +0 -1
  148. package/dist/localeLoaders-4YMC7FIZ.js +0 -1
  149. package/dist/lt-HQXE7W47.js +0 -1
  150. package/dist/lv-AN25XXPB.js +0 -1
  151. package/dist/ms-CWAYSF6E.js +0 -1
  152. package/dist/nl-63QBRZSZ.js +0 -1
  153. package/dist/no-RAPQMKWU.js +0 -1
  154. package/dist/pl-ILSTD4ZV.js +0 -1
  155. package/dist/pt-WF3US5D7.js +0 -1
  156. package/dist/ro-XR3HT6DE.js +0 -1
  157. package/dist/ru-TLJEWDPA.js +0 -1
  158. package/dist/sk-OJC2EL3Z.js +0 -1
  159. package/dist/sl-7RGTVXCV.js +0 -1
  160. package/dist/sr-NHDJ54BS.js +0 -1
  161. package/dist/sv-ZODCCBCU.js +0 -1
  162. package/dist/th-VCZA4MP5.js +0 -1
  163. package/dist/tr-ROKZO3HC.js +0 -1
  164. package/dist/uk-LP2DPUHC.js +0 -1
  165. package/dist/vi-JDK3JRJR.js +0 -1
  166. package/dist/zh-Hans-P3GB3FAZ.js +0 -1
  167. package/dist/zh-Hant-YU4OKSFZ.js +0 -1
@@ -1 +1 @@
1
- "use strict";var We=Object.defineProperty;var jo=Object.getOwnPropertyDescriptor;var No=Object.getOwnPropertyNames;var Fo=Object.prototype.hasOwnProperty;var Do=(e,t)=>{for(var o in t)We(e,o,{get:t[o],enumerable:!0})},$o=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of No(t))!Fo.call(e,i)&&i!==o&&We(e,i,{get:()=>t[i],enumerable:!(n=jo(t,i))||n.enumerable});return e};var Bo=e=>$o(We({},"__esModule",{value:!0}),e);var ua={};Do(ua,{CATEGORY_INVENTORY_FAMILIES:()=>Ve,DEFAULT_EVENT_INVENTORY_LIMIT:()=>Fe,GA_UNIT_LABEL_PREFIX:()=>Ke,GroupedTableProjectionError:()=>ge,LARGE_VENUE_INVENTORY_MODULE:()=>rt,MAX_DIRECT_ROW_SWEEP:()=>Pt,MAX_EVENT_INVENTORY:()=>sn,MAX_GA_CAPACITY:()=>J,MAX_ONE_PARTY_GUESTS:()=>ee,MAX_ROW_BLOCK_ROWS:()=>Lt,MAX_ROW_SEATS:()=>oe,MIN_ROW_BLOCK_ROWS:()=>Ot,MIN_ROW_SEATS:()=>ne,ONE_PARTY_LIMIT_MESSAGE:()=>zi,applicableTicketTiers:()=>aa,behindStageLabels:()=>jt,capacityControl:()=>So,categoryCapacity:()=>Zr,chartCapacity:()=>Rt,companionSelectionIssue:()=>To,describeCategoryInventoryConflict:()=>xt,effectiveSeatOwnerCategoryCounts:()=>ke,eventInventoryLimitFor:()=>cn,gaAreasOf:()=>Wi,gaBoxBounds:()=>Hi,gaBoxMode:()=>Z,gaInventorySegments:()=>lt,gaUnitLabel:()=>In,gaUnitLabels:()=>ut,gaUnitLabelsForModel:()=>dt,gaWheelchairPlaceCount:()=>wn,gaWheelchairUnitLabels:()=>Xi,groupedTableInventory:()=>ra,growJoinedGAInventory:()=>Yi,inspectCategoryInventoryConflicts:()=>Ce,intactRowBlockMembers:()=>ea,isFullChartDoc:()=>Oo,isGaUnitLabel:()=>W,pickBestAvailable:()=>Ft,pickBestAvailableInventory:()=>Go,remediateCategoryInventoryConflicts:()=>vt,resizeChartCapacity:()=>qr,resolveRowBlockCount:()=>Jr,resolveRowStartCapacity:()=>oa,resolveRowTerminalCapacity:()=>na,resolveTicketTierForSeat:()=>Tt,rowBlockEdgePoint:()=>Et,rowBlockPreviewRows:()=>Io,rowStartEndpoint:()=>Ro,rowTerminalEndpoint:()=>Ao,rowWithStartCapacity:()=>ko,rowWithTerminalCapacity:()=>Co,strandedSingles:()=>Qr,ticketOptionNotApplicableIssue:()=>Po,ticketSelectionIssue:()=>la,ticketTierAppliesToSeat:()=>Ye,validGAInventorySegments:()=>Ue});module.exports=Bo(ua);function _t(e){return e.sectionId?`s:${e.sectionId}`:`r:${e.logicalRowId??e.rowId}`}function jt(e,t){let o=new Set,n=new Map;for(let i of e){let r=i.focalPoint??t,s=`${r.x},${r.y}`,l=n.get(s);l||(l={focal:r,seats:[]},n.set(s,l)),l.seats.push(i)}for(let{focal:i,seats:r}of n.values()){let s=Pe(r),l=s.x-i.x,u=s.y-i.y,c=Math.hypot(l,u),d=0;for(let S of r)d=Math.max(d,Math.abs(S.x-i.x),Math.abs(S.y-i.y));let b=Math.max(d,1)*1e-6;if(!(c>b))continue;let p=0,m=new Set;for(let S of r)((S.x-i.x)*l+(S.y-i.y)*u)/c<-b&&(p+=1,m.add(_t(S)));if(!m.size||p*10>r.length)continue;let g=r.filter(S=>m.has(_t(S)));if(!(g.length*4>r.length))for(let S of g)o.add(S.label)}return o}function Ze(e,t){if(Number.isInteger(e.logicalSeatIndex))return e.logicalSeatIndex;let o=e.id.lastIndexOf(":");if(o<0)return t;let n=Number(e.id.slice(o+1));return Number.isFinite(n)?n:t}function ye(e,t){let o=e.x-t.x,n=e.y-t.y;return o*o+n*n}function Pe(e){let t=0,o=0;for(let n of e)t+=n.x,o+=n.y;return{x:t/e.length,y:o/e.length}}function Nt(e,t){return e.find(o=>o.focalPoint)?.focalPoint??t}function qe(e){return e.commercial?.premium===!0}function Ft(e,t,o){let n=Math.floor(o.qty);if(!Number.isFinite(n)||n<=0)return{labels:[],reason:"sold_out"};let{categoryKey:i,zoneId:r,focal:s,preferPremium:l,preferNearest:u,preferredRowIds:c,accessibility:d,requireContiguous:b}=o,p=o.preferAisle&&o.aisleLabels?.size?o.aisleLabels:null,m=x=>p&&!x.some(w=>p.has(w.label))?1:0,g=new Map,S=[];if(e.forEach((x,w)=>{let a=t.has(x.label)&&(!i||x.categoryKey===i)&&(!r||x.zoneId===r)&&(!d||d.some(y=>x.accessibility?.includes(y))),E=x.logicalRowId??x.rowId,f=g.get(E);f||(f=[],g.set(E,f)),f.push({seat:x,index:Ze(x,w),elig:a}),a&&S.push(x)}),S.length===0)return{labels:[],reason:"sold_out"};let I=!i&&!r&&!u?jt(e,s):new Set,A=x=>I.size?x.reduce((w,a)=>w+(I.has(a.label)?1:0),0):0,R=new Map([...g].map(([x,w])=>[x,Pe(w.map(a=>a.seat))])),O=(c??[]).map(x=>R.get(x)).filter(x=>!!x),P=x=>{let w=R.get(x);return!w||!O.length?0:Math.min(...O.map(a=>ye(w,a)))},M=null,v=x=>{if(!M)return!0;if(l&&x.nonPremium!==M.nonPremium)return x.nonPremium<M.nonPremium;if(u&&x.rowD2!==M.rowD2)return x.rowD2<M.rowD2;if(u&&x.d2!==M.d2)return x.d2<M.d2;if(x.behind!==M.behind)return x.behind<M.behind;if(x.noAisle!==M.noAisle)return x.noAisle<M.noAisle;if(x.orphan!==M.orphan)return x.orphan<M.orphan;if(x.d2!==M.d2)return x.d2<M.d2;let w=x.rowId.localeCompare(M.rowId);return w!==0?w<0:x.startIndex<M.startIndex};for(let[x,w]of g){let a=[...w].sort((f,y)=>f.index-y.index),E=0;for(;E<a.length;){if(!a[E].elig){E++;continue}let f=E;for(;f<a.length&&a[f].elig&&(f===E||a[f].index===a[f-1].index+1);)f++;let y=f-E;for(let h=0;h+n<=y;h++){let L=h,k=y-(h+n),T=L===1||k===1?1:0,_=a.slice(E+h,E+h+n).map(B=>B.seat),j={labels:_.map(B=>B.label),seats:_,rowId:x,startIndex:a[E+h].index,orphan:T,nonPremium:l?_.reduce((B,ie)=>B+(qe(ie)?0:1),0):0,behind:A(_),noAisle:m(_),rowD2:P(x),d2:ye(Pe(_),u?s:Nt(_,s))};v(j)&&(M=j)}E=f}}return M?{labels:M.labels}:b?{labels:[],reason:S.length?"not_enough_together":"sold_out"}:S.length<n?{labels:[],reason:"not_enough_together"}:{labels:S.map((x,w)=>({seat:x,i:w,rowD2:P(x.logicalRowId??x.rowId),d2:ye(x,u?s:x.focalPoint??s)})).sort((x,w)=>{if(l){let y=qe(x.seat)?0:1,h=qe(w.seat)?0:1;if(y!==h)return y-h}if(u&&x.rowD2!==w.rowD2)return x.rowD2-w.rowD2;let a=I.has(x.seat.label)?1:0,E=I.has(w.seat.label)?1:0;if(a!==E)return a-E;if(p){let y=p.has(x.seat.label)?0:1,h=p.has(w.seat.label)?0:1;if(y!==h)return y-h}if(x.d2!==w.d2)return x.d2-w.d2;let f=(x.seat.logicalRowId??x.seat.rowId).localeCompare(w.seat.logicalRowId??w.seat.rowId);return f!==0?f:Ze(x.seat,x.i)-Ze(w.seat,w.i)}).slice(0,n).map(x=>x.seat.label)}}function Go(e,t,o,n){let i=Math.floor(n.qty),r=Ft(e,o,n),l=t.filter(b=>b.bookingMode==="whole"&&b.capacity===i&&o.has(b.label)&&(!n.categoryKey||b.categoryKey===n.categoryKey)&&(!n.zoneId||b.zoneId===n.zoneId)&&!n.accessibility).map(b=>({table:b,d2:ye(b.center,n.preferNearest?n.focal:b.focalPoint??n.focal)})).sort((b,p)=>b.d2-p.d2||b.table.label.localeCompare(p.table.label))[0];if(!l)return r;if(!r.labels.length)return{labels:[l.table.label]};if(n.preferAisle&&n.aisleLabels&&r.labels.some(b=>n.aisleLabels.has(b)))return r;let u=new Map(e.map(b=>[b.label,b])),c=r.labels.map(b=>u.get(b)).filter(b=>!!b),d=c.length?ye(Pe(c),Nt(c,n.focal)):Number.POSITIVE_INFINITY;return l.d2<d?{labels:[l.table.label]}:r}var Dt=e=>Math.max(1,e.fontSize*.6+(e.letterSpacing??0));function Ko(e,t){let o=e.text.split(/\r?\n/);if(!e.width)return Math.max(1,o.length);let n=Math.max(1,Math.floor(t/Dt(e))),i=0;for(let r of o){if(!r.length){i+=1;continue}let s=0;for(let l of r.split(/\s+/)){let u=l.length;s&&s+1+u<=n?s+=1+u:(i+=Math.max(1,Math.ceil(u/n)),s=u%n)}}return Math.max(1,i)}function $t(e){let t=e.background?.padding??0,o=e.text.split(/\r?\n/),n=Math.max(1,...o.map(l=>l.length))*Dt(e),i=e.width??n+t*2,r=Math.max(1,i-t*2),s=Ko(e,r);return{width:i,height:s*e.fontSize*(e.lineHeight??1.2)+t*2,lineCount:s,padding:t}}var Uo=Math.PI/180;function V(e,t){return Math.hypot(e.x-t.x,e.y-t.y)}function Vo(e,t,o){let n=Math.cos(o),i=Math.sin(o),r=e.x-t.x,s=e.y-t.y;return{x:t.x+r*n-s*i,y:t.y+r*i+s*n}}function Bt(e,t){return Vo(e,{x:0,y:0},t*Uo)}function he(e){let t=0,o=0;for(let i of e)t+=i.x,o+=i.y;let n=e.length||1;return{x:t/n,y:o/n}}function Gt(e,t){let o=1-t,n=o*o*o,i=3*o*o*t,r=3*o*t*t,s=t*t*t;return{x:n*e.start.x+i*e.control1.x+r*e.control2.x+s*e.end.x,y:n*e.start.y+i*e.control1.y+r*e.control2.y+s*e.end.y}}function Kt(e,t,o=192){if(!Number.isInteger(t)||t<1)throw new Error("Path point count must be a positive integer");if(t===1)return[Gt(e,.5)];let n=Array.from({length:o+1},(u,c)=>Gt(e,c/o)),i=new Float64Array(n.length);for(let u=1;u<n.length;u+=1){let c=n[u].x-n[u-1].x,d=n[u].y-n[u-1].y;i[u]=i[u-1]+Math.hypot(c,d)}let r=i[i.length-1];if(r<=1e-9)return Array.from({length:t},()=>({...e.start}));let s=[],l=1;for(let u=0;u<t;u+=1){let c=r*u/(t-1);for(;l<i.length-1&&i[l]<c;)l+=1;let d=i[l-1],b=i[l],p=b===d?0:(c-d)/(b-d);s.push({x:n[l-1].x+(n[l].x-n[l-1].x)*p,y:n[l-1].y+(n[l].y-n[l-1].y)*p})}return s}function K(e,t,o){return Math.max(t,Math.min(o,e))}var re=Math.PI*2;function xe(e){return Number.isFinite(e.x)&&Number.isFinite(e.y)}function zo(e,t,o){let n=t-e;if(o){for(;n<0;)n+=re;for(;n>=re;)n-=re}else{for(;n>0;)n-=re;for(;n<=-re;)n+=re}return n}function Qe(e){if(e.version!==1||e.closed!==!0||!xe(e.start)||!Array.isArray(e.segments)||e.segments.length<2||e.segments.length>512)return!1;let t=e.start;for(let o of e.segments){if(!o||!xe(o.end))return!1;if(o.kind==="line"){if(V(t,o.end)<=1e-9)return!1}else if(o.kind==="bezier"){if(!xe(o.control1)||!xe(o.control2)||V(t,o.end)<=1e-9)return!1}else if(o.kind==="arc"){if(!xe(o.center)||!Number.isFinite(o.radius)||o.radius<=1e-6||Math.abs(V(t,o.center)-o.radius)>Math.max(1e-4,o.radius*1e-4)||Math.abs(V(o.end,o.center)-o.radius)>Math.max(1e-4,o.radius*1e-4)||V(t,o.end)<=1e-9)return!1}else return!1;t=o.end}return V(t,e.start)<=1e-4}function Ho(e,t,o){let n=1-o;return{x:n**3*e.x+3*n**2*o*t.control1.x+3*n*o**2*t.control2.x+o**3*t.end.x,y:n**3*e.y+3*n**2*o*t.control1.y+3*n*o**2*t.control2.y+o**3*t.end.y}}function Ut(e,t=2){if(!Qe(e))throw new Error("Section outline path is invalid");let o=Math.max(.25,t),n=[{...e.start}],i=e.start;for(let r of e.segments){if(r.kind==="line")n.push({...r.end});else if(r.kind==="arc"){let s=Math.atan2(i.y-r.center.y,i.x-r.center.x),l=Math.atan2(r.end.y-r.center.y,r.end.x-r.center.x),u=zo(s,l,r.clockwise),c=Math.max(2,Math.ceil(Math.abs(u)*r.radius/o));for(let d=1;d<=c;d+=1){let b=s+u*d/c;n.push({x:r.center.x+Math.cos(b)*r.radius,y:r.center.y+Math.sin(b)*r.radius})}}else{let s=V(i,r.control1)+V(r.control1,r.control2)+V(r.control2,r.end),l=Math.max(2,Math.ceil(s/o));for(let u=1;u<=l;u+=1)n.push(Ho(i,r,u/l))}i=r.end}return V(n[n.length-1],n[0])<=1e-4&&n.pop(),n}var xa=4/3;function Vt(e){let t=new Map,o=new Map;for(let n of e){if(n.type!=="row"||!n.segmentedRow)continue;let i=o.get(n.segmentedRow.groupId)??[];i.push(n),o.set(n.segmentedRow.groupId,i)}for(let[n,i]of o){let r=i.slice().sort((p,m)=>p.segmentedRow.componentIndex-m.segmentedRow.componentIndex),s=r[0]?.segmentedRow?.componentCount??0,l=r[0]?.segmentedRow;if(!l||!(s>=2&&r.length===s&&l?.boundaryBefore==="start"&&r.every((p,m)=>p.segmentedRow?.kind==="segmented-row-v1"&&p.segmentedRow.groupId===n&&p.segmentedRow.componentCount===s&&p.segmentedRow.componentIndex===m&&p.segmentedRow.repeatLabelOnComponents===l.repeatLabelOnComponents&&(m===0?p.segmentedRow.boundaryBefore==="start":p.segmentedRow.boundaryBefore!=="start")&&p.segmentedRow.displayLabel===l.displayLabel)))continue;let c=r.reduce((p,m)=>p+m.seatCount,0),d=0,b=0;for(let p of r)p.segmentedRow.boundaryBefore==="break"&&(d+=1),t.set(p.id,{groupId:n,adjacencyOffset:d,displayOffset:b,displayLabel:l.displayLabel,totalSeats:c,canonical:r[0],viewFromSeatUrl:l.viewFromSeatUrl,viewFromSeatMeta:l.viewFromSeatMeta,confidenceEvidence:l.confidenceEvidence}),d+=p.seatCount,b+=p.seatCount}return t}var Xo="ABCDEFGHIJKLMNOPQRSTUVWXYZ";var Yo="abcdefghijklmnopqrstuvwxyz";function Wo(e,t){let o=t.length,n=e+1,i="";for(;n>0;){n-=1;let r=n%o;i=t[r]+i,n=Math.floor(n/o)}return i}function ve(e,t=!1){let o=t?Yo:Xo;return Wo(Math.max(0,Math.floor(e)-1),o)}var Zo=[[1e3,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50,"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]];function zt(e){if(!Number.isFinite(e)||e<=0)return String(e);let t=Math.floor(e),o="";for(let[n,i]of Zo)for(;t>=n;)o+=i,t-=n;return o}function qo(e){let t=new Array(e);return Array.from({length:e},(o,n)=>n).sort((o,n)=>Math.abs(2*o-(e-1))-Math.abs(2*n-(e-1))||o-n).forEach((o,n)=>t[o]=n),t}function Te(e,t){let o=e.seatLabelStart??1,n=e.seatNumbering?.direction??"ltr",i=e.seatNumbering?.step??1,r=e.seatNumbering?.scheme??"decimal",s=e.seatNumbering?.prefix??"",l=e.seatNumbering?.endAt,u=e.seatCount;if(r==="updown"||r==="updown-descending"){let m=Math.ceil(u/2),g=r==="updown"?t<m?o+2*t:o-1+2*(u-t):t<m?o+2*(m-1-t):o+1+2*(t-m);return`${s}${g}`}let c=r==="odd"||r==="even"?2:i,d=l!=null&&Number.isFinite(l)?l-(u-1)*c:o,b=n==="center"?qo(u)[t]:n==="rtl"?u-1-t:t,p;switch(r){case"odd":{let m=d%2===1?d:d+1;p=String(m+b*2);break}case"even":{let m=d%2===0?d:d+1;p=String(m+b*2);break}case"roman":p=zt(d+b*i);break;case"letters-upper":p=ve(d+b*i,!1);break;case"letters-lower":p=ve(d+b*i,!0);break;default:p=String(d+b*i);break}return`${s}${p}`}function Qo(e){return{...e.canonical,seatCount:e.totalSeats,label:e.displayLabel,displayLabel:e.displayLabel}}function _e(e,t,o){return o?.label??`${e.seatLabelBase??e.label}-${Te(e,t)}`}function Je(e,t,o,n){if(n?.displayLabel)return n.displayLabel;if(e.seatDisplayLabelMode==="number")return Te(e,t);if(!o)return`${e.displayLabel||e.label}-${Te(e,t)}`;let i=Qo(o),r=o.displayOffset+t;return`${o.displayLabel}-${Te(i,r)}`}var Ht=999,Jo=["clockwise","anticlockwise"],ei=["table-number","number","letter"];function Xt(e,t){return`${e.label}-${t+1}`}function ti(e,t,o){return e?.direction==="anticlockwise"?Math.max(0,t-1-o):o}function ni(e,t){let o=e.chairNumbering,n=o?.start??1,i=ti(o,Math.max(0,Math.round(e.seatCount)),t);return o?.format==="letter"?ve(Math.max(1,n)+i):String(n+i)}function Yt(e,t){let o=ni(e,t);return(e.chairNumbering?.format??"table-number")==="table-number"?`${e.displayLabel??e.label}-${o}`:o}function Wt(e){if(e===void 0)return null;if(!e||typeof e!="object"||Array.isArray(e))return"chairNumbering must be an object";let t=e,o=Object.keys(t).filter(n=>!["start","direction","format"].includes(n));return o.length?`chairNumbering has unsupported field(s): ${o.join(", ")}`:t.start!==void 0&&(!Number.isInteger(t.start)||t.start<0||t.start>Ht)?`chairNumbering.start must be a whole number from 0 to ${Ht}`:t.direction!==void 0&&!Jo.includes(t.direction)?"chairNumbering.direction must be clockwise or anticlockwise":t.format!==void 0&&!ei.includes(t.format)?"chairNumbering.format must be table-number, number or letter":null}var ae=.02291666666666667,Aa=1/ae,oi=58,Zt=oi*ae,tt=0,se=3,Q=0,X=120,je=0,Ne=45,nt=7,ce=1.2;function et(e,t,o,n){return Number.isFinite(e)?Math.max(t,Math.min(o,e)):n}function ii(e){return!Number.isFinite(e)||!Number.isInteger(e)||e<0?0:e<=nt?e:se}function Se(e,t={}){let o=et(t.floorBaseHeightM,Q,X,0),n=Math.min(X,o+ii(e.elevation)*Zt),i=e.height===void 0?n:et(e.height,Q,X,n),r=et(e.rake,je,Ne,0);return{height:i,rake:r}}function qt(e){let t=e.length;return t<=3?[...e]:[e[Math.floor(t*.25)],e[Math.floor(t*.5)],e[Math.floor(t*.75)]]}function Qt(e,t,o){if(!e.length)return 1/0;if(e.length===1)return Math.hypot(t-e[0].x,o-e[0].y);let n=1/0;for(let i=0;i+1<e.length;i++){let r=e[i],s=e[i+1],l=s.x-r.x,u=s.y-r.y,c=l*l+u*u,d=c>1e-12?((t-r.x)*l+(o-r.y)*u)/c:0;d<0?d=0:d>1&&(d=1);let b=t-(r.x+d*l),p=o-(r.y+d*u);if(Math.abs(b)>=n||Math.abs(p)>=n)continue;let m=Math.hypot(b,p);m<n&&(n=m)}return n}function ri(e){let t=0,o=0;for(let r of e)t+=r.x,o+=r.y;let n=e.length||1;t/=n,o/=n;let i=0;for(let r of e){let s=Math.hypot(r.x-t,r.y-o);s>i&&(i=s)}return{cx:t,cy:o,r:i}}function Jt(e,t){return Math.hypot(e.cx-t.cx,e.cy-t.cy)-e.r-t.r}function ot(e,t){let o=1/0;for(let n of qt(e)){let i=Qt(t,n.x,n.y);i<o&&(o=i)}for(let n of qt(t)){let i=Qt(e,n.x,n.y);i<o&&(o=i)}return o}function ai(e,t){if(e.length<3)return{pts:e,seatIndices:t};let o=0,n=0;for(let d of e)o+=d.x,n+=d.y;o/=e.length,n/=e.length;let i=-1,r=e[0];for(let d of e){let b=Math.hypot(d.x-o,d.y-n);b>i&&(i=b,r=d)}let s=r.x-o,l=r.y-n,u=Math.hypot(s,l);u>1e-9?(s/=u,l/=u):(s=1,l=0);let c=e.map((d,b)=>({p:d,i:b,t:(d.x-o)*s+(d.y-n)*l})).sort((d,b)=>d.t-b.t);return{pts:c.map(d=>d.p),seatIndices:c.map(d=>t[d.i])}}function si(e){let t=e.length;if(t<3)return null;let o=0,n=0;for(let R of e)o+=R.x,n+=R.y;o/=t,n/=t;let i=0,r=0,s=0,l=0,u=0,c=0,d=0;for(let R of e){let O=R.x-o,P=R.y-n;i+=O*O,s+=P*P,r+=O*P,l+=O*O*O,u+=P*P*P,c+=O*P*P,d+=P*O*O}let b=i*s-r*r;if(Math.abs(b)<1e-9)return null;let p=(l+c)/2,m=(u+d)/2,g=(p*s-m*r)/b,S=(m*i-p*r)/b,I=g+o,A=S+n;return!Number.isFinite(I)||!Number.isFinite(A)?null:{cx:I,cy:A}}var ci=.15;function li(e){if(e.length<2)return null;let t=e.map(M=>{let v=0,C=0;for(let x of M.pts)v+=x.x,C+=x.y;return{x:v/M.pts.length,y:C/M.pts.length}}),o=0,n=0;for(let M of t)o+=M.x,n+=M.y;o/=t.length,n/=t.length;let i=0,r=0,s=0;for(let M of t){let v=M.x-o,C=M.y-n;i+=v*v,r+=v*C,s+=C*C}let l=i+s,u=i*s-r*r,c=l/2+Math.sqrt(Math.max(0,l*l/4-u)),d,b;Math.abs(r)>1e-12?(d=c-s,b=r):i>=s?(d=1,b=0):(d=0,b=1);let p=Math.hypot(d,b);if(!(p>1e-12))return null;d/=p,b/=p;let m=0,g=0,S=0;for(let M of e){if(M.pts.length<2)continue;let v=M.pts[0],C=M.pts[M.pts.length-1],x=C.x-v.x,w=C.y-v.y,a=Math.hypot(x,w);if(!(a>1e-9))continue;let E=x/a,f=w/a;m+=(E*E-f*f)*a,g+=2*E*f*a,S+=a}if(S>0&&Math.hypot(m,g)>=di*S){let M=Math.atan2(g,m)/2,v=Math.cos(M),C=Math.sin(M);Math.abs(d*v+b*C)>fi&&(d=-C,b=v)}let I=1/0,A=-1/0,R=[];for(let M of e){let v=1/0,C=-1/0;for(let x of M.pts){let w=x.x*d+x.y*b;w<v&&(v=w),w>C&&(C=w),w<I&&(I=w),w>A&&(A=w)}R.push(C-v)}let O=A-I;return O>1e-9?(R.sort((M,v)=>M-v),R[Math.min(R.length-1,Math.floor(R.length*.9))]/O<=ui?{x:d,y:b}:null):null}var ui=.35,di=.8,fi=.7;function en(e,t,o,n){let i=new Map;for(let v of o){let C=t[v],x=C.rowId||`__seat-${v}`,w=i.get(x);w||(w={pts:[],idx:[]},i.set(x,w)),w.pts.push({x:C.x,y:C.y}),w.idx.push(v)}if(!i.size)return{sectionId:e,rows:[],blockCount:0};let r=[];for(let[v,C]of i){let x=ai(C.pts,C.idx),w=0;for(let a of x.pts)w+=Math.hypot(a.x-n.x,a.y-n.y);r.push({id:v,pts:x.pts,seatIndices:x.seatIndices,blockId:-1,ordinal:0,blockDepth:0,focalDistance:w/x.pts.length})}let s=r.map(v=>ri(v.pts)),l=r.length<=256?r.length*(r.length-1)/2:0,u=l?new Float64Array(l):null;u?.fill(Number.NaN);let c=u?new Map(r.map((v,C)=>[v,C])):null,d=(v,C)=>(v>C&&([v,C]=[C,v]),v*(2*r.length-v-1)/2+(C-v-1)),b=(v,C)=>{if(!u)return ot(r[v].pts,r[C].pts);let x=d(v,C),w=u[x];if(!Number.isNaN(w))return w;let a=ot(r[v].pts,r[C].pts);return u[x]=a,a},p=(v,C)=>c?b(c.get(v),c.get(C)):ot(v.pts,C.pts),m=[];for(let v=0;v<r.length;v++){let C=1/0;for(let x=0;x<r.length;x++){if(v===x||Jt(s[v],s[x])>=C)continue;let w=b(v,x);w<C&&(C=w)}Number.isFinite(C)&&m.push(C)}m.sort((v,C)=>v-C);let g=m.length?m[Math.floor(m.length/2)]:1,S=Math.max(g*1.8,1e-6),I=r.map(()=>[]);for(let v=0;v<r.length;v++)for(let C=v+1;C<r.length;C++)Jt(s[v],s[C])>S||b(v,C)<=S&&(I[v].push(C),I[C].push(v));let A=0;for(let v=0;v<r.length;v++){if(r[v].blockId!==-1)continue;let C=A++,x=[v];for(r[v].blockId=C;x.length;){let w=x.pop();for(let a of I[w])r[a].blockId===-1&&(r[a].blockId=C,x.push(a))}}let R=new Map;for(let v of r){let C=R.get(v.blockId)??[];C.push(v),R.set(v.blockId,C)}let O=[];for(let v of r){if(v.pts.length<4)continue;let C=si(v.pts);C&&(!Number.isFinite(C.cx)||!Number.isFinite(C.cy)||O.push({x:C.cx,y:C.cy}))}let P=O.length>=2?(()=>{let v=O.map(w=>w.x).sort((w,a)=>w-a),C=O.map(w=>w.y).sort((w,a)=>w-a),x=Math.floor(O.length/2);return{cx:v[x],cy:C[x]}})():null;if(P){let v=f=>Math.hypot(f.x-P.cx,f.y-P.cy),C=1/0,x=-1/0,w=[];for(let f of r){let y=1/0,h=-1/0;for(let L of f.pts){let k=v(L);k<y&&(y=k),k>h&&(h=k)}w.push(h-y),y<C&&(C=y),h>x&&(x=h)}let a=x-C;w.sort((f,y)=>f-y);let E=w[Math.min(w.length-1,Math.floor(w.length*.9))];if(a>1e-9&&E/a<=ci){let f=r.map(F=>{let Le=0;for(let _o of F.pts)Le+=v(_o);return{row:F,radius:Le/F.pts.length}}),y=0,h=0;for(let F of f)y+=F.radius,h+=F.row.focalDistance;y/=f.length,h/=f.length;let L=0;for(let F of f)L+=(F.radius-y)*(F.row.focalDistance-h);if(L<0)for(let F of f)F.radius=-F.radius;let T=1/0;for(let F of f)F.radius<T&&(T=F.radius);f.sort((F,Le)=>F.radius-Le.radius);let _=-1,j=-1/0,B=a/Math.max(1,f.length)*.5,ie=[];for(let F of f)F.radius-j>B&&(_++,j=F.radius),F.row.ordinal=_,F.row.blockDepth=F.radius-T,ie.push(F.row);return{sectionId:e,rows:ie,blockCount:A}}}let M=[];for(let[,v]of R){let C=li(v);if(C){let x=f=>{let y=0;for(let h of f.pts)y+=h.x*C.x+h.y*C.y;return y/f.pts.length};v.sort((f,y)=>x(f)-x(y)),v.length>=2&&v[0].focalDistance>v[v.length-1].focalDistance&&v.reverse();let w=[],a=g*.5;for(let f of v){let y=w[w.length-1];y&&Math.abs(x(f)-x(y[0]))<a?y.push(f):w.push([f])}let E=0;for(let f=0;f<w.length;f++){if(f>0){let y=1/0;for(let h of w[f-1])for(let L of w[f])y=Math.min(y,p(h,L));E+=y}for(let y of w[f])y.ordinal=f,y.blockDepth=E,M.push(y)}}else{let x=1/0;for(let w of v)w.focalDistance<x&&(x=w.focalDistance);v.sort((w,a)=>w.focalDistance-a.focalDistance);for(let w=0;w<v.length;w++)v[w].ordinal=w,v[w].blockDepth=Math.max(0,v[w].focalDistance-x),M.push(v[w])}}return{sectionId:e,rows:M,blockCount:A}}var bi=/^\d{4}-\d{2}-\d{2}$/;function mi(e){let t=Date.parse(e);return Number.isFinite(t)?bi.test(e)?t+864e5:t:null}function pi(e,t=Date.now()){if(e.validUntil===void 0){if(e.status!=="approved")return!0;let n=e.assessedAt?Date.parse(e.assessedAt):Number.NaN;return Number.isFinite(n)&&(t instanceof Date?t.getTime():t)<=n+366*864e5}let o=mi(e.validUntil);return o===null?!1:(t instanceof Date?t.getTime():t)<o}function gi(e,t,o){return!(e.eventConfigurationId&&e.eventConfigurationId!==t||e.eventConfigurationVersion!==void 0&&e.eventConfigurationVersion!==o)}function yi(e){return e.status!=="draft"&&e.status!=="retracted"}function hi(e,t){return e.status===void 0?t===void 0:e.status!=="approved"?!0:typeof t=="string"&&typeof e.basisSha256=="string"&&e.basisSha256===t}function tn(e,t={}){return!!e&&yi(e)&&gi(e,t.activeConfigurationId,t.activeConfigurationVersion)&&hi(e,t.activeBasisSha256)&&pi(e,t.now)}function nn(e){return!!e.referenceImage?.assetId&&!!e.backgroundImage?.assetId&&e.referenceImage.assetId!==e.backgroundImage.assetId}var xi=36,vi=160;function on(e,t=360){let o=K(Math.round(Number.isFinite(e)?e:1),1,40),n=K(Number.isFinite(t)?t:360,120,360);return Math.round(K(o*4*(360/n),xi,vi))}var Si=new Set(["pitch-football","rink-hockey","track-athletics","oval-cricket","pitch-rugby","diamond-baseball","court-basketball","court-tennis","ring-boxing"]);function Ii(e){return!!e&&Si.has(e)}var rn=1.1;var _a=Math.PI*2;var ja=(()=>{let t={x:0,y:52},o=25,n={x:70,y:t.y-70},i=(n.x*n.x+n.y*n.y-4900)/(2*(n.y+70)),r=i+70,s=[],l=Math.atan2(n.y-i,n.x),u=Math.atan2(n.y-i,-n.x);for(let c=0;c<=24;c++){let d=l+(u-l)*c/24;s.push({x:r*Math.cos(d),y:i+r*Math.sin(d)})}return{half:70,home:t,backstop:o,fence:s}})();function an(e){return Ii(e)}var wi=/^data:image\/(?:png|jpe?g|webp|gif|avif);base64,[a-z0-9+/]+={0,2}$/i,Mi=/[\s"'<>`\\]/;function it(e){if(typeof e!="string"||!e||e.length>2e6||e!==e.trim())return!1;if(e.startsWith("data:"))return wi.test(e);if(Mi.test(e))return!1;try{let t=new URL(e);return t.protocol==="https:"&&!t.username&&!t.password}catch{return!1}}var sn=2e5,Fe=1e5,rt="large_venue_inventory";function cn(e){return e?.includes(rt)?2e5:1e5}function Ci(e){if((e.kind==="polygon"||e.kind==="polyline"||e.kind==="line")&&e.points&&e.points.length>=2)return e.points;if(e.x==null||e.y==null||e.width==null||e.height==null)return null;let t=e.x,o=e.y,n=e.width,i=e.height;return[{x:t,y:o},{x:t+n,y:o},{x:t+n,y:o+i},{x:t,y:o+i}]}function ki(e,t,o){let n=o*Math.PI/180,i=Math.cos(n),r=Math.sin(n),s=e.x-t.x,l=e.y-t.y;return{x:t.x+s*i-l*r,y:t.y+s*r+l*i}}function ln(e){let t=Ci(e);if(!t||t.length<2)return null;let o=e.rotation??0,n=Math.abs(o)<1e-6?t:t.map(u=>ki(u,{x:t.reduce((c,d)=>c+d.x,0)/t.length,y:t.reduce((c,d)=>c+d.y,0)/t.length},o)),i=1/0,r=1/0,s=-1/0,l=-1/0;for(let u of n)i=Math.min(i,u.x),r=Math.min(r,u.y),s=Math.max(s,u.x),l=Math.max(l,u.y);return!Number.isFinite(i)||s-i<1e-6||l-r<1e-6?null:{minX:i,minY:r,maxX:s,maxY:l}}var Ai=5,Ri=3,Ei=.92,Oi=1.9,Li=2,Pi=.6,Ti=1,_i=.06;function ji(e){return e.heightM!==void 0?e.heightM:e.stageKind==="ring-boxing"?rn:an(e.stageKind)?_i:Ti}function un(e){let t=1/0,o=1/0,n=-1/0,i=-1/0,r=-1/0;for(let s of Ie(e)){let l=s.baseHeightM??0;for(let u of s.objects){if(u.type!=="shape"||u.role!=="stage")continue;let c=ln(u);c&&(t=Math.min(t,c.minX),o=Math.min(o,c.minY),n=Math.max(n,c.maxX),i=Math.max(i,c.maxY),r=Math.max(r,l+ji(u)))}}return!Number.isFinite(t)||!Number.isFinite(r)?null:{minX:t,minY:o,maxX:n,maxY:i,deckTopM:r}}function Ni(e,t,o,n){let i=1/0,r=1/0,s=-1/0,l=-1/0;for(let m of e)Number.isFinite(m.eyeHeightM)&&(i=Math.min(i,m.x),s=Math.max(s,m.x),r=Math.min(r,m.y),l=Math.max(l,m.y));if(!Number.isFinite(i))return null;let u=i*t,c=r*t,d=Math.max(1,Math.ceil((s-i)*t/o)+1),b=Math.max(1,Math.ceil((l-r)*t/o)+1),p=new Float64Array(d*b).fill(-1/0);for(let m of e){if(!Number.isFinite(m.eyeHeightM))continue;let g=m.eyeHeightM-ce,S=Math.min(d-1,Math.max(0,Math.floor((m.x*t-u)/o))),A=Math.min(b-1,Math.max(0,Math.floor((m.y*t-c)/o)))*d+S,R=g+n;R>p[A]&&(p[A]=R)}return{cellM:o,minX:u,minY:c,cols:d,rows:b,top:p}}function Fi(e,t,o){let n=Math.floor((t-e.minX)/e.cellM),i=Math.floor((o-e.minY)/e.cellM);return n<0||i<0||n>=e.cols||i>=e.rows?-1/0:e.top[i*e.cols+n]}function dn(e,t,o={}){let n=new Map;if(!t||!e.length)return n;let i=o.metresPerChartUnit??ae,r=o.cellM??Pi,s=o.chairBackM??Ei,l=o.selfRowSkipM??Li,u=o.clearThreshold??.9,c=o.partialThreshold??.25,d=Math.max(1,o.columns??Ai),b=Math.max(1,o.rows??Ri),p=Ni(e,i,r,s);if(!p)return n;let m=(t.maxX-t.minX)*i,g=(t.maxY-t.minY)*i,S=m>=g,I=(t.minX+t.maxX)/2*i,A=(t.minY+t.maxY)/2*i,R=[];for(let P=0;P<d;P++){let M=(P+.5)/d-.5,v=S?I+M*m:I,C=S?A:A+M*g;for(let x=0;x<b;x++){let w=t.deckTopM+(b===1?0:x/(b-1)*Oi);R.push({x:v,y:C,z:w})}}let O=r/2;for(let P of e){if(!Number.isFinite(P.eyeHeightM))continue;let M=P.x*i,v=P.y*i,C=P.eyeHeightM,x=0,w=1/0;for(let E of R){let f=E.x-M,y=E.y-v,h=Math.hypot(f,y);if(!(h>l)){x++;continue}let L=f/h,k=y/h,T=0;for(let _=l;_<h;_+=O){let j=Fi(p,M+L*_,v+k*_);if(!(!Number.isFinite(j)||j>=C)&&j>C+(E.z-C)*_/h){T=_;break}}T?w=Math.min(w,T):x++}let a=x/R.length;a>=u||n.set(P.id,{seatId:P.id,mark:a<c?"obstructedView":"restrictedView",visibleFraction:a,totalRays:R.length,atDistanceM:Number.isFinite(w)?w:0})}return n}function fn(e,t){if(!t.size)return 0;let o=0;for(let n of e){let i=t.get(n.id);if(!i)continue;let r=n.commercial;r?.restrictedView!==void 0||r?.obstructedView!==void 0||(n.commercial={...r,[i.mark]:!0},o++)}return o}function at(e){return e?e.accessibility?.length?e.wheelchairSpaceType&&!e.accessibility.includes("wheelchair")?["wheelchair",...e.accessibility]:e.accessibility:e.wheelchairSpaceType?["wheelchair"]:e.accessible?["wheelchair"]:[]:[]}var $e=Math.PI/180;var we=16;function st(e,t,o,n){let i=o*$e,r=Math.cos(i),s=Math.sin(i);return{x:n.x+e*r-t*s,y:n.y+e*s+t*r}}function yn(e){let{seatCount:t,seatSpacing:o,curve:n,rotation:i,origin:r}=e,s=[];if(e.path)return Kt(e.path,t);if(t<=1)return t===1&&s.push({x:r.x,y:r.y}),s;if(n===0){for(let c=0;c<t;c++)s.push(st(c*o,0,i,r));return s}let l=n/(t-1)*$e,u=o/(2*Math.sin(Math.abs(l)/2));for(let c=0;c<t;c++){let d=c*l,b=u*Math.sin(d),p=-u+u*Math.cos(d);s.push(st(b,p,i,r))}return s}function hn(e){let t=new Map;if(e.overrides)for(let o of e.overrides)t.set(o.index,o);return t}function Be(e){let t=new Set((e.overrides??[]).filter(o=>o.skip&&Number.isInteger(o.index)&&o.index>=0&&o.index<e.seatCount).map(o=>o.index));return Math.max(0,e.seatCount-t.size)}function Di(e,t){let o=hn(e);return yn(e).map((n,i)=>{let r=o.get(i),s=at(r),l=_e(e,i,r),u={...e.commercial,...r?.commercial};return{index:i,x:n.x+(r?.dx??0),y:n.y+(r?.dy??0),label:l,displayLabel:Je(e,i,t,r),categoryKey:r?.categoryKey??e.categoryKey,skipped:!!r?.skip,accessible:s.length>0,accessibility:s,wheelchairSpaceType:r?.wheelchairSpaceType,commercial:Object.values(u).some(c=>c!==void 0&&c!==!1&&c!=="")?u:void 0,glyph:r?.glyph,viewUrl:r?.viewFromSeatUrl??e.viewFromSeatUrl,viewMeta:r?.viewFromSeatUrl?r.viewFromSeatMeta:e.viewFromSeatMeta,labelStyle:r?.labelStyle??e.seatLabelStyle}})}function U(e){let t=[];for(let o of Di(e))o.skipped||t.push({id:`${e.id}:${o.index}`,label:o.label,displayLabel:o.displayLabel===o.label?void 0:o.displayLabel,x:o.x,y:o.y,rowId:e.id,categoryKey:o.categoryKey,accessible:o.accessible||void 0,accessibility:o.accessibility.length?o.accessibility:void 0,wheelchairSpaceType:o.wheelchairSpaceType,commercial:o.commercial,glyph:o.glyph,viewUrl:o.viewUrl,viewMeta:o.viewMeta,labelStyle:o.labelStyle});return t}function Me(e){if(e.seatCountsBySide)return{...e.seatCountsBySide};let t=e.sides&&e.sides.length?e.sides:["top","bottom"],o=["top","bottom","left","right"].filter(r=>t.includes(r)),n={top:0,bottom:0,left:0,right:0};if(!o.length)return n;let i=Math.max(0,Math.round(e.seatCount));for(let r=0;r<i;r++)n[o[r%o.length]]+=1;return n}function xn(e){let t=[],o=Math.max(0,Math.round(e.seatCount));if(o===0)return t;let n=new Map((e.overrides??[]).map(d=>[d.index,d])),i=(d,b,p,m)=>{let g=n.get(d),S=at(g),I=g?.label??Xt(e,d);return{index:d,label:I,displayLabel:g?.displayLabel??Yt(e,d),x:b+(g?.dx??0),y:p+(g?.dy??0),categoryKey:g?.categoryKey??e.categoryKey,skipped:!!g?.skip,accessible:S.length>0,accessibility:S,wheelchairSpaceType:g?.wheelchairSpaceType,commercial:g?.commercial,glyph:g?.glyph,viewUrl:g?.viewFromSeatUrl,viewMeta:g?.viewFromSeatUrl?g.viewFromSeatMeta:void 0,labelStyle:g?.labelStyle,...m?{side:m}:{}}};if(e.shape==="round"){let d=(e.radius??40)+we,b=e.rotation*$e,p=Math.max(0,Math.min(360,e.seatArc??360));if(p>=360||o===1){for(let I=0;I<o;I++){let A=b+I/o*2*Math.PI;t.push(i(I,e.center.x+d*Math.cos(A),e.center.y+d*Math.sin(A)))}return t}let m=p*$e,g=(2*Math.PI-m)/2,S=b+g;for(let I=0;I<o;I++){let A=S+I/(o-1)*m;t.push(i(I,e.center.x+d*Math.cos(A),e.center.y+d*Math.sin(A)))}return t}let r=e.width??80,s=e.height??50,l=Me(e),u=["top","bottom","left","right"],c=0;for(let d of u){let b=l[d];for(let p=0;p<b;p++){let m,g;d==="top"?(m=-r/2+(p+.5)*r/b,g=-s/2-we):d==="bottom"?(m=-r/2+(p+.5)*r/b,g=s/2+we):d==="left"?(m=-r/2-we,g=-s/2+(p+.5)*s/b):(m=r/2+we,g=-s/2+(p+.5)*s/b);let S=st(m,g,e.rotation,e.center);t.push(i(c++,S.x,S.y,d))}}return t}function vn(e){return e.bookAsWhole||e.variableOccupancy?Math.max(0,Math.round(e.seatCount)):xn(e).filter(t=>!t.skipped).length}function z(e){return xn(e).filter(t=>!t.skipped).map(t=>({id:`${e.id}:${t.index}`,label:t.label,...t.displayLabel!==t.label?{displayLabel:t.displayLabel}:{},x:t.x,y:t.y,rowId:e.id,categoryKey:t.categoryKey,...t.accessible?{accessible:!0}:{},...t.accessibility.length?{accessibility:t.accessibility}:{},...t.wheelchairSpaceType?{wheelchairSpaceType:t.wheelchairSpaceType}:{},...t.commercial?{commercial:t.commercial}:{},...t.glyph?{glyph:t.glyph}:{},...t.viewUrl?{viewUrl:t.viewUrl}:{},...t.viewUrl&&t.viewMeta?{viewMeta:t.viewMeta}:{},...t.labelStyle?{labelStyle:t.labelStyle}:{}}))}function $i(e){return[{id:`${e.id}:0`,label:e.label,...e.displayLabel&&e.displayLabel!==e.label?{displayLabel:e.displayLabel}:{},x:e.center.x,y:e.center.y,rowId:e.id,categoryKey:e.categoryKey,kind:"booth",...e.commercial?.note?{commercial:{note:e.commercial.note}}:{}}]}function bn(e,t){let o=!1;for(let n=0,i=t.length-1;n<t.length;i=n++){let r=t[n].x,s=t[n].y,l=t[i].x,u=t[i].y;s>e.y!=u>e.y&&e.x<(l-r)*(e.y-s)/(u-s)+r&&(o=!o)}return o}function Bi(e,t){return t.some((o,n)=>{let i=t[(n+1)%t.length],r=(e.y-o.y)*(i.x-o.x)-(e.x-o.x)*(i.y-o.y);if(Math.abs(r)>1e-7)return!1;let s=(e.x-o.x)*(i.x-o.x)+(e.y-o.y)*(i.y-o.y),l=(i.x-o.x)**2+(i.y-o.y)**2;return s>=-1e-7&&s<=l+1e-7})}function ct(e){return Array.isArray(e)?e.filter(t=>Array.isArray(t)&&t.length>=3):[]}function H(e,t,o){return bn(e,t)&&!ct(o).some(n=>bn(e,n)||Bi(e,n))}function De(e){if(!e.length)return{x:0,y:0};let t=0,o=0;for(let n of e)t+=n.x,o+=n.y;return{x:t/e.length,y:o/e.length}}function Y(e){switch(e.type){case"row":{let t=yn(e),o=hn(e),n=0,i=0,r=0;for(let s=0;s<t.length;s++){let l=o.get(s);l?.skip||(n+=t[s].x+(l?.dx??0),i+=t[s].y+(l?.dy??0),r++)}return r?{x:n/r,y:i/r}:{x:e.origin.x,y:e.origin.y}}case"table":case"booth":return{x:e.center.x,y:e.center.y};case"gaArea":return De(e.points);case"section":return De(e.outline);case"text":return{x:e.position.x,y:e.position.y};case"shape":return e.points&&e.points.length?De(e.points):e.x!=null&&e.y!=null&&e.width!=null&&e.height!=null?{x:e.x+e.width/2,y:e.y+e.height/2}:{x:e.x??0,y:e.y??0};case"decorImage":return{x:e.x+e.width/2,y:e.y+e.height/2}}}function mn(e,t){return e.length===t.length&&e.every((o,n)=>o.x===t[n].x&&o.y===t[n].y)}function Gi(e,t){if(e.type!=="gaArea"||!mn(e.points,t.outline))return!1;let o=ct(e.holes),n=ct(t.holes);return o.length===n.length&&o.every((i,r)=>mn(i,n[r]))}function Ki(e,t,o=e.filter(i=>i.type==="section"),n=Y(t)){let i="referenceInventorySource"in t?t.referenceInventorySource?.logicalSectionId:void 0;return(i?o.find(s=>(s.logicalSectionId??s.id)===i&&(Gi(t,s)||H(n,s.outline,s.holes))):void 0)??o.find(s=>H(n,s.outline,s.holes))}function Ie(e){return e.floors&&e.floors.length?e.floors:[{id:"floor-0",name:"Main",objects:e.objects,focalPoint:e.focalPoint,referenceImage:e.referenceImage,backgroundImage:e.backgroundImage}]}function Ge(e){return e.floors&&e.floors.length?e.floors.flatMap(t=>t.objects):e.objects}function pn(e,t,o,n,i,r,s,l,u){let c=[],d=e.filter(S=>S.type==="section"),b=Vt(e),p=S=>!S?.eventConfigurationId||S.eventConfigurationId===n&&(S.eventConfigurationVersion===void 0||S.eventConfigurationVersion===u),m=S=>tn(S,{activeConfigurationId:n,activeConfigurationVersion:u,activeBasisSha256:i,now:l}),g=(S,I)=>m(S)?{...S,coverage:I}:void 0;for(let S of e){let I=[];if(S.type==="row"?I=U(S):S.type==="table"?I=z(S):S.type==="booth"&&(I=$i(S)),!I.length)continue;for(let M of I)M.viewUrl&&!p(M.viewMeta)&&(M.viewUrl=void 0,M.viewMeta=void 0);if(S.type==="row"){let M=b.get(S.id);if(M){let v=new Map((S.overrides??[]).map(C=>[C.index,C]));for(let C of I){let x=Number(C.id.slice(C.id.lastIndexOf(":")+1));if(!Number.isInteger(x))continue;C.logicalRowId=M.groupId,C.logicalSeatIndex=M.adjacencyOffset+x,v.get(x)?.displayLabel||(C.displayLabel=Je(S,x,M)),!C.viewUrl&&M.viewFromSeatUrl&&p(M.viewFromSeatMeta)&&(C.viewUrl=M.viewFromSeatUrl,C.viewMeta=M.viewFromSeatMeta);let w=v.get(x)?.confidenceEvidence;C.confidenceEvidence=g(w,"exact-seat")??g(S.confidenceEvidence,"row-representative")??g(M.confidenceEvidence,"row-representative")}}}let A=Ki(e,S,d,S.type==="row"?De(I):Y(S)),R=A?.viewFromSeatUrl,P=(A?.zone?t?.find(M=>M.id===A.zone):void 0)?.focalPoint??o;for(let M of I){if(!M.confidenceEvidence){let v=Number(M.id.slice(M.id.lastIndexOf(":")+1)),C=(S.type==="row"||S.type==="table")&&Number.isInteger(v)?S.overrides?.find(x=>x.index===v)?.confidenceEvidence:void 0;M.confidenceEvidence=g(C,"exact-seat")??(S.type==="row"?g(S.confidenceEvidence,"row-representative"):void 0)}M.confidenceEvidence??=g(A?.confidenceEvidence,"section-representative")??(s?g(s.evidence,s.coverage):void 0),!M.viewUrl&&R&&p(A?.viewFromSeatMeta)&&(M.viewUrl=R,M.viewMeta=A?.viewFromSeatMeta),!M.viewUrl&&r&&p(r.meta)&&(M.viewUrl=r.url,M.viewMeta=r.meta),A&&(M.sectionId=A.logicalSectionId??A.id),A?.zone&&(M.zoneId=A.zone),P&&(M.focalPoint={...P})}c.push(...I)}return c}function Sn(e,t={}){if(e.floors?.length){let n=[];for(let i of e.floors){let r=i.focalPoint??e.focalPoint,s=i.viewFromSeatUrl?{url:i.viewFromSeatUrl,meta:i.viewFromSeatMeta}:e.viewFromSeatUrl?{url:e.viewFromSeatUrl,meta:e.viewFromSeatMeta}:void 0,l=i.confidenceEvidence?{evidence:i.confidenceEvidence,coverage:"floor-representative"}:e.confidenceEvidence?{evidence:e.confidenceEvidence,coverage:"venue-representative"}:void 0,u=pn(i.objects,e.zones,r,e.eventConfigurationId,e.confidenceBasisSha256,s,l,t.now,t.eventConfigurationVersion??e.eventConfigurationVersion);t.resolveEyeHeights!==!1&&gn(i.objects,i.focalPoint??e.focalPoint,i.baseHeightM??0,u);for(let c of u)c.floorId=i.id;for(let c of u)n.push(c)}return n}let o=pn(e.objects,e.zones,e.focalPoint,e.eventConfigurationId,e.confidenceBasisSha256,e.viewFromSeatUrl?{url:e.viewFromSeatUrl,meta:e.viewFromSeatMeta}:void 0,e.confidenceEvidence?{evidence:e.confidenceEvidence,coverage:"venue-representative"}:void 0,t.now,t.eventConfigurationVersion??e.eventConfigurationVersion);return t.resolveEyeHeights!==!1&&gn(e.objects,e.focalPoint,t.floorBaseHeightM??0,o),Ui(e,o,t)}function Ui(e,t,o){return!o.deriveRestrictedView||e.derivedRestrictedView===!1||o.resolveEyeHeights===!1||fn(t,dn(t,un(e))),t}function gn(e,t,o,n){let i=e.filter(b=>b.type==="section"),r=o>0||i.some(b=>b.height!==void 0||b.rake!==void 0||(b.elevation??0)>0);if(!i.length||!r||!t){for(let b of n)b.eyeHeightM=o+ce;return}let s=new Array(n.length),l=new Map;for(let b of i)l.has(b.id)||l.set(b.id,b);let u=new Map,c=new Map;for(let b=0;b<n.length;b++){let p=n[b],g=(p.sectionId?l.get(p.sectionId)??i.find(I=>I.logicalSectionId===p.sectionId&&H({x:p.x,y:p.y},I.outline,I.holes)):void 0)??i.find(I=>H({x:p.x,y:p.y},I.outline,I.holes))??null;if(s[b]=g,!g)continue;u.has(g.id)||u.set(g.id,Se(g,{floorBaseHeightM:o}));let S=c.get(g.id);S?S.push(b):c.set(g.id,[b])}let d=new Array(n.length).fill(void 0);for(let[b,p]of c){let m=u.get(b);if(!m)continue;let g=m.rake>0?Math.tan(m.rake*Math.PI/180):0,S=en(b,n,p,t);for(let I of S.rows){let A=I.blockDepth*ae*g,R=m.height+A;for(let O of I.seatIndices)d[O]=R}}for(let b=0;b<n.length;b++){let p=n[b],m=s[b];if(!m){p.eyeHeightM=o+ce;continue}let g=u.get(m.id);p.eyeHeightM=(d[b]??g.height)+ce}}var Ke="__sl_ga__";function W(e){return e.startsWith(Ke)}var Vi=Ke,J=1e5;function In(e,t){return`${Vi}${encodeURIComponent(e)}__${t+1}`}function Ue(e){let t=e.inventorySegments;if(t===void 0)return!0;if(!Array.isArray(t)||t.length<1||t.length>256)return!1;let o=0,n=new Map;for(let i of t){if(!i||typeof i.sourceAreaId!="string"||!i.sourceAreaId.trim()||i.sourceAreaId.length>160||!Number.isInteger(i.startIndex)||i.startIndex<0||!Number.isInteger(i.count)||i.count<1||i.startIndex+i.count>J||(o+=i.count,o>J))return!1;let r=n.get(i.sourceAreaId)??[],s=i.startIndex+i.count;if(r.some(l=>i.startIndex<l.end&&s>l.start))return!1;r.push({start:i.startIndex,end:s}),n.set(i.sourceAreaId,r)}return o===e.capacity}function lt(e){let t=Math.min(J,Math.max(0,Math.floor(e.capacity)));return e.inventorySegments===void 0?t?[{sourceAreaId:e.id,startIndex:0,count:t}]:[]:Ue(e)?e.inventorySegments.map(o=>({...o})):[]}var ee=100,zi=`An area sold to one party holds at most ${ee} guests.`;function Z(e){return e.variableOccupancy?"variable":e.bookAsWhole?"whole":null}function Hi(e){return Z(e)==="variable"?{min:e.minOccupancy??1,max:e.maxOccupancy??e.capacity}:{min:e.capacity,max:e.capacity}}function ut(e){return dt(e,2)}function dt(e,t){return t===2&&Z(e)&&e.inventorySegments===void 0?e.label.trim()?[e.label]:[]:lt(e).flatMap(o=>Array.from({length:o.count},(n,i)=>In(o.sourceAreaId,o.startIndex+i)))}function wn(e){let t=e.wheelchairPlaces;return!Number.isInteger(t)||t<=0?0:Math.min(t,Math.max(0,Math.floor(e.capacity)))}function Xi(e,t=2){let o=wn(e);if(!o)return new Set;let n=dt(e,t);return n.length===1&&Z(e)&&t===2?new Set(n):new Set(n.slice(Math.max(0,n.length-o)))}function Yi(e,t){if(e.inventorySegments===void 0||t===e.capacity)return e.inventorySegments;if(t<e.capacity)return;let o=lt(e);if(!o.length)return;let n=t-e.capacity;if(!n)return o;let r=o.filter(l=>l.sourceAreaId===e.id).reduce((l,u)=>Math.max(l,u.startIndex+u.count),0),s=o[o.length-1];if(s?.sourceAreaId===e.id&&s.startIndex+s.count===r)s.count+=n;else{if(o.length>=256)return;o.push({sourceAreaId:e.id,startIndex:r,count:n})}return o}function Wi(e){return Ge(e).filter(t=>t.type==="gaArea")}var Zi=.15,qi=1.6;function Mn(e){return K(e??1,Zi,qi)}var Qi=/^#[0-9a-fA-F]{6}$/,Ji=/^#?([\da-f]{3}|[\da-f]{6})$/i;function Cn(e){return typeof e=="string"&&Qi.test(e)}function le(e){let t=Ji.exec((e??"").trim());if(!t)return null;let o=t[1].length===3?t[1].split("").map(i=>i+i).join(""):t[1],n=parseInt(o,16);return[n>>16&255,n>>8&255,n&255]}function kn(e,t){let o=r=>{let s=le(r);if(!s)return null;let l=R=>{let O=R/255;return O<=.04045?O/12.92:((O+.055)/1.055)**2.4},u=l(s[0]),c=l(s[1]),d=l(s[2]),b=(.4124*u+.3576*c+.1805*d)/.95047,p=.2126*u+.7152*c+.0722*d,m=(.0193*u+.1192*c+.9505*d)/1.08883,g=R=>R>.008856?Math.cbrt(R):7.787*R+16/116,S=g(b),I=g(p),A=g(m);return[116*I-16,500*(S-I),200*(I-A)]},n=o(e),i=o(t);return n&&i?Math.hypot(n[0]-i[0],n[1]-i[1],n[2]-i[2]):null}function ft(e){let t=e/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4}function bt(e){return .2126*ft(e[0])+.7152*ft(e[1])+.0722*ft(e[2])}function G(e,t){let o=le(e),n=le(t);if(!o||!n)return null;let i=bt(o),r=bt(n);return(Math.max(i,r)+.05)/(Math.min(i,r)+.05)}function er(e){let t=1/0,o=1/0,n=-1/0,i=-1/0,r=!1;for(let s of e)!Number.isFinite(s.x)||!Number.isFinite(s.y)||(r=!0,s.x<t&&(t=s.x),s.y<o&&(o=s.y),s.x>n&&(n=s.x),s.y>i&&(i=s.y));return r?{minX:t,minY:o,maxX:n,maxY:i}:null}function An(e){let t=er(e);return t?tr(t):null}function tr(e){return{x:e.minX,y:e.minY,width:e.maxX-e.minX,height:e.maxY-e.minY}}var ue=[{key:"wheelchair",label:"Wheelchair space",short:"Wheelchair",icon:"\u267F"},{key:"companion",label:"Companion seat",short:"Companion",icon:"\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}"},{key:"semi-ambulatory",label:"Semi-ambulatory (limited mobility)",short:"Limited mobility",icon:"\u{1F9AF}"},{key:"designated-aisle",label:"Designated aisle / transfer seat",short:"Aisle transfer",icon:"AS"},{key:"step-free",label:"Step-free accessible seat",short:"Step-free",icon:"SF"},{key:"hearing",label:"Assistive listening",short:"Hearing",icon:"\u{1F9BB}"},{key:"cart",label:"CART live-caption view",short:"CART captions",icon:"CC"},{key:"sign-language",label:"Sign-language view",short:"Sign language",icon:"\u{1F91F}"},{key:"low-vision",label:"Blind / low-vision viewing",short:"Low vision",icon:"LV"},{key:"sensory-friendly",label:"Quiet / sensory-friendly seating",short:"Sensory-friendly",icon:"QS"},{key:"plus-size",label:"Plus-size seat",short:"Plus-size",icon:"\u{1F4BA}"},{key:"lift-armrest",label:"Lift-up armrest",short:"Lift armrest",icon:"\u2195\uFE0F"}],ps=new Map(ue.map(e=>[e.key,e]));var nr=[{key:"obstructedView",label:"Obstructed view",short:"Obstructed",icon:"\u26D4"},{key:"restrictedView",label:"Restricted view",short:"Restricted",icon:"\u{1F441}"},{key:"premium",label:"Premium seat",short:"Premium",icon:"\u2605"}],gs=new Map(nr.map(e=>[e.key,e]));var mt=8,pt=24,Rn=["start","end","both","none"],En=["inline","corner","peninsula","island"],or=["reference-focal","bar","entrance","exit","restroom","screen","sound","concession","coat","wall","rail","suite","obstruction"],ys=new Set(or);var Pn=7;var Tn=10;var yt=.85,_n=12,jn=4.5;var ir=3,On="#000000",Ln="#ffffff",rr=24,ar=18.67;function Nn(e,t=400){return e>=rr||t>=700&&e>=ar?ir:jn}var sr={wheelchair:"M7.8 4.5a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0zM8 7L10.5 7L10.5 15L8 15ZM8 12.5L18 12.5L18 15L8 15ZM16 15L18 15L18 18L16 18ZM5.5 16a5.5 5.5 0 1 0 11 0a5.5 5.5 0 1 0 -11 0zM8 16a3 3 0 1 1 6 0a3 3 0 1 1 -6 0z",companion:"M5.5 6.5a3 3 0 1 0 6 0a3 3 0 1 0 -6 0zM4.5 18.5L6 11.5L11 11.5L12.5 18.5ZM12.5 7.5a3 3 0 1 0 6 0a3 3 0 1 0 -6 0zM11.5 19L13 12.5L18 12.5L19.5 19Z","semi-ambulatory":"M8.3 3.8a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0zM9 6.2L12 6.6L11 13.5L8.6 13L9 6.2ZM8.6 13L11 13L9.5 21L7 21ZM10.4 13L12.6 13L13.6 21L11.2 21ZM11.2 7.2L14 8L14.6 9.6L11.9 8.9ZM14.4 6.8L15.9 6.8L16.4 21L14.8 21Z","designated-aisle":"M3 5L6 5L6 14L3 14ZM3 12L13 12L13 15L3 15ZM5 15L7 15L7 20L5 20ZM11 15L13 15L13 20L11 20ZM13 7L20 7L17 4L19 4L23 8.5L19 13L17 13L20 10L13 10Z","step-free":"M4 4.5a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0zM4.4 7L7.5 7L7.5 13L11 15L9.5 17L5 14L4.4 7ZM2 19L8 19L17 10L22 10L22 13L18 13L10 21L2 21Z",hearing:"M15.5 3.5C9 2.2 5.5 6 5.5 11.5C5.5 16 8 19.5 10.5 21C13.2 22.6 16.4 20.8 15.4 18C14.8 16.4 12.9 16.1 13 14C13.1 11.9 15.8 11.4 15.8 8.5C15.8 5.4 13 4 15.5 3.5Z",cart:"M5.5 6L18.5 6a2.5 2.5 0 0 1 2.5 2.5L21 15.5a2.5 2.5 0 0 1 -2.5 2.5L11 18L7 20.5L7.5 18L5.5 18a2.5 2.5 0 0 1 -2.5 -2.5L3 8.5a2.5 2.5 0 0 1 2.5 -2.5zM6.5 11L17.5 11L17.5 12.6L6.5 12.6zM6.5 14L17.5 14L17.5 15.6L6.5 15.6z","sign-language":"M7 11L17 11L17 18a2 2 0 0 1 -2 2L9 20a2 2 0 0 1 -2 -2zM7.6 5L9.4 5L9.4 12L7.6 12zM9.9 3.5L11.7 3.5L11.7 12L9.9 12zM12.3 3.5L14.1 3.5L14.1 12L12.3 12zM14.6 5L16.4 5L16.4 12L14.6 12zM7.2 12.5L5 10.2L6.4 8.9L8.6 11.2Z","low-vision":"M2.5 12C6 6 18 6 21.5 12C18 18 6 18 2.5 12ZM9 12a3 3 0 1 0 6 0a3 3 0 1 0 -6 0zM17.5 3L19 3L19 6L17.5 6ZM19 4L22 4L22 5.5L19 5.5Z","sensory-friendly":"M4 11C4 5 7 2.5 12 2.5S20 5 20 11L17 11C17 7 15.5 5.5 12 5.5S7 7 7 11ZM3 10L8 10L8 19L5 19a2 2 0 0 1 -2 -2ZM16 10L21 10L21 17a2 2 0 0 1 -2 2L16 19ZM9 12L15 12L15 14L9 14ZM10 16L14 16L14 18L10 18Z","plus-size":"M9.4 4.3a2.6 2.6 0 1 0 5.2 0a2.6 2.6 0 1 0 -5.2 0zM5 20L4 13C4 10.5 7 9.5 12 9.5C17 9.5 20 10.5 20 13L19 20Z","lift-armrest":"M5 6L8 6L8 19L5 19zM5 16L18 16L18 19L5 19zM8 12L17 12L17 14.5L8 14.5zM14 7L16 7L16 12L14 12zM12 7L18 7L15 3Z"},ws=sr.wheelchair;var gt=G;function ht(e,t,o){let n=le(e),i=le(t);if(!n||!i)return t;let r=Math.max(0,Math.min(1,o));return`#${n.map((l,u)=>Math.round(l*r+i[u]*(1-r))).map(l=>l.toString(16).padStart(2,"0")).join("")}`}function Fn(e,t,o=jn){let n=gt(t,e);if(n!=null&&n>=o)return t;let i=gt(On,e)??0,r=gt(Ln,e)??0;return i===0&&r===0?t:i>=r?On:Ln}function cr(e){let t=0;for(let o=0,n=e.length;o<n;o+=1){let i=e[o],r=e[(o+1)%n];t+=i.x*r.y-r.x*i.y}return t/2}function de(e){return cr(e)*2}var Ve=[{key:"row-seats",label:"row seats",suffix:"rows",labelSuffix:"Rows",creationWord:"Seats",objectType:"row"},{key:"table-chairs",label:"table chairs",suffix:"tables",labelSuffix:"Tables",creationWord:"Tables",objectType:"table"},{key:"booth-units",label:"booth units",suffix:"booths",labelSuffix:"Booths",creationWord:"Booths",objectType:"booth"},{key:"ga-capacity",label:"GA capacity",suffix:"ga",labelSuffix:"GA",creationWord:"Standing",objectType:"gaArea"}];function Dn(e){return e.floors?.length?e.floors:[{id:"floor-0",objects:e.objects}]}function lr(e){return Ve.find(t=>t.key===e)}function ke(e){let t=new Map,o=Math.max(0,Math.floor(e.seatCount)),n=new Map((e.overrides??[]).filter(r=>Number.isInteger(r.index)&&r.index>=0&&r.index<e.seatCount).map(r=>[r.index,r])),i=(r,s=1)=>{r&&s>0&&t.set(r,(t.get(r)??0)+s)};i(e.categoryKey,o-n.size);for(let r of n.values())r.skip||i(r.categoryKey??e.categoryKey);return t}function ur(e){return e.type==="row"||e.type==="table"?[...ke(e).keys()]:e.type==="booth"?e.categoryKey?[e.categoryKey]:[]:e.type==="gaArea"?e.capacity>0&&e.categoryKey?[e.categoryKey]:[]:[]}function $n(e){return Ve.find(t=>t.objectType===e.type)??null}function Bn(e){return e.type==="row"||e.type==="table"||e.type==="booth"||e.type==="gaArea"}function Ce(e){let t=new Map;for(let i of Dn(e))for(let r of i.objects){if(!Bn(r))continue;let s=$n(r);for(let l of ur(r)){let u=t.get(l)??new Map,c=u.get(s.key)??[];if(!c.some(d=>d.id===r.id)){let d=r.displayLabel||r.label||r.id;c.push({id:r.id,label:d,type:s.objectType,floorId:i.id})}u.set(s.key,c),t.set(l,u)}}let o=new Map(e.categories.map(i=>[i.key,i.label]));return[...e.categories.map(i=>i.key),...[...t.keys()].filter(i=>!o.has(i)).sort()].flatMap(i=>{let r=t.get(i);if(!r||r.size<2)return[];let s=Ve.flatMap(l=>{let u=r.get(l.key);return u?.length?[{family:l.key,label:l.label,objectType:l.objectType,targets:u}]:[]});return[{categoryKey:i,categoryLabel:o.get(i)??i,families:s,objectIds:[...new Set(s.flatMap(l=>l.targets.map(u=>u.id)))]}]})}function xt(e){let t=e.families.map(o=>`${o.label} (${o.targets.map(n=>n.label).join(", ")})`).join(" and ");return`Category \u201C${e.categoryLabel}\u201D is used by more than one kind of inventory: ${t}. Each category can belong to only one kind. Use the safe split to separate them (prices, ticket tiers, accessibility, and provenance are preserved).`}function Gn(e){return e.normalize("NFKC").trim().toLocaleLowerCase("en")}function dr(e,t,o){for(let n=1;n<=1e4;n+=1){let i=n===1?`--${t}`:`--${t}-${n}`,s=`${e.slice(0,Math.max(1,160-i.length))}${i}`;if(!o.has(s))return o.add(s),s}throw new Error(`Unable to allocate a category key for ${e} (${t})`)}function fr(e,t,o){for(let n=1;n<=1e4;n+=1){let i=n===1?` (${t})`:` (${t} ${n})`,s=`${e.normalize("NFKC").trim().slice(0,Math.max(1,80-i.length)).trimEnd()}${i}`,l=Gn(s);if(!o.has(l))return o.add(l),s}throw new Error(`Unable to allocate a category label for ${e} (${t})`)}function br(e,t,o,n){let i=lr(t);return{...structuredClone(e),key:dr(e.key,i.suffix,o),label:fr(e.label,i.labelSuffix,n)}}function mr(e,t,o){let n=[];for(let i of Dn(e))for(let r of i.objects){if(!Bn(r))continue;let s=$n(r),l=o.get(s.key);if(!(!l||l===t))if(r.type==="row"||r.type==="table"){let u=[];r.categoryKey===t&&(r.categoryKey=l);for(let c of r.overrides??[])c.categoryKey===t&&(c.categoryKey=l,u.push(c.index));(r.categoryKey===l||u.length)&&n.push({family:s.key,floorId:i.id,objectId:r.id,objectType:s.objectType,fromCategoryKey:t,toCategoryKey:l,...u.length?{seatOverrideIndices:u.sort((c,d)=>c-d)}:{}})}else r.categoryKey===t&&(r.categoryKey=l,n.push({family:s.key,floorId:i.id,objectId:r.id,objectType:s.objectType,fromCategoryKey:t,toCategoryKey:l}))}return n}function vt(e){let t=structuredClone(e),o=Ce(t);if(!o.length)return{doc:t,changed:!1,changes:[],before:o,after:o};let n=new Set(t.categories.map(l=>l.key)),i=new Set(t.categories.map(l=>Gn(l.label))),r=[];for(let l of o){let u=t.categories.findIndex(g=>g.key===l.categoryKey);if(u<0)continue;let c=t.categories[u],d=l.families[0].family,b=new Map([[d,c.key]]),p=l.families.slice(1).map(g=>{let S=br(c,g.family,n,i);return b.set(g.family,S.key),{family:g.family,key:S.key,label:S.label,category:S}});t.categories.splice(u+1,0,...p.map(g=>g.category));let m=mr(t,c.key,b);r.push({categoryKey:c.key,categoryLabel:c.label,retainedFamily:d,clones:p.map(({family:g,key:S,label:I})=>({family:g,key:S,label:I})),reassignments:m})}t.floors?.length&&(t.objects=t.floors[0].objects);let s=Ce(t);return{doc:t,changed:r.length>0,changes:r,before:o,after:s}}function pr(e,t){return Math.abs(e.x-t.x)<=1e-7&&Math.abs(e.y-t.y)<=1e-7}function Ae(e,t,o){return(t.x-e.x)*(o.y-e.y)-(t.y-e.y)*(o.x-e.x)}function ze(e,t,o){let n=Ae(t,o,e);return Math.abs(n)>1e-7?!1:e.x>=Math.min(t.x,o.x)-1e-7&&e.x<=Math.max(t.x,o.x)+1e-7&&e.y>=Math.min(t.y,o.y)-1e-7&&e.y<=Math.max(t.y,o.y)+1e-7}function gr(e,t,o,n){let i=Ae(e,t,o),r=Ae(e,t,n),s=Ae(o,n,e),l=Ae(o,n,t);return(i>1e-7&&r<-1e-7||i<-1e-7&&r>1e-7)&&(s>1e-7&&l<-1e-7||s<-1e-7&&l>1e-7)?!0:Math.abs(i)<=1e-7&&ze(o,e,t)||Math.abs(r)<=1e-7&&ze(n,e,t)||Math.abs(s)<=1e-7&&ze(e,o,n)||Math.abs(l)<=1e-7&&ze(t,o,n)}function yr(e){return e.reduce((t,o,n)=>{let i=e[(n+1)%e.length];return t+o.x*i.y-i.x*o.y},0)}function hr(e){for(let t=0;t<e.length;t+=1){let o=(t+1)%e.length;for(let n=t+1;n<e.length;n+=1){let i=(n+1)%e.length;if(!(t===n||o===n||i===t)&&gr(e[t],e[o],e[n],e[i]))return!0}}return!1}function Kn(e){return e.length<3?{ok:!1,code:"too_few_vertices",message:"Add at least three vertices to create a polygon."}:e.length>256?{ok:!1,code:"too_many_vertices",message:"A polygon can contain at most 256 vertices."}:e.some(t=>!Number.isFinite(t.x)||!Number.isFinite(t.y)||Math.abs(t.x)>1e7||Math.abs(t.y)>1e7)?{ok:!1,code:"invalid_coordinate",message:"Every polygon vertex must use a finite coordinate inside the safe chart range."}:e.some((t,o)=>pr(t,e[(o+1)%e.length]))?{ok:!1,code:"duplicate_vertex",message:"Move or remove duplicate neighbouring vertices."}:Math.abs(yr(e))<2?{ok:!1,code:"degenerate_polygon",message:"The polygon needs a visible enclosed area."}:hr(e)?{ok:!1,code:"self_intersection",message:"Polygon edges cannot cross or touch each other."}:{ok:!0}}function Un(e){return typeof e=="string"&&Rn.includes(e)}var Vn="M13 4.6a1.6 1.6 0 1 0-3.2 0 1.6 1.6 0 0 0 3.2 0 M11 6.5V13h5l2.4 6 M15 16.4A5 5 0 1 1 9 11.3",zn=[{key:"restroom-men",label:"Men's restroom",group:"facilities",path:"M16 7a4 4 0 1 0-8 0 4 4 0 0 0 8 0 M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"},{key:"restroom-women",label:"Women's restroom",group:"facilities",path:"M15 5a3 3 0 1 0-6 0 3 3 0 0 0 6 0 M12 8l-4 10h8l-4-10 M10 18v4 M14 18v4"},{key:"restroom-accessible",label:"Accessible restroom",group:"facilities",path:Vn},{key:"first-aid",label:"First aid",group:"facilities",path:"M5 4h14a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Z M12 8v8 M8 12h8"},{key:"coat-check",label:"Coat check",group:"facilities",path:"M12 6a2 2 0 0 1 0-4 2 2 0 0 1 1.6 3.2L21 13H3l8.4-7.8 M3 13h18"},{key:"atm",label:"ATM / cash",group:"facilities",path:"M2 6h20v12H2V6Z M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0 M6 9h.01 M18 15h.01"},{key:"info",label:"Info point",group:"facilities",path:"M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18 M12 11v5 M12 8h.01"},{key:"lost-found",label:"Lost & found",group:"facilities",path:"M11 4a7 7 0 1 0 0 14 7 7 0 0 0 0-14 M16 16l5 5 M9 8.5a2 2 0 1 1 3 1.7c-.8.5-1 .8-1 1.8 M11 15h.01"},{key:"restrooms",label:"Restrooms",group:"facilities",path:"M6 3h12a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M12 8a2 2 0 1 0 0 4 2 2 0 0 0 0-4 M9 18v-3.5a3 3 0 0 1 6 0V18"},{key:"charging",label:"Charging point",group:"facilities",path:"M3 8h13v8H3V8Z M16 10h3v4h-3 M9.6 9l-2 3.5h2.5l-1.5 3"},{key:"smoking",label:"Smoking area",group:"facilities",path:"M2 15h13v3H2v-3Z M18 16h2 M19 8c0 1 1 1.5 1 2.5S19 12 19 13"},{key:"no-smoking",label:"No smoking",group:"facilities",path:"M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18 M5.6 5.6l12.8 12.8 M7 13h6v2H7v-2Z"},{key:"food",label:"Food",group:"food-drink",path:"M7 3v6a2 2 0 0 0 4 0V3 M9 11v10 M17 3c-1.6 1-2.2 3-2.2 6 0 2 .9 3.2 2.2 3.6V21"},{key:"bar",label:"Bar",group:"food-drink",path:"M4 5h16l-8 8-8-8Z M12 13v6 M8 20h8"},{key:"coffee",label:"Caf\xE9 / coffee",group:"food-drink",path:"M4 8h13v4a5 5 0 0 1-5 5H9a5 5 0 0 1-5-5V8Z M17 9h2a2 2 0 0 1 0 4h-2 M8 2v2 M11 2v2 M4 21h14"},{key:"water",label:"Water / drinks",group:"food-drink",path:"M12 22a7 7 0 0 1-7-7c0-5 7-12 7-12s7 7 7 12a7 7 0 0 1-7 7Z"},{key:"merch",label:"Merch / shop",group:"food-drink",path:"M6 8h12l-1 12H7L6 8Z M9 8V6a3 3 0 0 1 6 0v2"},{key:"screen",label:"Screen",group:"facilities",path:"M3 4h18v12H3V4Z M9 20h6 M12 16v4 M10 8l4 2-4 2V8Z"},{key:"sound-booth",label:"Sound booth",group:"facilities",path:"M6 4v16 M6 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4 M12 4v16 M12 8a2 2 0 1 0 0 4 2 2 0 0 0 0-4 M18 4v16 M18 12a2 2 0 1 0 0 4 2 2 0 0 0 0-4"},{key:"entrance",label:"Entrance",group:"navigation",path:"M14 3h5a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-5 M3 12h11 M10 8l4 4-4 4"},{key:"exit",label:"Exit",group:"navigation",path:"M10 3H5a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h5 M14 12h7 M17 8l4 4-4 4"},{key:"emergency-exit",label:"Emergency exit",group:"navigation",path:"M14 4.6a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0 M12.5 8l-3.5 2 1.6 3.6-2 4.4 M12.5 10l3.5 1.5 M9 10.5l-3.5 1 M15 12h6 M18 9l3 3-3 3"},{key:"stairs",label:"Stairs",group:"navigation",path:"M3 20v-4h4v-4h4v-4h4V4h5"},{key:"elevator",label:"Elevator",group:"navigation",path:"M5 3h14a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M8 11l1.5-2 1.5 2 M8 14l1.5 2 1.5-2 M15 8v8"},{key:"parking",label:"Parking",group:"navigation",path:"M5 3h14a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M9 17V7h4a3 3 0 0 1 0 6H9"},{key:"wheelchair",label:"Wheelchair access",group:"accessibility",path:Vn},{key:"hearing",label:"Hearing assistance",group:"accessibility",path:"M8 20a4 4 0 0 1-2-3c0-1 .5-2 .5-3a4.5 4.5 0 1 1 9 0c0 1.4-1 2-2 2.4-1.2.5-1.5 1-1.5 2.2 M17 6a5 5 0 0 1 1 6 M19.5 4a8 8 0 0 1 1.2 9"}];var xr=new Map(zn.map(e=>[e.key,e]));function Hn(e){return typeof e=="string"&&xr.has(e)}var Os=zn.map(e=>e.key);var Xn=["butt","round","square"],Yn=["miter","round","bevel"],St=["none","arrow"];function It(e){return e==="line"||e==="polyline"}function te(e){return e.length>=3&&e.every(t=>Number.isFinite(t.x)&&Number.isFinite(t.y))}function fe(e,t,o){let n=(e.y-t.y)*(o.x-t.x)-(e.x-t.x)*(o.y-t.y);if(Math.abs(n)>1e-7)return!1;let i=(e.x-t.x)*(o.x-t.x)+(e.y-t.y)*(o.y-t.y);if(i<-1e-7)return!1;let r=(o.x-t.x)**2+(o.y-t.y)**2;return i<=r+1e-7}function be(e,t){let o=!1;for(let n=0,i=t.length-1;n<t.length;i=n++){let r=t[i],s=t[n];if(fe(e,r,s))return!0;r.y>e.y!=s.y>e.y&&e.x<(s.x-r.x)*(e.y-r.y)/(s.y-r.y)+r.x&&(o=!o)}return o}function q(e,t,o){return(t.x-e.x)*(o.y-e.y)-(t.y-e.y)*(o.x-e.x)}function Zn(e,t,o,n){let i=q(e,t,o),r=q(e,t,n),s=q(o,n,e),l=q(o,n,t);return(i>1e-7&&r<-1e-7||i<-1e-7&&r>1e-7)&&(s>1e-7&&l<-1e-7||s<-1e-7&&l>1e-7)?!0:Math.abs(i)<=1e-7&&fe(o,e,t)||Math.abs(r)<=1e-7&&fe(n,e,t)||Math.abs(s)<=1e-7&&fe(e,o,n)||Math.abs(l)<=1e-7&&fe(t,o,n)}function me(e){for(let t=0;t<e.length;t+=1){let o=(t+1)%e.length;for(let n=t+1;n<e.length;n+=1){let i=(n+1)%e.length;if(!(t===n||o===n||i===t)&&Zn(e[t],e[o],e[n],e[i]))return!0}}return!1}function Re(e,t){for(let o=0;o<e.length;o+=1)for(let n=0;n<t.length;n+=1)if(Zn(e[o],e[(o+1)%e.length],t[n],t[(n+1)%t.length]))return!0;return be(e[0],t)||be(t[0],e)}function Wn(e,t){return!t.some((o,n)=>fe(e,o,t[(n+1)%t.length]))&&be(e,t)}function qn(e){let t=e.outlinePath;if(!t?.segments.length)return;let o=r=>Number.isFinite(r.x)&&Number.isFinite(r.y),n=(r,s)=>Math.hypot(r.x-s.x,r.y-s.y);if(!o(t.start))return 0;let i=t.start;for(let r=0;r<t.segments.length;r++){let s=t.segments[r];if(!s||!o(s.end)||n(i,s.end)<=1e-9||s.kind==="bezier"&&(!o(s.control1)||!o(s.control2)))return r;if(s.kind==="arc"){if(!o(s.center)||!Number.isFinite(s.radius)||s.radius<=1e-6)return r;let l=Math.max(1e-4,s.radius*1e-4);if(Math.abs(n(i,s.center)-s.radius)>l||Math.abs(n(s.end,s.center)-s.radius)>l)return r}i=s.end}return n(i,t.start)>1e-4,t.segments.length-1}function vr(e,t,o,n){let i=q(e,t,o),r=q(e,t,n),s=q(o,n,e),l=q(o,n,t);return(i>1e-7&&r<-1e-7||i<-1e-7&&r>1e-7)&&(s>1e-7&&l<-1e-7||s<-1e-7&&l>1e-7)}function Qn(e,t){for(let o=0;o<e.length;o+=1)for(let n=0;n<t.length;n+=1)if(vr(e[o],e[(o+1)%e.length],t[n],t[(n+1)%t.length]))return!0;return e.some(o=>Wn(o,t))||t.some(o=>Wn(o,e))}function Jn(e){return e.role!=="reference-focal"||!e.points||!te(e.points)?null:e.points}function no(e,t){if(e.displayLabel!==void 0){let o=e.displayLabel.normalize("NFKC").trim();!(e.type==="row"&&e.displayLabel==="")&&(!o||o!==e.displayLabel||o.length>80)&&t.push({severity:"error",code:"invalid-display-label",message:`${e.type==="gaArea"?"GA area":e.type} "${e.label}" must use a normalized buyer label of 1 to 80 characters`,objectId:e.id})}if(e.displayType!==void 0){let o=e.displayType.normalize("NFKC").trim();(!o||o!==e.displayType||o.length>24)&&t.push({severity:"error",code:"invalid-display-type",message:`${e.type==="gaArea"?"GA area":e.type} "${e.label}" must use a normalized buyer type of 1 to 24 characters`,objectId:e.id})}e.type!=="row"&&Sr(e,t)}var eo=(e,t)=>typeof e=="string"&&e===e.normalize("NFKC").trim()&&e.length>=1&&e.length<=t;function Sr(e,t){let o=e.type==="gaArea"?"GA area":e.type==="table"?"Table":"Booth",n=(r,s)=>t.push({severity:"error",code:r,message:`${o} "${e.label}" ${s}`,objectId:e.id});e.entrance!==void 0&&!eo(e.entrance,40)&&n("invalid-entrance","must use a normalized entrance of 1 to 40 characters");let i=e.labelPresentation;if(i!==void 0){let r=i?.labelStyle?.size,s=r!==void 0&&(!Number.isFinite(r)||r<mt||r>pt);(!i||typeof i!="object"||i.visible!==void 0&&typeof i.visible!="boolean"||s)&&n("invalid-label-presentation",`has an invalid name-on-map setting (size ${mt}\u2013${pt})`)}if(e.type==="table"){let r=Wt(e.chairNumbering);r&&n("invalid-chair-numbering",`has invalid chair numbering: ${r}`)}e.type==="booth"&&(e.boothType!==void 0&&!En.includes(e.boothType)&&n("invalid-booth-type","must use inline, corner, peninsula or island as its booth type"),e.commercial!==void 0&&(!e.commercial||typeof e.commercial!="object"||Object.keys(e.commercial).some(r=>r!=="note")||e.commercial.note!==void 0&&!eo(e.commercial.note,160))&&n("invalid-booth-note","must use a normalized buyer note of 1 to 160 characters"))}function to(e,t,o,n){let i=e.crop,r=i&&(!Number.isFinite(i.x)||!Number.isFinite(i.y)||!Number.isFinite(i.width)||!Number.isFinite(i.height)||i.x<0||i.y<0||i.width<=0||i.height<=0||i.x+i.width>1.000001||i.y+i.height>1.000001);(!Number.isFinite(e.center?.x)||!Number.isFinite(e.center?.y)||!Number.isFinite(e.width)||e.width<=0||!Number.isFinite(e.opacity)||e.opacity<0||e.opacity>1||e.rotation!==void 0&&!Number.isFinite(e.rotation)||r)&&o.push({severity:"error",code:"invalid-background-placement",message:`The ${t} image has an invalid position, size, opacity, rotation, or crop`,...n?{floorId:n}:{}})}function wt(e,t,o,n){let i=e.referenceImage,r=e.backgroundImage;i&&(to(i,"reference",t,n),!i.assetId&&!i.url&&t.push({severity:"error",code:"invalid-reference-image",message:"A trace reference must identify a private asset or self-contained image",...n?{floorId:n}:{}})),r&&(to(r,r.assetId?"legacy reference":"buyer background",t,n),!r.assetId&&!r.url&&t.push({severity:"error",code:"invalid-buyer-background",message:"A buyer background must contain a renderable image URL",...n?{floorId:n}:{}}),r.assetId&&o.push({severity:"warning",code:"legacy-reference-background",message:"This legacy asset-backed background is trace-only and will migrate to the private reference layer when edited",...n?{floorId:n}:{}})),nn(e)&&t.push({severity:"error",code:"conflicting-reference-images",message:"The canonical reference and legacy asset-backed background identify different private sources",...n?{floorId:n}:{}})}function Ee(e){let t=new Set(ue.map(o=>o.key));return!e||/^ref_[0-9a-f-]{36}$/.test(e.assetId)&&!!e.logicalSectionId.trim()&&["user-confirmed","authoritative-source"].includes(e.evidence)&&!!e.sourceDescription.trim()&&(e.derivation===void 0||["explicit-inventory","server-synthesized-from-aggregate"].includes(e.derivation))&&(e.aggregateEvidence===void 0||["user-confirmed","authoritative-source"].includes(e.aggregateEvidence))&&(e.derivation!=="server-synthesized-from-aggregate"||e.evidence==="user-confirmed")&&(e.sectionAssignmentEvidence===void 0||["user-confirmed","authoritative-source"].includes(e.sectionAssignmentEvidence))&&e.sectionAssignmentEvidence===void 0==!e.sectionAssignmentSourceDescription?.trim()&&(e.sectionAssignmentSourceDescription?.trim().length??0)<=240&&(e.numberingEvidence===void 0||e.numberingEvidence==="user-confirmed")&&e.numberingEvidence===void 0==!e.numberingSourceDescription?.trim()&&(e.numberingSourceDescription?.trim().length??0)<=240&&(!e.accessibility||e.accessibility.placementDerivation==="server-synthesized-row-edges"&&e.accessibility.groupLogicalSectionIds.length>0&&e.accessibility.groupLogicalSectionIds.length<=100&&new Set(e.accessibility.groupLogicalSectionIds).size===e.accessibility.groupLogicalSectionIds.length&&e.accessibility.groupLogicalSectionIds.includes(e.logicalSectionId)&&e.accessibility.groupLogicalSectionIds.every(o=>!!o.trim()&&o.length<=160)&&["user-confirmed","authoritative-source"].includes(e.accessibility.assignmentEvidence)&&!!e.accessibility.assignmentSourceDescription.trim()&&e.accessibility.assignmentSourceDescription.trim().length<=240&&e.accessibility.counts.length>0&&e.accessibility.counts.length<=ue.length&&new Set(e.accessibility.counts.map(o=>o.type)).size===e.accessibility.counts.length&&e.accessibility.counts.every(o=>t.has(o.type)&&Number.isInteger(o.count)&&o.count>0&&["user-confirmed","authoritative-source"].includes(o.evidence)&&!!o.sourceDescription.trim()&&o.sourceDescription.trim().length<=240))}function oo(e){let t=e.referenceInventoryExclusion;return!t||typeof t.assetId=="string"&&/^ref_[0-9a-f-]{36}$/.test(t.assetId)&&t.assetId===e.referenceSource?.assetId&&typeof t.logicalSectionId=="string"&&t.logicalSectionId===(e.logicalSectionId??e.id)&&typeof t.reason=="string"&&!!t.reason.trim()&&t.reason.trim().length<=80&&["user-confirmed","authoritative-source"].includes(t.evidence)&&typeof t.sourceDescription=="string"&&!!t.sourceDescription.trim()&&t.sourceDescription.trim().length<=240}function io(e){let t=e.referenceCategorySource;return!t||/^ref_[0-9a-f-]{36}$/.test(t.assetId)&&/^#[0-9a-f]{6}$/i.test(t.sourceColor)&&(t.sourceColors===void 0||t.sourceColors.length>0&&t.sourceColors.includes(t.sourceColor)&&new Set(t.sourceColors).size===t.sourceColors.length&&t.sourceColors.every(o=>/^#[0-9a-f]{6}$/i.test(o)&&`${o[1]}${o[3]}${o[5]}`.toLowerCase()===`${t.sourceColor[1]}${t.sourceColor[3]}${t.sourceColor[5]}`.toLowerCase()))&&(t.logicalSectionIds===void 0||t.logicalSectionIds.length>0&&new Set(t.logicalSectionIds).size===t.logicalSectionIds.length&&t.logicalSectionIds.every(o=>!!o.trim()&&o.length<=160))&&(t.assignmentDerivation===void 0||["source-color-class","confirmed-logical-sections"].includes(t.assignmentDerivation))&&t.assignmentEvidence===void 0==!t.assignmentSourceDescription?.trim()&&(t.assignmentEvidence===void 0||["user-confirmed","authoritative-source"].includes(t.assignmentEvidence))&&(t.assignmentSourceDescription?.trim().length??0)<=240&&(t.assignmentDerivation!=="confirmed-logical-sections"||t.assignmentEvidence!==void 0&&!!t.assignmentSourceDescription?.trim())&&t.sourcePaletteColor===void 0==(t.sourcePaletteColorEvidence===void 0)&&t.sourcePaletteColorEvidence===void 0==!t.sourcePaletteColorSourceDescription?.trim()&&(t.sourcePaletteColor===void 0||/^#[0-9a-f]{6}$/i.test(t.sourcePaletteColor))&&(t.sourcePaletteColorEvidence===void 0||["user-confirmed","authoritative-source"].includes(t.sourcePaletteColorEvidence))&&(t.sourcePaletteColorSourceDescription?.trim().length??0)<=240&&["user-confirmed","authoritative-source"].includes(t.labelEvidence)&&!!t.labelSourceDescription.trim()&&t.labelSourceDescription.trim().length<=240&&e.price!==void 0&&["user-confirmed","authoritative-source"].includes(t.priceEvidence)&&!!t.priceSourceDescription.trim()&&t.priceSourceDescription.trim().length<=240&&t.outputColorEvidence===void 0==!t.outputColorSourceDescription?.trim()&&(t.outputColorEvidence===void 0||["user-confirmed","authoritative-source"].includes(t.outputColorEvidence))&&(t.outputColorSourceDescription?.trim().length??0)<=240&&(e.color.toLowerCase()===(t.sourcePaletteColor??t.sourceColor).toLowerCase()&&new Set((t.sourceColors??[t.sourceColor]).map(o=>`${o[1]}${o[3]}${o[5]}`.toLowerCase())).size===1||t.outputColorEvidence!==void 0&&["user-confirmed","authoritative-source"].includes(t.outputColorEvidence))}function ro(e){let t=e.referenceDirectSeatImport;return!t||/^ref_[0-9a-f-]{36}$/.test(t.assetId)&&/^source-color:(?:#[0-9a-f]{6}(?:\+#[0-9a-f]{6})*|unclassified)$/i.test(t.familyId)}function ao(e,t){let o=e.floors?.length?e.floors.map(r=>({id:r.id,objects:r.objects})):[{id:"floor-0",objects:e.objects}],n=new Map,i=new Map;for(let r of o){let s=r.objects.filter(c=>c.type==="row"),l=new Map,u=new Map;for(let c of s){if(c.segmentedRow){let d=l.get(c.segmentedRow.groupId)??[];d.push(c),l.set(c.segmentedRow.groupId,d)}if(c.rowBlockGeneration){let d=u.get(c.rowBlockGeneration.groupId)??[];d.push(c),u.set(c.rowBlockGeneration.groupId,d)}c.segmentedRow&&c.rowBlockGeneration&&t.push({severity:"error",code:"invalid-row-group-membership",message:`Row "${c.label}" cannot be both a segmented-row component and a generated row-block member`,objectId:c.id,floorId:r.id})}for(let[c,d]of l){let b=n.get(c);b&&b!==r.id&&t.push({severity:"error",code:"invalid-segmented-row",message:`Segmented row "${c}" cannot span multiple floors`,objectId:d[0].id,floorId:r.id}),n.set(c,r.id);let p=d.slice().sort((A,R)=>A.segmentedRow.componentIndex-R.segmentedRow.componentIndex),m=p[0]?.segmentedRow,g=m?.componentCount??0,S=m?JSON.stringify({displayLabel:m.displayLabel,repeatLabelOnComponents:m.repeatLabelOnComponents,displayType:m.displayType,labelPresentation:m.labelPresentation,viewFromSeatUrl:m.viewFromSeatUrl,viewFromSeatMeta:m.viewFromSeatMeta,confidenceEvidence:m.confidenceEvidence,smoothing:m.smoothing}):"";m&&g>=2&&g<=64&&p.length===g&&m.boundaryBefore==="start"&&p.every((A,R)=>{let O=A.segmentedRow;return O.kind==="segmented-row-v1"&&O.groupId===c&&O.componentCount===g&&O.componentIndex===R&&(R===0?O.boundaryBefore==="start":O.boundaryBefore!=="start")&&O.displayLabel.normalize("NFKC").trim()===O.displayLabel&&O.displayLabel.length>0&&O.displayLabel.length<=80&&JSON.stringify({displayLabel:O.displayLabel,repeatLabelOnComponents:O.repeatLabelOnComponents,displayType:O.displayType,labelPresentation:O.labelPresentation,viewFromSeatUrl:O.viewFromSeatUrl,viewFromSeatMeta:O.viewFromSeatMeta,confidenceEvidence:O.confidenceEvidence,smoothing:O.smoothing})===S})||t.push({severity:"error",code:"invalid-segmented-row",message:`Segmented row "${c}" has missing, duplicated, cyclic, or inconsistent component metadata`,objectId:d[0]?.id,floorId:r.id})}for(let[c,d]of u){let b=i.get(c);b&&b!==r.id&&t.push({severity:"error",code:"invalid-row-block-generation",message:"A generated row block cannot span multiple floors",objectId:d[0].id,floorId:r.id}),i.set(c,r.id)}}}function so(e,t){let o=(r,s)=>t.push({severity:"error",code:r,message:`GA area "${e.label}" ${s}`,objectId:e.id});e.bookAsWhole!==void 0&&typeof e.bookAsWhole!="boolean"&&o("invalid-ga-booking","has an invalid whole-area setting"),e.variableOccupancy!==void 0&&typeof e.variableOccupancy!="boolean"&&o("invalid-ga-booking","has an invalid party-size setting"),e.bookAsWhole===!0&&e.variableOccupancy===!0&&o("invalid-ga-booking","cannot be sold whole and by party size at the same time");let n=Z(e);if(n&&e.inventorySegments!==void 0&&o("invalid-ga-booking","was joined from other areas and must be sold per person, not as one box"),n&&e.capacity>ee&&o("invalid-ga-booking",`is sold to one party but holds ${e.capacity} guests; at most ${ee} can book in one go`),n&&W(e.label)&&o("reserved-seat-label",`uses SeatLayer's reserved GA namespace for its box label "${e.label}"`),n==="variable"){let r=e.minOccupancy,s=e.maxOccupancy;(!Number.isInteger(r)||!Number.isInteger(s)||r<1||s<r||s>e.capacity)&&o("invalid-ga-occupancy",`needs whole-number fewest and most guests from 1 to its ${e.capacity}-person capacity`)}else(e.minOccupancy!==void 0||e.maxOccupancy!==void 0)&&o("invalid-ga-occupancy","has guest bounds without party-size selling");let i=e.wheelchairPlaces;i!==void 0&&(!Number.isInteger(i)||i<0||i>e.capacity)&&o("invalid-ga-wheelchair-places",`must have from 0 to ${e.capacity} wheelchair places`)}function wr(e){return e.type==="row"||e.type==="table"||e.type==="booth"}function Mr(e){let t=[],o=new Map((e.overrides??[]).map(n=>[n.index,n]));for(let n=0;n<e.seatCount;n++){let i=o.get(n);i?.skip||t.push({label:_e(e,n,i),index:n})}return t}function co(e){let t=[],o=new Map((e.overrides??[]).map(n=>[n.index,n]));for(let n=0;n<e.seatCount;n++){let i=o.get(n);i?.skip||t.push({label:i?.label??`${e.label}-${n+1}`,index:n})}return t}function Mt(e){return Array.isArray(e)&&e.every(t=>!!t&&typeof t=="object")}function lo(e){return Array.isArray(e)&&e.every(t=>Array.isArray(t)&&t.every(o=>!!o&&typeof o=="object"))}function uo(e,t={}){let o=t.maxInventory??1e5,n=[];e.floorOverview!==void 0&&e.floorOverview!=="combined"&&e.floorOverview!=="separated"&&n.push({severity:"error",code:"invalid-floor-overview",message:"Whole venue view must be Combined plan or Separate levels"}),e.eventConfigurationId!==void 0&&(typeof e.eventConfigurationId!="string"||e.eventConfigurationId.normalize("NFKC").trim()!==e.eventConfigurationId||e.eventConfigurationId.length<1||e.eventConfigurationId.length>100)&&n.push({severity:"error",code:"invalid-event-configuration",message:"Active event configuration must contain 1 to 100 normalized characters"});let i=[],r=new Set(e.categories.map(a=>a.key)),s=new Set(ue.map(a=>a.key)),l=new Map(e.categories.map(a=>[a.key,a.price!=null||a.notForSale===!0])),u=new Set;wt(e,n,i),e.theme?.sectionDetail!==void 0&&!["rows","seats"].includes(e.theme.sectionDetail)&&n.push({severity:"error",code:"invalid-section-detail",message:"Section detail must be rows or seats"}),e.theme?.logoUrl!==void 0&&!it(e.theme.logoUrl)&&n.push({severity:"error",code:"invalid-theme-logo-url",message:"The buyer-facing theme logo URL is invalid"});let c=it,d=(a,E,f,y={})=>{if(E===void 0)return;if(!E||typeof E!="object"||Array.isArray(E)){n.push({severity:"error",code:"invalid-seat-view-metadata",message:`${f} view metadata is invalid`,...y});return}let h=E;a||i.push({severity:"warning",code:"orphaned-seat-view-metadata",message:`${f} view metadata has no image`,...y});let L=new Set(["exact-seat","row-representative","section-representative","floor-representative","venue-representative"]);h.projection!==void 0&&h.projection!=="equirectangular"&&n.push({severity:"error",code:"invalid-seat-view-projection",message:`${f} view projection must be equirectangular`,...y}),h.coverage!==void 0&&!L.has(h.coverage)&&n.push({severity:"error",code:"invalid-seat-view-coverage",message:`${f} view coverage is invalid`,...y});let k=(T,_,j)=>typeof T=="number"&&Number.isFinite(T)&&T>=_&&T<=j;if(h.initialBearingDeg!==void 0&&!k(h.initialBearingDeg,-360,360)&&n.push({severity:"error",code:"invalid-seat-view-bearing",message:`${f} view bearing must be between -360\xB0 and 360\xB0`,...y}),h.initialPitchDeg!==void 0&&!k(h.initialPitchDeg,-90,90)&&n.push({severity:"error",code:"invalid-seat-view-pitch",message:`${f} view pitch must be between -90\xB0 and 90\xB0`,...y}),h.capturedAt!==void 0&&(typeof h.capturedAt!="string"||h.capturedAt.length>40||!Number.isFinite(Date.parse(h.capturedAt)))&&n.push({severity:"error",code:"invalid-seat-view-capture-date",message:`${f} view capture date is invalid`,...y}),h.sourceLabel!==void 0&&(typeof h.sourceLabel!="string"||h.sourceLabel.trim().length>100)&&n.push({severity:"error",code:"invalid-seat-view-source",message:`${f} view source label is invalid`,...y}),h.previewUrl!==void 0&&!c(h.previewUrl)&&n.push({severity:"error",code:"invalid-seat-view-preview-url",message:`${f} view preview URL is invalid`,...y}),h.variants!==void 0){let T=Array.isArray(h.variants)?h.variants:[];if(!Array.isArray(h.variants)||T.length<1||T.length>4)n.push({severity:"error",code:"invalid-seat-view-variants",message:`${f} view variants must contain between 1 and 4 tiers`,...y});else{let _=new Set;for(let j of T){if(!j||typeof j!="object"||!c(j.url)||!Number.isInteger(j.width)||j.width<1||j.width>12e3||!Number.isInteger(j.height)||j.height<1||j.height>12e3||j.width!==j.height*2||typeof j.sha256!="string"||!/^[a-f0-9]{64}$/.test(j.sha256)||_.has(j.width)){n.push({severity:"error",code:"invalid-seat-view-variant",message:`${f} view variant is not a unique immutable 2:1 equirectangular tier`,...y});break}_.add(j.width)}}}for(let[T,_]of[["width",h.sourceWidth],["height",h.sourceHeight],["preview width",h.previewWidth],["preview height",h.previewHeight]])_!==void 0&&(!Number.isInteger(_)||_<1||_>32768)&&n.push({severity:"error",code:"invalid-seat-view-dimensions",message:`${f} view source ${T} is invalid`,...y});h.captureEyeHeightM!==void 0&&!k(h.captureEyeHeightM,.5,3)&&n.push({severity:"error",code:"invalid-seat-view-eye-height",message:`${f} capture eye height must be between 0.5 m and 3 m`,...y}),h.eventConfigurationId!==void 0&&(typeof h.eventConfigurationId!="string"||!h.eventConfigurationId.trim()||h.eventConfigurationId.length>100)&&n.push({severity:"error",code:"invalid-seat-view-configuration",message:`${f} event configuration id is invalid`,...y}),h.eventConfigurationVersion!==void 0&&(!Number.isInteger(h.eventConfigurationVersion)||h.eventConfigurationVersion<1)&&n.push({severity:"error",code:"invalid-seat-view-configuration-version",message:`${f} event configuration version is invalid`,...y}),h.eventConfigurationVersion!==void 0&&!h.eventConfigurationId&&n.push({severity:"error",code:"invalid-seat-view-configuration-pin",message:`${f} event configuration version requires an id`,...y})},b=(a,E,f={})=>{if(a===void 0)return;let y=_=>{n.push({severity:"error",code:"invalid-seat-confidence-evidence",message:`${E} confidence evidence ${_}`,...f})};if(!a||typeof a!="object"||Array.isArray(a)){y("is invalid");return}let h=a;h.schema!=="seatlayer.seat-confidence/1"&&y("has an unsupported schema");let L=(_,j)=>typeof _=="string"&&_.normalize("NFKC").trim()===_&&_.length>0&&_.length<=j;L(h.evidenceId,120)||y("has an invalid evidence id"),L(h.modelVersion,120)||y("has an invalid model version"),new Set(["synthetic-model","organizer-approved","calibrated-provider"]).has(h.evidenceKind)||y("has an invalid evidence kind"),new Set(["generated","geometry-verified","configuration-verified"]).has(h.modelLevel)||y("has an invalid model level");let k=h.realityLevel??"none";new Set(["none","comparable-build-reference","actual-build-checked"]).has(k)||y("has an invalid reality level"),h.eventConfigurationId!==void 0&&!L(h.eventConfigurationId,100)&&y("has an invalid event configuration id"),h.eventConfigurationVersion!==void 0&&(!Number.isInteger(h.eventConfigurationVersion)||h.eventConfigurationVersion<1)&&y("has an invalid event configuration version"),h.status!==void 0&&!new Set(["draft","approved","retracted"]).has(h.status)&&y("has an invalid publication status"),h.basisSha256!==void 0&&!/^[a-f0-9]{64}$/.test(h.basisSha256)&&y("has an invalid venue basis SHA-256"),h.basisSha256!==void 0&&h.status!=="approved"&&y("can carry a venue basis SHA-256 only after approval");for(let[_,j]of[["assessment",h.assessedAt],["expiry",h.validUntil]])j!==void 0&&(!L(j,40)||!Number.isFinite(Date.parse(j)))&&y(`has an invalid ${_} date`);h.approvedByRole!==void 0&&!L(h.approvedByRole,100)&&y("has an invalid approving organization or role"),h.sourceLabel!==void 0&&!L(h.sourceLabel,120)&&y("has an invalid source label"),h.limitations!==void 0&&(!Array.isArray(h.limitations)||h.limitations.length>6||h.limitations.some(_=>!L(_,160)))&&y("has invalid limitations"),h.evidenceKind==="synthetic-model"&&(h.modelLevel!=="generated"||k!=="none")&&y("cannot describe synthetic data as verified or reality checked"),h.modelLevel!=="generated"&&(!h.assessedAt||!h.approvedByRole)&&y("requires an assessment date and approving organization or role for verified model levels"),h.modelLevel==="configuration-verified"&&!h.eventConfigurationId&&y("requires an event configuration id for configuration verification"),k!=="none"&&(!h.assessedAt||!h.sourceLabel)&&y("requires an assessment date and source for reality evidence"),k==="actual-build-checked"&&(h.modelLevel!=="configuration-verified"||!h.eventConfigurationId)&&y("requires a configuration-verified model and event configuration for an actual-build check");let T=h.modeledTarget;T!==void 0&&(!T||typeof T!="object"||Array.isArray(T)?y("has an invalid modeled target"):((!L(T.label,80)||!L(T.methodLabel,100))&&y("has invalid modeled-target labels"),(!Number.isInteger(T.totalRayCount)||T.totalRayCount<1||T.totalRayCount>1e3||!Number.isInteger(T.clearRayCount)||T.clearRayCount<0||T.clearRayCount>T.totalRayCount)&&y("has invalid modeled-target ray counts"),new Set(["clear","partial","obstructed"]).has(T.classification)||y("has an invalid modeled-target classification"),T.occluderLabels!==void 0&&(!Array.isArray(T.occluderLabels)||T.occluderLabels.length>10||T.occluderLabels.some(_=>!L(_,100)))&&y("has invalid modeled-target occluders")))};d(e.viewFromSeatUrl,e.viewFromSeatMeta,"Venue"),b(e.confidenceEvidence,"Venue"),e.viewFromSeatUrl!==void 0&&!c(e.viewFromSeatUrl)&&n.push({severity:"error",code:"invalid-venue-view-url",message:"The whole-venue view-from-seat image URL is invalid"});for(let a of e.floors??[])a.viewFromSeatUrl!==void 0&&!c(a.viewFromSeatUrl)&&n.push({severity:"error",code:"invalid-floor-view-url",message:`Floor "${a.name}" has an invalid view-from-seat image URL`}),d(a.viewFromSeatUrl,a.viewFromSeatMeta,`Floor "${a.name}"`,{floorId:a.id}),b(a.confidenceEvidence,`Floor "${a.name}"`,{floorId:a.id});let p=e.floors?.length?e.floors.flatMap(a=>a.objects):e.objects;for(let a of p)if((a.type==="row"||a.type==="section")&&(a.viewFromSeatUrl!==void 0&&!c(a.viewFromSeatUrl)&&n.push({severity:"error",code:a.type==="row"?"invalid-row-view-url":"invalid-section-view-url",message:`${a.type==="row"?"Row":"Section"} "${a.label}" has an invalid view-from-seat image URL`,objectId:a.id}),d(a.viewFromSeatUrl,a.viewFromSeatMeta,`${a.type==="row"?"Row":"Section"} "${a.label}"`,{objectId:a.id}),b(a.confidenceEvidence,`${a.type==="row"?"Row":"Section"} "${a.label}"`,{objectId:a.id})),a.type==="row"&&a.segmentedRow&&(a.segmentedRow.viewFromSeatUrl!==void 0&&!c(a.segmentedRow.viewFromSeatUrl)&&n.push({severity:"error",code:"invalid-segmented-row-view-url",message:`Segmented row "${a.segmentedRow.displayLabel}" has an invalid view-from-seat image URL`,objectId:a.id}),d(a.segmentedRow.viewFromSeatUrl,a.segmentedRow.viewFromSeatMeta,`Segmented row "${a.segmentedRow.displayLabel}"`,{objectId:a.id}),b(a.segmentedRow.confidenceEvidence,`Segmented row "${a.segmentedRow.displayLabel}"`,{objectId:a.id})),a.type==="row"||a.type==="table")for(let E of a.overrides??[])E.viewFromSeatUrl!==void 0&&!c(E.viewFromSeatUrl)&&n.push({severity:"error",code:"invalid-seat-view-url",message:`Seat ${E.index+1} has an invalid view-from-seat image URL`,objectId:a.id,seatIndices:[E.index]}),d(E.viewFromSeatUrl,E.viewFromSeatMeta,`Seat ${E.index+1}`,{objectId:a.id,seatIndices:[E.index]}),b(E.confidenceEvidence,`Seat ${E.index+1}`,{objectId:a.id,seatIndices:[E.index]});let m=new Set;for(let a of e.categories){m.has(a.key)&&n.push({severity:"error",code:"duplicate-category-key",message:`Category key "${a.key}" is used more than once`,categoryKey:a.key}),m.add(a.key);let E=new Set;for(let f of a.tiers??[]){if(E.has(f.id)&&n.push({severity:"error",code:"duplicate-category-tier-id",message:`Ticket tier id "${f.id}" is used more than once in category "${a.key}"`,categoryKey:a.key}),f.restriction!=null&&!["companion","child","senior","student","membership","custom"].includes(f.restriction)&&n.push({severity:"error",code:"invalid-category-tier-restriction",message:`Ticket tier "${f.name}" has an unknown restriction`,categoryKey:a.key}),f.buyerMessage!=null&&(!f.buyerMessage.trim()||f.buyerMessage.length>240)&&n.push({severity:"error",code:"invalid-category-tier-buyer-message",message:`Ticket tier "${f.name}" buyer guidance must contain 1 to 240 characters`,categoryKey:a.key}),f.currency!=null&&!/^[A-Z]{3}$/.test(f.currency)&&n.push({severity:"error",code:"invalid-category-tier-currency",message:`Ticket tier "${f.name}" must use a three-letter ISO currency`,categoryKey:a.key}),f.applicability!=null){let y=f.applicability.seatLabels,h=f.applicability.accessibility;(y!==void 0&&(!Array.isArray(y)||!y.length||y.length>1e4||y.some(L=>typeof L!="string"||!L.trim()||L.length>160)||new Set(y).size!==y.length)||h!==void 0&&(!Array.isArray(h)||!h.length||h.some(L=>!s.has(L))||new Set(h).size!==h.length))&&n.push({severity:"error",code:"invalid-category-tier-applicability",message:`Ticket tier "${f.name}" has invalid seat applicability`,categoryKey:a.key})}f.evidence!=null&&(!["public-host","public-event","user-confirmed"].includes(f.evidence.provenance)||!f.evidence.sourceDescription.trim()||f.evidence.sourceDescription.length>240||f.evidence.capturedAt!==void 0&&(f.evidence.capturedAt.length>40||!Number.isFinite(Date.parse(f.evidence.capturedAt))))&&n.push({severity:"error",code:"invalid-category-tier-evidence",message:`Ticket tier "${f.name}" has invalid evidence provenance`,categoryKey:a.key}),E.add(f.id)}io(a)||n.push({severity:"error",code:"invalid-reference-category-source",message:`Category ${a.label||a.key} has incomplete or invalid reference evidence`,categoryKey:a.key}),ro(a)||n.push({severity:"error",code:"invalid-reference-direct-seat-import",message:`Category ${a.label||a.key} has invalid direct-seat import provenance`,categoryKey:a.key})}let g=new Map,S=new Map,I=[],A=new Map,R=0,O=0,P=new Set;for(let a of e.floors??[])wt(a,n,i,a.id),P.has(a.id)&&n.push({severity:"error",code:"duplicate-floor-id",message:`Floor id "${a.id}" is used more than once`,floorId:a.id}),P.add(a.id),a.baseHeightM!==void 0&&(!Number.isFinite(a.baseHeightM)||a.baseHeightM<Q||a.baseHeightM>X)&&n.push({severity:"error",code:"invalid-floor-base-height",message:`Floor "${a.name}" base height must be between ${Q} and ${X} metres`,floorId:a.id});let M=e.floors&&e.floors.length?e.floors.flatMap(a=>a.objects):e.objects;ao(e,n);let v=new Set;for(let a of M)v.has(a.id)&&n.push({severity:"error",code:"duplicate-object-id",message:`Object id "${a.id}" is used more than once`,objectId:a.id}),v.add(a.id);let C=new Set;for(let a of e.zones??[])C.has(a.id)&&n.push({severity:"error",code:"duplicate-zone-id",message:`Zone id "${a.id}" is used more than once`}),C.add(a.id),a.focalPoint!==void 0&&(!Number.isFinite(a.focalPoint.x)||!Number.isFinite(a.focalPoint.y))&&n.push({severity:"error",code:"invalid-zone-focal-point",message:`Zone "${a.label}" must use a finite focal point`});let x=new Map;for(let a of M)if(!(a.type!=="section"||!a.zone)){if(e.zones?.length&&!C.has(a.zone)){n.push({severity:"error",code:"unknown-section-zone",message:`Section "${a.displayLabel??a.label}" references unknown zone "${a.zone}"`,objectId:a.id});continue}x.has(a.zone)||x.set(a.zone,a)}for(let[a,E]of x){let f=e.zones?.find(y=>y.id===a);f&&(f?.focalPoint||i.push({severity:"warning",code:"missing-zone-focal-point",message:`Zone "${f?.label??a}" uses the legacy floor focal; set its own focal point before publishing`,objectId:E.id}))}for(let a of M)if((a.type==="row"||a.type==="table"||a.type==="booth"||a.type==="gaArea")&&no(a,n),wr(a)){if(R++,O+=a.type==="booth"?1:a.type==="row"?Be(a):a.bookAsWhole||a.variableOccupancy?a.seatCount:co(a).length,g.get(a.label)!==void 0?a.type!=="row"&&n.push({severity:"error",code:"duplicate-object-label",message:`Label "${a.label}" is used by more than one object`,objectId:a.id}):g.set(a.label,a.id),r.has(a.categoryKey)?u.add(a.categoryKey):n.push({severity:"error",code:"unknown-category",message:`"${a.label}" references unknown category "${a.categoryKey}"`,objectId:a.id,categoryKey:a.categoryKey}),a.type==="row"){Ee(a.referenceInventorySource)||n.push({severity:"error",code:"invalid-reference-inventory-source",message:`Row "${a.label}" has invalid reference-inventory provenance`,objectId:a.id}),a.seatCount<1&&n.push({severity:"error",code:"empty-row",message:`Row "${a.label}" has no seats`,objectId:a.id}),a.aisleSeats!==void 0&&!Un(a.aisleSeats)&&n.push({severity:"error",code:"invalid-row-aisle-seats",message:`Row "${a.label}" must mark its aisle seats at the start, end, both or none`,objectId:a.id});let f=new Set;for(let y of a.overrides??[]){(y.accessibility??[]).filter(T=>!s.has(T)).length&&n.push({severity:"error",code:"invalid-accessibility-type",message:`Row "${a.label}" seat ${y.index+1} uses an unknown accessibility type`,objectId:a.id,seatIndices:[y.index]}),(!Number.isInteger(y.index)||y.index<0||y.index>=a.seatCount||f.has(y.index))&&n.push({severity:"error",code:"invalid-seat-override",message:`Row "${a.label}" has a duplicated or out-of-range seat override`,objectId:a.id,...Number.isInteger(y.index)?{seatIndices:[y.index]}:{}}),f.add(y.index);let L=y.wheelchairSpaceType,k=y.accessible===!0||y.accessibility?.includes("wheelchair");L!==void 0&&L!=="seat-present"&&L!=="no-seat"?n.push({severity:"error",code:"invalid-wheelchair-space",message:`Row "${a.label}" seat ${y.index+1} has an invalid wheelchair-space type`,objectId:a.id,seatIndices:[y.index]}):L&&(!k||y.skip)&&n.push({severity:"error",code:"invalid-wheelchair-space",message:y.skip?`Row "${a.label}" seat ${y.index+1} cannot have a wheelchair-space physical type while skipped from inventory`:`Row "${a.label}" seat ${y.index+1} must include wheelchair accessibility for its physical-space type`,objectId:a.id,seatIndices:[y.index]})}for(let y of Mr(a))W(y.label)&&n.push({severity:"error",code:"reserved-seat-label",message:`Seat label "${y.label}" uses SeatLayer's reserved GA namespace`,objectId:a.id,seatIndices:[y.index]}),S.get(y.label)!==void 0?I.push({severity:"error",code:"duplicate-seat-label",message:`Seat label "${y.label}" is used more than once`,objectId:a.id,seatIndices:[y.index]}):S.set(y.label,a.id)}else if(a.type==="table"){let f=a.bookAsWhole===!0||a.variableOccupancy===!0;if(a.fill!==void 0&&!Cn(a.fill)&&n.push({severity:"error",code:"invalid-table-fill",message:`Table "${a.label}" has an invalid surface color`,objectId:a.id}),a.automaticRadius!==void 0&&typeof a.automaticRadius!="boolean"?n.push({severity:"error",code:"invalid-table-automatic-radius",message:`Table "${a.label}" has an invalid automatic-radius setting`,objectId:a.id}):a.automaticRadius===!0&&(a.shape!=="round"||a.radius!==on(a.seatCount,a.seatArc))&&n.push({severity:"error",code:"invalid-table-automatic-radius",message:`Table "${a.label}" needs a radius that matches its automatic chair spacing`,objectId:a.id}),a.seatCountsBySide){let k=["top","bottom","left","right"],T=Object.keys(a.seatCountsBySide),_=k.every(B=>Number.isInteger(a.seatCountsBySide[B])&&a.seatCountsBySide[B]>=0&&a.seatCountsBySide[B]<=40),j=_?k.reduce((B,ie)=>B+a.seatCountsBySide[ie],0):Number.NaN;(a.shape!=="rect"||T.length!==k.length||T.some(B=>!k.includes(B))||!_||j!==a.seatCount||j<1||j>40)&&n.push({severity:"error",code:"invalid-table-side-counts",message:`Table "${a.label}" needs top, bottom, left, and right whole-number chair counts totaling its ${a.seatCount}-chair capacity`,objectId:a.id})}f&&a.overrides?.length&&n.push({severity:"error",code:"grouped-table-chair-overrides",message:`Grouped table "${a.label}" cannot carry individual-chair overrides`,objectId:a.id,seatIndices:a.overrides.map(k=>k.index)});let y=new Set;for(let k of a.overrides??[]){(k.accessibility??[]).filter(B=>!s.has(B)).length&&n.push({severity:"error",code:"invalid-accessibility-type",message:`Table "${a.label}" chair ${k.index+1} uses an unknown accessibility type`,objectId:a.id,seatIndices:[k.index]}),(!Number.isInteger(k.index)||k.index<0||k.index>=a.seatCount||y.has(k.index))&&n.push({severity:"error",code:"invalid-seat-override",message:`Table "${a.label}" has a duplicated or out-of-range chair override`,objectId:a.id,...Number.isInteger(k.index)?{seatIndices:[k.index]}:{}}),y.add(k.index),k.categoryKey&&!r.has(k.categoryKey)?n.push({severity:"error",code:"unknown-category",message:`Table "${a.label}" chair ${k.index+1} references unknown category "${k.categoryKey}"`,objectId:a.id,seatIndices:[k.index],categoryKey:k.categoryKey}):k.categoryKey&&u.add(k.categoryKey);let _=k.wheelchairSpaceType,j=k.accessible===!0||k.accessibility?.includes("wheelchair");_!==void 0&&_!=="seat-present"&&_!=="no-seat"?n.push({severity:"error",code:"invalid-wheelchair-space",message:`Table "${a.label}" chair ${k.index+1} has an invalid wheelchair-space type`,objectId:a.id,seatIndices:[k.index]}):_&&(!j||k.skip)&&n.push({severity:"error",code:"invalid-wheelchair-space",message:k.skip?`Table "${a.label}" chair ${k.index+1} cannot have a wheelchair-space physical type while skipped from inventory`:`Table "${a.label}" chair ${k.index+1} must include wheelchair accessibility for its physical-space type`,objectId:a.id,seatIndices:[k.index]})}a.bookAsWhole&&a.variableOccupancy?n.push({severity:"error",code:"invalid-table-booking-mode",message:`Table "${a.label}" cannot be sold both as a whole table and with variable occupancy`,objectId:a.id}):a.variableOccupancy?(!Number.isInteger(a.minOccupancy)||!Number.isInteger(a.maxOccupancy)||a.minOccupancy<1||a.maxOccupancy<a.minOccupancy||a.maxOccupancy>a.seatCount)&&n.push({severity:"error",code:"invalid-table-occupancy",message:`Table "${a.label}" needs whole-number minimum and maximum guests from 1 to its ${a.seatCount}-chair capacity`,objectId:a.id}):(a.minOccupancy!=null||a.maxOccupancy!=null)&&n.push({severity:"error",code:"invalid-table-occupancy",message:`Table "${a.label}" has guest bounds without variable-occupancy selling`,objectId:a.id}),Ee(a.referenceInventorySource)||n.push({severity:"error",code:"invalid-reference-inventory-source",message:`Table "${a.label}" has invalid reference-inventory provenance`,objectId:a.id}),(a.shape==="round"&&a.radius==null||a.shape==="rect"&&(a.width==null||a.height==null)||a.seatCount<1)&&n.push({severity:"error",code:"bad-table",message:`Table "${a.label}" is missing required dimensions or seats`,objectId:a.id});let L=f?[{label:a.label,index:void 0}]:co(a);for(let k of L)W(k.label)&&n.push({severity:"error",code:"reserved-seat-label",message:`Inventory label "${k.label}" uses SeatLayer's reserved GA namespace`,objectId:a.id}),S.get(k.label)!==void 0?I.push({severity:"error",code:"duplicate-seat-label",message:`Inventory label "${k.label}" is used more than once; grouped table labels must be unique`,objectId:a.id,...k.index===void 0?{}:{seatIndices:[k.index]}}):S.set(k.label,a.id)}else if(a.type==="booth"){Ee(a.referenceInventorySource)||n.push({severity:"error",code:"invalid-reference-inventory-source",message:`Booth "${a.label}" has invalid reference-inventory provenance`,objectId:a.id});let f=a.label;W(f)&&n.push({severity:"error",code:"reserved-seat-label",message:`Seat label "${f}" uses SeatLayer's reserved GA namespace`,objectId:a.id}),S.get(f)!==void 0?I.push({severity:"error",code:"duplicate-seat-label",message:`Seat label "${f}" is used more than once`,objectId:a.id}):S.set(f,a.id)}}else if(a.type==="gaArea"){if(so(a,n),!Ue(a))n.push({severity:"error",code:"invalid-ga-inventory-segments",message:`GA area "${a.label}" has invalid joined-area inventory provenance`,objectId:a.id});else for(let y of ut(a))S.get(y)!==void 0?I.push({severity:"error",code:"duplicate-seat-label",message:`GA inventory label "${y}" is used more than once`,objectId:a.id}):S.set(y,a.id);if(Ee(a.referenceInventorySource)||n.push({severity:"error",code:"invalid-reference-inventory-source",message:`GA area "${a.label}" has invalid reference-inventory provenance`,objectId:a.id}),!Mt(a.points)){n.push({severity:"error",code:"invalid-polygon-points",message:`GA area "${a.label}" outline must be a list of points`,objectId:a.id});continue}(!te(a.points)||Math.abs(de(a.points))<=1e-7||me(a.points))&&n.push({severity:"error",code:"invalid-ga-outline",message:`GA area "${a.label}" must have a finite, non-self-intersecting polygon outline`,objectId:a.id});let f=a.holes??[];if(!lo(f))n.push({severity:"error",code:"invalid-hole-collection",message:`GA area "${a.label}" cutouts must be a list of point lists`,objectId:a.id});else{let y=f.length<=64?f.findIndex(h=>h.length>512||!te(h)||Math.abs(de(h))<=1e-7||me(h)?!0:!h.flatMap((k,T)=>{let _=h[(T+1)%h.length];return[k,{x:(k.x+_.x)/2,y:(k.y+_.y)/2}]}).every(k=>be(k,a.points))):0;if(y>=0)n.push({severity:"error",code:"invalid-ga-hole",message:`GA area "${a.label}" has a cutout outside its outline or with invalid geometry`,objectId:a.id,holeIndex:y});else if(f.some((h,L)=>f.slice(L+1).some(k=>Re(h,k)))){let h=f.findIndex((L,k)=>f.slice(k+1).some(T=>Re(L,T)));n.push({severity:"error",code:"overlapping-ga-holes",message:`GA area "${a.label}" has overlapping cutout polygons`,objectId:a.id,holeIndex:h})}}r.has(a.categoryKey)?u.add(a.categoryKey):n.push({severity:"error",code:"unknown-category",message:`"${a.label}" references unknown category "${a.categoryKey}"`,objectId:a.id,categoryKey:a.categoryKey}),a.capacity<1&&n.push({severity:"error",code:"empty-ga",message:`GA area "${a.label}" has zero capacity`,objectId:a.id}),(!Number.isInteger(a.capacity)||a.capacity>J)&&n.push({severity:"error",code:"invalid-ga-capacity",message:`GA area "${a.label}" capacity must be a whole number from 1 to ${J}`,objectId:a.id}),R++,O+=Math.max(0,Math.floor(a.capacity))}else if(a.type==="section"){if(a.displayLabel!==void 0){let y=a.displayLabel.normalize("NFKC").trim();y?(y!==a.displayLabel||y.length>80)&&n.push({severity:"error",code:"invalid-display-label",message:`Section "${a.label}" must use a normalized buyer label of 1 to 80 characters`,objectId:a.id}):n.push({severity:"error",code:"unnamed-section",message:`Section "${a.label}" needs a buyer-facing name before seats are added`,objectId:a.id})}if(a.editor?.defaultCategoryKey&&!r.has(a.editor.defaultCategoryKey)&&n.push({severity:"error",code:"unknown-category",message:`Section "${a.label}" references unknown future-seat category "${a.editor.defaultCategoryKey}"`,objectId:a.id}),a.elevation!==void 0&&(!Number.isInteger(a.elevation)||a.elevation<tt||a.elevation>se)){let y=Number.isInteger(a.elevation)&&a.elevation>se&&a.elevation<=nt;i.push({severity:"warning",code:y?"legacy-section-elevation":"invalid-section-elevation",message:y?`Section "${a.label}" uses legacy tier ${a.elevation}; set an exact height before normalizing it to tier ${se}`:`Section "${a.label}" elevation must be a whole-number tier from ${tt} to ${se}`,objectId:a.id})}if(a.height!==void 0&&(!Number.isFinite(a.height)||a.height<Q||a.height>X)&&n.push({severity:"error",code:"invalid-section-height",message:`Section "${a.label}" exact height must be between ${Q} and ${X} metres`,objectId:a.id}),a.rake!==void 0&&(!Number.isFinite(a.rake)||a.rake<je||a.rake>Ne)&&n.push({severity:"error",code:"invalid-section-rake",message:`Section "${a.label}" rake must be between ${je}\xB0 and ${Ne}\xB0`,objectId:a.id}),a.surfaceKind!==void 0&&a.surfaceKind!=="flat"&&a.surfaceKind!=="rakedRows"&&n.push({severity:"error",code:"invalid-section-surface-kind",message:`Section "${a.label}" surfaceKind must be 'flat' or 'rakedRows'`,objectId:a.id}),!Mt(a.outline)){n.push({severity:"error",code:"invalid-polygon-points",message:`Section "${a.label}" outline must be a list of points`,objectId:a.id});continue}if(!te(a.outline)||Math.abs(de(a.outline))<=1e-7||me(a.outline)){n.push({severity:"error",code:"invalid-section-outline",message:`Section "${a.label}" must have a finite, non-self-intersecting polygon outline`,objectId:a.id});continue}if(a.outlinePath){let y=[];try{y=Ut(a.outlinePath)}catch{}(!Qe(a.outlinePath)||!y.length||Math.hypot(a.outlinePath.start.x-a.outline[0].x,a.outlinePath.start.y-a.outline[0].y)>1e-4||!te(y)||Math.abs(de(y))<=1e-7||me(y))&&n.push({severity:"error",code:"invalid-section-outline-path",message:`Section "${a.label}" has an invalid or inconsistent curved outline path`,objectId:a.id,edgeIndex:qn(a)})}if(a.referenceSource&&(!/^ref_[0-9a-f-]{36}$/.test(a.referenceSource.assetId)||!/^(?:reg|ai)_[0-9a-f]{16}$/.test(a.referenceSource.regionId))&&n.push({severity:"error",code:"invalid-section-reference-source",message:`Section "${a.label}" has invalid opaque reference provenance`,objectId:a.id}),oo(a)||n.push({severity:"error",code:"invalid-section-inventory-exclusion",message:`Section "${a.label}" has incomplete or mismatched non-sellable evidence`,objectId:a.id}),a.logicalSectionId!==void 0&&!a.logicalSectionId.trim())n.push({severity:"error",code:"invalid-logical-section-id",message:`Section "${a.label}" has an empty logical section id`,objectId:a.id});else if(a.logicalSectionId){let y=JSON.stringify({displayLabel:a.displayLabel??null,entrance:a.entrance??null,viewFromSeatUrl:a.viewFromSeatUrl??null,viewFromSeatMeta:a.viewFromSeatMeta??null,confidenceEvidence:a.confidenceEvidence??null,zone:a.zone??null,labelStyle:a.labelPresentation?.labelStyle??null,labelVisible:a.labelPresentation?.visible!==!1}),h=A.get(a.logicalSectionId);h&&(h.label!==a.label||h.semanticSignature!==y)?n.push({severity:"error",code:"inconsistent-logical-section",message:`Logical section "${a.logicalSectionId}" must use one technical label and buyer-facing presentation across every component`,objectId:a.id}):h||A.set(a.logicalSectionId,{label:a.label,semanticSignature:y})}let E=a.holes??[];if(!lo(E)){n.push({severity:"error",code:"invalid-hole-collection",message:`Section "${a.label}" openings must be a list of point lists`,objectId:a.id});continue}if(E.length>64){n.push({severity:"error",code:"invalid-section-hole",message:`Section "${a.label}" has an invalid opening collection`,objectId:a.id});continue}let f=-1;for(let y=0;y<E.length;y++){let h=E[y];if(h.length>512||!te(h)||Math.abs(de(h))<=1e-7||me(h)){f=y;break}if(!h.flatMap((k,T)=>{let _=h[(T+1)%h.length];return[k,{x:(k.x+_.x)/2,y:(k.y+_.y)/2}]}).every(k=>be(k,a.outline))){f=y;break}}if(f>=0)n.push({severity:"error",code:"invalid-section-hole",message:`Section "${a.label}" has an opening outside its outline or with an invalid shape`,objectId:a.id,holeIndex:f});else if(E.some((y,h)=>E.slice(h+1).some(L=>Re(y,L)))){let y=E.findIndex((h,L)=>E.slice(L+1).some(k=>Re(h,k)));n.push({severity:"error",code:"overlapping-section-holes",message:`Section "${a.label}" has overlapping openings`,objectId:a.id,holeIndex:y})}}let w=e.floors?.length?e.floors.map(a=>a.objects):[e.objects];for(let a of w){let E=a.filter(f=>f.type==="section");for(let f of a.filter(y=>y.type==="text")){let y=f.iconKey;y!==void 0&&!Hn(y)&&n.push({severity:"error",code:"invalid-icon-key",message:`Venue icon "${f.text||f.id}" references an unknown symbol`,objectId:f.id});let h=f.fontFamily;h!==void 0&&(typeof h!="string"||h.normalize("NFKC").trim()!==h||h.length<1||h.length>120)&&n.push({severity:"error",code:"invalid-text-font-family",message:`Text "${f.text||f.id}" font family must contain 1 to 120 normalized characters`,objectId:f.id});let L=f.background;(f.width!==void 0&&(!Number.isFinite(f.width)||f.width<40||f.width>1200)||f.align!==void 0&&!["left","center","right"].includes(f.align)||f.lineHeight!==void 0&&(!Number.isFinite(f.lineHeight)||f.lineHeight<.8||f.lineHeight>3)||f.letterSpacing!==void 0&&(!Number.isFinite(f.letterSpacing)||f.letterSpacing<-2||f.letterSpacing>20)||f.opacity!==void 0&&(!Number.isFinite(f.opacity)||f.opacity<.1||f.opacity>1)||L!==void 0&&(!/^#[0-9a-f]{6}$/i.test(L.color)||L.padding!==void 0&&(!Number.isFinite(L.padding)||L.padding<0||L.padding>40)||L.cornerRadius!==void 0&&(!Number.isFinite(L.cornerRadius)||L.cornerRadius<0||L.cornerRadius>40)||L.opacity!==void 0&&(!Number.isFinite(L.opacity)||L.opacity<.1||L.opacity>1)))&&n.push({severity:"error",code:"invalid-text-layout",message:`Text "${f.text||f.id}" has invalid width, spacing, opacity, alignment, or background layout`,objectId:f.id})}for(let f of a.filter(y=>y.type==="shape")){if(f.eventConfigurationIds!==void 0){let L=f.eventConfigurationIds;Array.isArray(L)&&L.length>0&&L.length<=20&&L.every(T=>typeof T=="string"&&T.normalize("NFKC").trim()===T&&T.length>=1&&T.length<=100)&&new Set(L).size===L.length||n.push({severity:"error",code:"invalid-shape-configurations",message:`Shape "${f.label||f.id}" must reference 1 to 20 unique event configuration ids`,objectId:f.id})}if(f.heightM!==void 0&&(!Number.isFinite(f.heightM)||f.heightM<.05||f.heightM>50)&&n.push({severity:"error",code:"invalid-shape-height",message:`Shape "${f.label||f.id}" height must be between 0.05 m and 50 m`,objectId:f.id}),f.stroke!==void 0&&(!f.stroke||typeof f.stroke.color!="string"||!/^#[0-9a-f]{6}$/i.test(f.stroke.color)||!Number.isFinite(f.stroke.width)||f.stroke.width<.5||f.stroke.width>40)&&n.push({severity:"error",code:"invalid-shape-stroke",message:`Shape "${f.label||f.id}" stroke must use a six-digit color and width from 0.5 to 40 chart units`,objectId:f.id}),(f.lineCap!==void 0||f.lineJoin!==void 0||f.startEnding!==void 0||f.endEnding!==void 0)&&!It(f.kind)?n.push({severity:"error",code:"invalid-shape-line-style-applicability",message:`Shape "${f.label||f.id}" may use line caps, joins, and end decorations only when it is an open line or polyline`,objectId:f.id}):It(f.kind)&&(f.lineCap!==void 0&&!Xn.includes(f.lineCap)||f.lineJoin!==void 0&&!Yn.includes(f.lineJoin)||f.startEnding!==void 0&&!St.includes(f.startEnding)||f.endEnding!==void 0&&!St.includes(f.endEnding))&&n.push({severity:"error",code:"invalid-shape-line-style",message:`Shape "${f.label||f.id}" has an unsupported line cap, join, or ending`,objectId:f.id}),f.points!==void 0&&!Mt(f.points)){n.push({severity:"error",code:"invalid-polygon-points",message:`Shape "${f.label||f.id}" points must be a list of points`,objectId:f.id});continue}if(f.kind==="polygon"){let L=Kn(f.points??[]);L.ok||n.push({severity:"error",code:"invalid-shape-polygon",message:`Shape "${f.label||f.id}" has invalid polygon geometry: ${L.message}`,objectId:f.id})}let h=Jn(f);if(h){for(let L of E)if(Qn(h,L.outline)){n.push({severity:"error",code:"reference-focal-overlaps-section",message:`Reference focal area "${f.label??f.id}" overlaps section "${L.label}"`,objectId:f.id});break}}}}O>o&&n.push({severity:"error",code:"inventory-capacity-exceeded",message:`Chart has ${O} bookable units; the maximum is ${o}`}),n.push(...I.slice(0,5)),I.length>5&&n.push({severity:"error",code:"duplicate-seat-label",message:`${I.length} seats share a label with another seat; the first 5 are listed above. Seat labels must be unique across the whole chart.`});for(let a of Ce(e)){let E=a.families[0]?.targets[0];i.push({severity:"warning",code:"category-inventory-family-conflict",message:xt(a),categoryKey:a.categoryKey,...E?{objectId:E.id,floorId:E.floorId}:{},relatedObjectIds:a.objectIds,categoryInventoryFamilies:a.families})}e.focalPoint||i.push({severity:"warning",code:"missing-focal-point",message:"Chart has no focal point set"}),R===0&&i.push({severity:"warning",code:"no-bookables",message:"Chart has no rows, tables, booths, or GA areas"});for(let a of u)if(l.get(a)===!1){let E=e.categories.find(f=>f.key===a);i.push({severity:"warning",code:"unpriced-category",message:`Category "${E?.label??a}" is used but has no price`,categoryKey:a})}return[...n,...i]}var Cr=9,po="#f7f8fb",kr="#f5f6f8",go="#8b93a7",Ar="#0b1220",Rr="#0b1220",Er="#ffffff",Or=100;function N(e,t=2){let o=10**t;return Math.round(e*o)/o}function D(e){return{source:"quality",...e}}function Lr(e){return e.code==="missing-focal-point"||e.code==="missing-zone-focal-point"?"navigation":"structure"}function At(e){return Cr*Mn(e.theme?.seatScale)}function yo(e){let t=[];for(let o of e.objects)o.type==="row"?t.push(...U(o)):o.type==="table"&&t.push(...z(o));return t}function Pr(e){let t={rowSeats:0,tableSeats:0,booths:0,gaCapacity:0};for(let o of e)for(let n of o.objects)n.type==="row"?t.rowSeats+=U(n).length:n.type==="table"?t.tableSeats+=z(n).length:n.type==="booth"?t.booths+=1:n.type==="gaArea"&&(t.gaCapacity+=Math.max(0,Math.floor(n.capacity)));return{inventoryByKind:t,bookableUnits:t.rowSeats+t.tableSeats+t.booths+t.gaCapacity}}function $(e,t){e.filter(o=>o.code===t.code).length<Or&&e.push(t)}function Tr(e,t,o){let n=At(e),i=2*n,r=2.3*n,s=0,l=0,u=1/0;for(let c of t){let d=new Map(c.objects.filter(I=>I.type==="row").map(I=>[I.id,I])),b=I=>{let A=c.objects.find(v=>v.id===I);if(!A||A.type!=="row"&&A.type!=="table")return"another seating object";let R=A.type==="row"?U(A):z(A),O=R.length?{x:R.reduce((v,C)=>v+C.x,0)/R.length,y:R.reduce((v,C)=>v+C.y,0)/R.length}:A.type==="row"?A.origin:A.center,P=c.objects.find(v=>v.type==="section"&&H(O,v.outline,v.holes)),M=A.type==="row"?`Row \u201C${A.label}\u201D`:`Table \u201C${A.label}\u201D`;return P?.type==="section"?`${M} in \u201C${P.label}\u201D`:M},p=yo(c);s+=p.length;let m=r,g=new Map,S=new Map;for(let I of p){let A=Math.floor(I.x/m),R=Math.floor(I.y/m);for(let M=-1;M<=1;M++)for(let v=-1;v<=1;v++){let C=g.get(`${A+M}:${R+v}`)??[];for(let x of C){l++;let w=Math.hypot(I.x-x.x,I.y-x.y);if(u=Math.min(u,w),w>=r)continue;let E=(I.rowId<x.rowId?[I.rowId,x.rowId]:[x.rowId,I.rowId]).join("|"),f=S.get(E);(!f||w<f.distance)&&S.set(E,{a:I,b:x,distance:w})}}let O=`${A}:${R}`,P=g.get(O)??[];P.push(I),g.set(O,P)}for(let I of S.values()){let A=I.a.rowId===I.b.rowId,R=d.get(I.a.rowId),O=d.get(I.b.rowId),P=!A&&R?.segmentedRow?.repeatLabelOnComponents===!0&&O?.segmentedRow?.repeatLabelOnComponents===!0&&R.segmentedRow.groupId===O.segmentedRow.groupId,M=!!R?.referenceScan&&!!O?.referenceScan&&R.referenceScan.assetId===O.referenceScan.assetId&&R.referenceScan.sectionId===O.referenceScan.sectionId,v=I.distance<i;if((P||M)&&!v)continue;let C=v?"seat-overlap":"seat-cramped",x=b(I.a.rowId),w=b(I.b.rowId),a=N(v?i:r);$(o,D({severity:"warning",code:C,dimension:"geometry",title:v?A?`${x} has overlapping seats`:`${x} and ${w} overlap`:A?`${x} has seats too close together`:`${x} and ${w} are too close together`,message:v?`The closest seats are ${N(I.distance)} chart units apart, so their markers overlap on the buyer map; at least ${a} keeps them apart.`:`The closest seats are ${N(I.distance)} chart units apart; at least ${a} are required.`,action:A?`Increase the seat spacing for ${x}, or use Review safe fixes.`:`Move ${x} or ${w} until they no longer overlap.`,objectId:I.a.rowId,relatedObjectIds:A?[I.a.rowId]:[I.a.rowId,I.b.rowId],floorId:c.id,measured:N(I.distance),minimum:a,autoFixable:A}))}}return{seats:s,checkedSeatPairs:l,minimumSeatDistance:Number.isFinite(u)?N(u):null}}function He(e){let{width:t,height:o}=$t(e);if(!e.rotation)return{x:e.position.x,y:e.position.y,width:t,height:o};let n=[{x:0,y:0},{x:t,y:0},{x:t,y:o},{x:0,y:o}].map(i=>{let r=Bt(i,e.rotation);return{x:e.position.x+r.x,y:e.position.y+r.y}});return An(n)}function ho(e,t,o=0){return e.x<t.x+t.width+o&&e.x+e.width+o>t.x&&e.y<t.y+t.height+o&&e.y+e.height+o>t.y}function kt(e,t,o){let n=K(t.x,e.x,e.x+e.width),i=K(t.y,e.y,e.y+e.height);return(t.x-n)**2+(t.y-i)**2<o**2}function _r(e,t,o){let n=At(e),i=0;for(let r of t){let s=r.objects.filter(u=>u.type==="text"),l=yo(r);i+=s.length;for(let u=0;u<s.length;u++){let c=s[u],d=He(c),b=l.find(p=>kt(d,p,n));b&&$(o,D({severity:"warning",code:"label-collision",dimension:"labels",message:`Text \u201C${c.text}\u201D overlaps seat ${b.label}`,objectId:c.id,relatedObjectIds:[c.id,b.rowId],floorId:r.id,autoFixable:!0}));for(let p=0;p<u;p++){let m=s[p];ho(d,He(m),2)&&$(o,D({severity:"warning",code:"label-collision",dimension:"labels",message:`Text \u201C${c.text}\u201D overlaps text \u201C${m.text}\u201D`,objectId:c.id,relatedObjectIds:[c.id,m.id],floorId:r.id,autoFixable:!0}))}}}return i}function Ct(e){return e.normalize("NFKC").trim().toLowerCase().replace(/\s+/g," ")}function jr(e,t,o){let n=new Map;for(let l of t)for(let u of l.objects){let c=u.type,d=c==="row"||c==="table"||c==="booth"||c==="gaArea",b=d||c==="section";if(d&&!u.categoryKey.trim()){let p=c==="gaArea"?"GA area":c==="row"?"Row":c==="table"?"Table":"Booth";$(o,D({severity:"warning",code:"object-uncategorized",dimension:"structure",title:`${p} \u201C${u.label||u.id}\u201D has no category`,message:`${p} \u201C${u.label||u.id}\u201D is not assigned to any category, so buyers see no price or colour for it.`,action:"Assign a category to this object in the inspector, or create one in the Categories tab first.",objectId:u.id,floorId:l.id,autoFixable:!1}))}if(b){let p=(u.type==="section"?u.displayLabel??u.label:u.label)??"";if(p.trim()){if(c==="table"||c==="booth"||c==="gaArea"){let m=Ct(p),g=n.get(m);g&&g.raw!==p?$(o,D({severity:"warning",code:"duplicate-object-label-normalized",dimension:"labels",title:`\u201C${p}\u201D and \u201C${g.raw}\u201D read as the same label`,message:`Labels \u201C${p}\u201D and \u201C${g.raw}\u201D differ only by case, spacing, or accents, so buyers cannot tell them apart.`,action:"Make the two labels visibly distinct.",objectId:u.id,relatedObjectIds:[u.id,g.id],floorId:l.id,autoFixable:!1})):g||n.set(m,{id:u.id,raw:p})}}else{let m=c==="gaArea"?"A GA area":c==="section"?"A section":c==="row"?"A row":c==="table"?"A table":"A booth";$(o,D({severity:"warning",code:"object-unlabeled",dimension:"labels",title:`${m} has no label`,message:`${m} has an empty label; buyers rely on labels to identify what they are booking.`,action:"Give this object a short, unique label in the inspector.",objectId:u.id,floorId:l.id,autoFixable:!1}))}}}let i=[];for(let l of t){let u=l.objects.filter(c=>c.type==="row"||c.type==="table"||c.type==="booth"||c.type==="gaArea");for(let c of l.objects)if(!(c.type!=="section"||c.referenceInventoryExclusion||u.some(b=>H(Y(b),c.outline,c.holes)))){if(c.referenceSource){i.push({id:c.id,floorId:l.id});continue}$(o,D({severity:"warning",code:"empty-section",dimension:"structure",title:`Section \u201C${c.displayLabel??c.label}\u201D is empty`,message:`Section \u201C${c.displayLabel??c.label}\u201D contains no rows, tables, booths, or GA areas.`,action:"Add seating inside this section (Fill with rows), or remove the empty section.",objectId:c.id,floorId:l.id,autoFixable:!1}))}}i.length&&$(o,D({severity:"warning",code:"empty-section",dimension:"structure",title:i.length===1?"1 traced section has no seating yet":`${i.length} traced sections have no seating yet`,message:`${i.length} section${i.length===1?"":"s"} traced from the reference image contain${i.length===1?"s":""} no rows, tables, booths, or GA areas.`,action:"Fill them with rows, or remove the ones the venue does not sell.",objectId:i[0].id,relatedObjectIds:i.map(l=>l.id),floorId:i[0].floorId,autoFixable:!1}));let r=new Map,s=new Map;for(let l of t){let u=[];for(let c of l.objects)c.type!=="section"||c.outline.length<3||u.push({id:c.logicalSectionId??c.id,outline:c.outline,...c.holes?{holes:c.holes}:{},bounds:Br(c.outline)});for(let c of l.objects){if(c.type!=="row")continue;let d=(c.segmentedRow?.displayLabel??c.displayLabel??c.label??"").trim(),b=(c.displayType??"").trim(),p=d&&b&&Ct(b)!=="row"?`${b} ${d}`:d,m="";if(u.length){let A=Y(c),R=u.find(O=>A.x>=O.bounds.minX&&A.x<=O.bounds.maxX&&A.y>=O.bounds.minY&&A.y<=O.bounds.maxY&&H(A,O.outline,O.holes));R&&(m=R.id)}let g=`${l.id}\0${m}\0${Ct(p)}`,S=c.segmentedRow?.groupId??c.id;if(!p){let A=`${l.id}\0${m}`,R=s.get(A);R?(R.ids.push(c.id),R.logical.set(S,[...R.logical.get(S)??[],c])):s.set(A,{ids:[c.id],logical:new Map([[S,[c]]]),floorId:l.id});continue}let I=r.get(g);I?(I.ids.push(c.id),I.logical.set(S,[...I.logical.get(S)??[],c])):r.set(g,{ids:[c.id],logical:new Map([[S,[c]]]),floorId:l.id,raw:p})}}for(let{ids:l,logical:u,floorId:c,raw:d}of r.values()){let b=u.size;b<2||fo([...u.values()])&&$(o,D({severity:"warning",code:"duplicate-row-label",dimension:"labels",title:`${b} rows share the name \u201C${d}\u201D`,message:`${b} rows share the label \u201C${d}\u201D, so buyers cannot tell which row a seat belongs to.`,action:"Rename them so each row reads differently: for example the section or box each belongs to.",objectId:l[0],relatedObjectIds:l,floorId:c,autoFixable:!1}))}for(let{ids:l,logical:u,floorId:c}of s.values()){let d=u.size;d<2||fo([...u.values()])&&$(o,D({severity:"warning",code:"unnamed-row-collision",dimension:"labels",title:`${d} rows have no name`,message:`${d} rows in the same area have no name and repeat each other\u2019s seat numbers, so buyers cannot tell which row a seat belongs to.`,action:"Give each of these rows a name, for example the box each belongs to, so a ticket can say which row a seat is in.",objectId:l[0],relatedObjectIds:l,floorId:c,autoFixable:!1}))}if(e.floors&&e.floors.length>1)for(let l of e.floors)l.objects.length===0&&$(o,D({severity:"warning",code:"unused-floor",dimension:"structure",title:`Floor \u201C${l.name}\u201D is empty`,message:`Floor \u201C${l.name}\u201D has no objects on it.`,action:"Add seating to this floor, or delete it from the floor list below the canvas.",floorId:l.id,autoFixable:!1}))}var Nr=5,Fr=16;function Dr(e,t,o){for(let n of t){let i=n.focalPoint??e.focalPoint;if(i)for(let r of n.objects){if(r.type!=="section"||r.outline.length<3)continue;let{rake:s}=Se(r);if(s<Nr)continue;let l=r.outline.map(p=>Math.hypot(p.x-i.x,p.y-i.y)),u=Math.max(...l);if(u<=0)continue;let c=(u-Math.min(...l))/u;if(s*c<=Fr)continue;let b=r.displayLabel??r.label;$(o,D({severity:"warning",code:"section-rake-inconsistent",dimension:"geometry",title:`Section \u201C${b}\u201D is too deep for a single rake`,message:`Section \u201C${b}\u201D spans ${Math.round(c*100)}% of its distance to the stage at a ${Math.round(s)}\xB0 rake, so one rake can't represent its sightlines faithfully: a real tier this deep changes slope at a cross-aisle.`,action:"Split this section at the cross-aisle into two sections, each with its own rake.",objectId:r.id,floorId:n.id,autoFixable:!1}))}}}function $r(e,t,o){let n=e.theme?.background??po,i=kr,r=new Map;for(let c of t)for(let d of c.objects){if(d.type!=="gaArea")continue;let b=r.get(d.categoryKey)??[];b.push({id:d.id,floorId:c.id}),r.set(d.categoryKey,b)}for(let c of e.categories){let d=G(c.color,n),b=G(c.color,i);if(d==null||b==null){$(o,D({severity:"error",code:"invalid-category-color",dimension:"contrast",message:`Category \u201C${c.label}\u201D does not use a supported hex color`,categoryKey:c.key}));continue}let p=Math.min(d,b);p<3&&$(o,D({severity:"warning",code:"category-contrast-low",dimension:"contrast",title:`Category \u201C${c.label}\u201D is hard to see`,message:`Category \u201C${c.label}\u201D reaches only ${N(p)}:1 across dark and light chart backgrounds; 3:1 is required`,action:`Choose a lighter or darker color for \u201C${c.label}\u201D until this warning clears.`,categoryKey:c.key,measured:N(p),minimum:3,autoFixable:!1}));let m=r.get(c.key)??[];if(m.length){let g=ht(c.color,n,yt),S=ht(c.color,i,yt),I=Math.min(G(g,n)??0,G(S,i)??0);I<3&&$(o,D({severity:"warning",code:"ga-contrast-low",dimension:"contrast",message:`GA category \u201C${c.label}\u201D reaches only ${N(I)}:1 after its rendered opacity is composited; 3:1 is required`,objectId:m[0].id,categoryKey:c.key,floorId:m[0].floorId,relatedObjectIds:m.map(A=>A.id),measured:N(I),minimum:3,autoFixable:!1}))}}for(let c=0;c<e.categories.length;c++)for(let d=0;d<c;d++){let b=e.categories[c],p=e.categories[d],m=kn(b.color,p.color);m!=null&&m<25&&$(o,D({severity:"warning",code:"category-colors-too-similar",dimension:"contrast",title:`\u201C${b.label}\u201D and \u201C${p.label}\u201D look too similar`,message:`Categories \u201C${b.label}\u201D and \u201C${p.label}\u201D are only \u0394E ${N(m)} apart; 25 is required`,action:"Pick a visibly different color for either category so buyers can tell them apart.",categoryKey:b.key,measured:N(m),minimum:25,autoFixable:!1}))}for(let c of t){let d=c.objects.filter(b=>b.type==="text");for(let b of d){let p=b.color??e.theme?.textColor??go,m=G(p,n),g=b.fontSize>=18?3:4.5;(m==null||m<g)&&$(o,D({severity:"warning",code:"text-contrast-low",dimension:"contrast",message:`Text \u201C${b.text}\u201D has ${N(m??0)}:1 contrast against the chart background; ${g}:1 is required`,objectId:b.id,floorId:c.id,measured:N(m??0),minimum:g,autoFixable:!0}))}}if(e.theme?.selectionColor){let c=G(e.theme.selectionColor,n);(c==null||c<3)&&$(o,D({severity:"warning",code:"selection-contrast-low",dimension:"contrast",title:"The selection color is hard to see",message:`Selection rings have ${N(c??0)}:1 contrast against the chart background; 3:1 is required.`,action:"In Theme, choose a Selection color that stands out clearly from the Background color.",measured:N(c??0),minimum:3,autoFixable:!1}))}if(e.theme?.textColor){let c=G(e.theme.textColor,n);(c==null||c<3)&&$(o,D({severity:"warning",code:"theme-text-contrast-low",dimension:"contrast",title:"The theme text color is hard to read",message:`Theme text has ${N(c??0)}:1 contrast against the chart background; 3:1 is required.`,action:"In Theme, choose a Text color with stronger contrast against the Background color.",measured:N(c??0),minimum:3,autoFixable:!1}))}let s=e.theme?.seatLabelColor??Ar,l=new Map,u=(c,d,b)=>{let p=l.get(c)??new Map,m=p.get(d)??[];m.push(b),p.set(d,m),l.set(c,p)};for(let c of t)for(let d of c.objects)if(d.type==="row")for(let b of ke(d).keys())u(b,"seat",d.id);else if(d.type==="table")for(let b of ke(d).keys())u(b,"table seat",d.id);else d.type==="booth"&&u(d.categoryKey,"booth",d.id);for(let c of e.categories){let d=l.get(c.key);if(d)for(let[b,p]of d){let m=b==="booth"?Tn:Pn,g=Nn(_n,600),S=Fn(c.color,s),I=G(S,c.color);(I==null||I<g)&&$(o,D({severity:"warning",code:"bookable-label-contrast-low",dimension:"contrast",message:`${b==="booth"?"Booth":b==="seat"?"Seat":"Table-seat"} labels use ${m}u type and have ${N(I??0)}:1 contrast on category \u201C${c.label}\u201D; ${g}:1 is required for small text`,objectId:p[0],relatedObjectIds:p,measured:N(I??0),minimum:g,autoFixable:!0}))}}}function fo(e){if(e.length>24)return!0;let t=new Set;for(let o of e){let n=new Set;for(let i of o)for(let r of U(i)){let s=r.label,l=s.lastIndexOf("-");n.add(l>=0?s.slice(l+1):s)}if(!n.size)return!0;for(let i of n)if(t.has(i))return!0;for(let i of n)t.add(i)}return!1}function Br(e){let t=1/0,o=1/0,n=-1/0,i=-1/0;for(let r of e)r.x<t&&(t=r.x),r.y<o&&(o=r.y),r.x>n&&(n=r.x),r.y>i&&(i=r.y);return{minX:t,minY:o,maxX:n,maxY:i}}function Gr(e,t){for(let o of e){let n=o.objects.filter(i=>i.type==="section");if(!(n.length<2))for(let i of o.objects){if(!(i.type==="row"||i.type==="table"||i.type==="booth"||i.type==="gaArea"))continue;let s=Y(i),l=n.filter(m=>H(s,m.outline,m.holes)),u=new Map;for(let m of l){let g=m.logicalSectionId??m.id,S=u.get(g)??[];S.push(m),u.set(g,S)}if(u.size<2)continue;let c=[...u.values()],d=c.map(m=>`Section \u201C${m[0].displayLabel??m[0].label}\u201D`),b=d.length===2?d.join(" and "):`${d.slice(0,-1).join(", ")}, and ${d[d.length-1]}`,p=i.type==="gaArea"?"GA area":i.type==="row"?"Row":i.type==="table"?"Table":"Booth";$(t,D({severity:"warning",code:"ambiguous-section-ownership",dimension:"structure",title:`${p} \u201C${i.label}\u201D belongs to more than one section`,message:`${p} \u201C${i.label}\u201D has its center inside ${b}, so its buyer section is unclear.`,action:"Adjust the boundaries until this object sits in one Section. If the overlapping shapes are meant to form one Section, combine them first.",objectId:i.id,relatedObjectIds:[i.id,...c.flatMap(m=>m.map(g=>g.id))],floorId:o.id,autoFixable:!1}))}}}var Kr={structure:20,geometry:30,contrast:25,labels:15,navigation:10},Ur={"seat-overlap":15,"seat-cramped":4,"label-collision":4,"category-contrast-low":3,"ga-contrast-low":3,"category-colors-too-similar":3,"invalid-category-color":10,"text-contrast-low":4,"bookable-label-contrast-low":3,"selection-contrast-low":3,"theme-text-contrast-low":3,"missing-focal-point":10,"object-uncategorized":3,"object-unlabeled":3,"duplicate-object-label-normalized":2,"empty-section":2,"unused-floor":2,"ambiguous-section-ownership":4,"category-inventory-family-conflict":10};function Vr(e){let t={...Kr};for(let i of e){let r=i.severity==="error"?10:2;t[i.dimension]=Math.max(0,t[i.dimension]-(Ur[i.code]??r))}let o=Object.values(t).reduce((i,r)=>i+r,0),n=o>=95?"A":o>=85?"B":o>=70?"C":o>=55?"D":"F";return{overall:o,dimensions:t,errorFree:e.every(i=>i.severity!=="error"),grade:n}}var zr=new Set(["unpriced-category","object-uncategorized"]);function bo(e,t={}){let o=Ie(e),n=uo(e,{maxInventory:t.maxInventory}).filter(d=>d.code!=="missing-zone-focal-point"||t.requireExplicitZoneFocals).map(d=>{let b=d.objectId?o.find(g=>g.objects.some(S=>S.id===d.objectId))?.id:void 0,p=d.code==="category-inventory-family-conflict",m=p?e.categories.find(g=>g.key===d.categoryKey):void 0;return D({...d,...p?{severity:"error",title:`Category \u201C${m?.label??d.categoryKey??"Unknown"}\u201D spans incompatible inventory types`,action:"Show the affected objects, then review the safe category split. The repair preserves price, ticket tiers, accessibility assignments, and source provenance."}:{},...t.requireExplicitZoneFocals&&d.code==="missing-zone-focal-point"?{severity:"error"}:{},...b?{floorId:b}:{},source:"structural",dimension:Lr(d),autoFixable:p})}),i=Tr(e,o,n),r=Pr(o),s=_r(e,o,n);if(jr(e,o,n),Gr(o,n),Dr(e,o,n),$r(e,o,n),o.reduce((d,b)=>d+b.objects.filter(p=>p.type==="row"||p.type==="table"||p.type==="booth"||p.type==="gaArea").length,0)===0){let d=new Set(["missing-focal-point","no-bookables"]);for(let b=n.length-1;b>=0;b--)d.has(n[b].code)&&n.splice(b,1)}if(t.requirePricedInventory)for(let d=0;d<n.length;d++)zr.has(n[d].code)&&(n[d]={...n[d],severity:"error"});let u=n.filter(d=>d.severity==="error"),c=n.filter(d=>d.severity==="warning");return{issues:n,errors:u,warnings:c,metrics:{floors:o.length,objects:o.reduce((d,b)=>d+b.objects.length,0),seats:i.seats,bookableUnits:r.bookableUnits,inventoryByKind:r.inventoryByKind,categories:e.categories.length,freeTextLabels:s,checkedSeatPairs:i.checkedSeatPairs,minimumSeatDistance:i.minimumSeatDistance},score:Vr(n),deferredRules:["rendered-row-label-decollision","rendered-bookable-state-contrast","section-focus-opacity-and-backdrop","24px-pointer-hit-target","reference-image-diff","sightline-blocked","ga-density-high"]}}function Hr(e,t){if(e.seatCount<2||e.seatSpacing>=t)return!1;let o=he(U(e));e.seatSpacing=N(t,3);let n=he(U(e));return e.origin.x=N(e.origin.x+o.x-n.x,3),e.origin.y=N(e.origin.y+o.y-n.y,3),!0}function Xr(e,t){if(e.seatCount<2)return!1;let o=!1;if(e.shape==="round"){let n=K(e.seatArc??360,0,360),i=(n>=360?360/e.seatCount:n/(e.seatCount-1))*Math.PI/180;if(i>0){let r=t/(2*Math.sin(i/2)),s=Math.max(1,r-16);(e.radius??40)<s&&(e.radius=N(s,3),o=!0)}}else{let n=Me(e),i=Math.max(n.top,n.bottom),r=Math.max(n.left,n.right);i>1&&(e.width??80)/i<t&&(e.width=N(i*t,3),o=!0),r>1&&(e.height??50)/r<t&&(e.height=N(r*t,3),o=!0)}return o}function Yr(e){return[Rr,Er].map(o=>({color:o,minimum:Math.min(...e.map(n=>G(o,n)??0))})).sort((o,n)=>n.minimum-o.minimum)[0].color}function mo(e,t,o){let n=He(e),i=0;for(let r of t)r.type==="row"?i+=U(r).filter(s=>kt(n,s,o)).length:r.type==="table"?i+=z(r).filter(s=>kt(n,s,o)).length:r.type==="text"&&r.id!==e.id&&ho(n,He(r),2)&&i++;return i}function Wr(e,t,o){if(mo(e,t,o)===0)return!1;let i={...e.position},r=Math.max(12,e.fontSize*1.25),s=[[0,-1],[1,0],[0,1],[-1,0],[1,-1],[1,1],[-1,1],[-1,-1]];for(let l=1;l<=12;l++)for(let[u,c]of s)if(e.position={x:N(i.x+u*r*l,3),y:N(i.y+c*r*l,3)},mo(e,t,o)===0)return!0;return e.position=i,!1}function xo(e,t={}){let o=JSON.parse(JSON.stringify(e)),n=bo(o,t),i=[],r=vt(o);if(r.changed){o=r.doc;for(let b of r.changes){let p=r.before.find(g=>g.categoryKey===b.categoryKey),m=p?.families.map(g=>g.label).join(", ")??"inventory families";i.push({code:"category-inventory-family-conflict",objectId:p?.objectIds[0],message:`Split category \u201C${b.categoryLabel}\u201D across ${m}; preserved its commercial metadata and reassigned ${b.reassignments.length} affected object${b.reassignments.length===1?"":"s"}`})}}let s=At(o),l=2.5*s,u=Ie(o);for(let b of u)for(let p of b.objects)if(p.type==="row"){let m=p.seatSpacing;Hr(p,l)&&i.push({code:m<2*s?"seat-overlap":"seat-cramped",objectId:p.id,message:`Expanded ${p.id} to the ${N(l)}u target pitch while preserving its centre`})}else p.type==="table"&&Xr(p,l)&&i.push({code:"seat-cramped",objectId:p.id,message:`Expanded ${p.id} so its perimeter seats meet the ${N(l)}u target pitch`});let c=o.theme?.background??po;for(let b of u)for(let p of b.objects){if(p.type!=="text")continue;let m=p.color??o.theme?.textColor??go,g=p.fontSize>=18?3:4.5;(G(m,c)??0)<g&&(p.color=Yr([c]),i.push({code:"text-contrast-low",objectId:p.id,message:`Changed ${p.id} to the highest-contrast black/white ink`}))}for(let b of u){let p=b.objects.filter(m=>m.type==="text");for(let m of p)Wr(m,b.objects,s)&&i.push({code:"label-collision",objectId:m.id,message:`Moved ${m.id} to the nearest collision-free deterministic label position`})}o.floors?.length&&(o.objects=o.floors[0].objects);let d=bo(o,t);return{doc:o,changed:i.length>0,fixes:i,before:n,after:d}}function Xe(e){return e.floors?.length?e.floors.flatMap(t=>t.objects):e.objects}function Rt(e){return Xe(e).reduce((t,o)=>o.type==="row"?t+Be(o):o.type==="table"?t+vn(o):o.type==="gaArea"?t+Math.max(0,Math.floor(o.capacity)):o.type==="booth"?t+1:t,0)}function Zr(e){let t={};for(let n of e.categories??[])t[n.key]=0;let o=(n,i)=>{i>0&&(t[n]=(t[n]??0)+i)};for(let n of Xe(e))if(n.type==="row")for(let i of U(n))o(i.categoryKey,1);else if(n.type==="table")if(n.bookAsWhole||n.variableOccupancy)o(n.categoryKey,Math.max(0,Math.round(n.seatCount)));else for(let i of z(n))o(i.categoryKey,1);else n.type==="gaArea"?o(n.categoryKey,Math.max(0,Math.floor(n.capacity))):n.type==="booth"&&o(n.categoryKey,1);return t}function So(e){if(!e.template)return null;let t=Xe(e),o=t.filter(u=>u.type==="row"||u.type==="table"||u.type==="gaArea");if(!o.length)return null;let i=t.filter(u=>u.type==="booth").length+o.reduce((u,c)=>u+(c.type==="table"?2:1),0),r=Rt(e),s=Math.max(i+1,Math.min(5e4,r*4)),l=[.5,1,1.5,2].map(u=>K(Math.round(r*u),i,s));return{family:e.template.family,display:e.template.family.replace(/-/g," ").replace(/\b\w/g,u=>u.toUpperCase()),min:i,max:s,presets:["S","M","L","XL"].map((u,c)=>({size:u,seats:l[c]}))}}function vo(e){let t=U(e);return t.length?he(t):{...e.origin}}function qr(e,t){let o=So(e);if(!o)return structuredClone(e);let n=structuredClone(e),i=Xe(n),r=i.filter(m=>m.type==="row"||m.type==="table"||m.type==="gaArea"),s=i.filter(m=>m.type==="booth").length,l=Math.max(o.min,Math.min(o.max,Math.round(t))),u=l-s,c=r.map((m,g)=>{let S=m.type==="gaArea"?Math.max(0,Math.floor(m.capacity)):m.seatCount,I=m.type==="table"?2:1;return{object:m,index:g,current:S,minimum:I,value:I,fraction:0}}),d=c.reduce((m,g)=>m+g.minimum,0),b=Math.max(0,u-d),p=c.reduce((m,g)=>m+Math.max(1,g.current-g.minimum),0);for(let m of c){let g=b*Math.max(1,m.current-m.minimum)/p,S=Math.floor(g);m.value+=S,m.fraction=g-S}b=u-c.reduce((m,g)=>m+g.value,0),c.sort((m,g)=>g.fraction-m.fraction||m.index-g.index);for(let m=0;m<b;m++)c[m%c.length].value++;c.sort((m,g)=>m.index-g.index);for(let m of c)if(m.object.type==="row"){let g=vo(m.object);m.object.seatCount=m.value;let S=vo(m.object);m.object.origin.x+=g.x-S.x,m.object.origin.y+=g.y-S.y}else if(m.object.type==="table"){let g=m.object;if(g.seatCountsBySide){let S=["top","bottom","left","right"],I=Me(g),A=S.reduce((P,M)=>P+I[M],0)||1,R=S.map((P,M)=>{let v=m.value*I[P]/A;return{side:P,index:M,value:Math.floor(v),fraction:v-Math.floor(v)}}),O=m.value-R.reduce((P,M)=>P+M.value,0);R.sort((P,M)=>M.fraction-P.fraction||P.index-M.index);for(let P=0;P<O;P++)R[P%R.length].value+=1;R.sort((P,M)=>P.index-M.index),g.seatCountsBySide={top:R[0].value,bottom:R[1].value,left:R[2].value,right:R[3].value},g.sides=S.filter(P=>g.seatCountsBySide[P]>0)}g.seatCount=m.value,g.overrides&&(g.overrides=g.overrides.filter(S=>S.index<m.value),g.overrides.length||delete g.overrides)}else{let g=m.object;g.capacity=Z(g)?Math.min(m.value,ee):m.value,g.variableOccupancy&&(g.maxOccupancy=Math.min(g.maxOccupancy??g.capacity,g.capacity),g.minOccupancy=Math.min(g.minOccupancy??1,g.maxOccupancy)),g.wheelchairPlaces&&(g.wheelchairPlaces=Math.min(g.wheelchairPlaces,g.capacity))}return n.floors?.length&&(n.objects=n.floors[0].objects),n.template={family:n.template.family,targetSeats:l},n=xo(n).doc,n.template={family:e.template.family,targetSeats:Rt(n)},n}function pe(e){let t=Number(e.slice(e.lastIndexOf(":")+1));return Number.isFinite(t)?t:-1}function Qr(e,t,o){let n=new Map;for(let s of e){if(s.kind==="booth")continue;let l=n.get(s.rowId);l?l.push(s):n.set(s.rowId,[s])}let i=s=>o.has(s.id)||t(s.id)!=="free",r=[];for(let s of n.values())if(!(s.length<3)){s.sort((l,u)=>pe(l.id)-pe(u.id));for(let l=1;l<s.length-1;l++){let u=s[l];if(i(u))continue;let c=s[l-1],d=s[l+1];pe(u.id)-pe(c.id)!==1||pe(d.id)-pe(u.id)!==1||!i(c)||!i(d)||!o.has(c.id)&&!o.has(d.id)||r.push(u)}}return r}var Ot=1,Lt=100;function Io(e,t){if(!Number.isInteger(t)||t<Ot||t>Lt)return null;let o=e.rotation*Math.PI/180,n={x:Math.cos(o),y:Math.sin(o)},i={x:-n.y,y:n.x};return Array.from({length:t},(r,s)=>{let l=e.style==="intertwined"&&s%2===1?e.seatSpacing/2:0;return{type:"row",id:`__block_preview_${s}`,label:"",origin:{x:e.origin.x+i.x*s*e.rowGap+n.x*l,y:e.origin.y+i.y*s*e.rowGap+n.y*l},rotation:e.rotation,curve:e.curve,seatCount:e.seatsPerRow,seatSpacing:e.seatSpacing,categoryKey:"__preview__"}})}function Et(e,t=e.rowCount){let o=Io(e,t);return o?.length?Y(o[o.length-1]):null}function Jr(e,t){if(!Number.isFinite(t.x)||!Number.isFinite(t.y)||e.rowGap<=0)return null;let o=Et(e,1);if(!o)return null;let n=e.rotation*Math.PI/180,i={x:-Math.sin(n),y:Math.cos(n)},r=(t.x-o.x)*i.x+(t.y-o.y)*i.y,s=Math.max(Ot,Math.min(Lt,Math.round(r/e.rowGap)+1)),l=Et(e,s);return l?{rowCount:s,edgePoint:l}:null}function ea(e,t){return e.length!==t.rowCount?!1:[...e].sort((n,i)=>(n.rowBlockGeneration?.rowIndex??1/0)-(i.rowBlockGeneration?.rowIndex??1/0)).every((n,i)=>{let r=n.rowBlockGeneration;return r?.kind==="row-block-v1"&&r.groupId===t.groupId&&r.rowIndex===i&&r.signature===t.signature&&JSON.stringify(r)===JSON.stringify({...t,rowIndex:i})})}function wo(e){let t=(e%360+360)%360,o=t>=180?t-360:t;return Object.is(o,-0)||Math.abs(o)<1e-9?0:o}var ne=1,oe=300,Pt=330;function Oe(e){return e.seatCount>1?e.curve/(e.seatCount-1):0}function Mo(e,t){let o=e.rotation*Math.PI/180,n=Oe(e)*Math.PI/180,i,r;if(Math.abs(n)<1e-9)i=t*e.seatSpacing,r=0;else{let s=e.seatSpacing/(2*Math.sin(Math.abs(n)/2)),l=n*t;i=s*Math.sin(l),r=-s+s*Math.cos(l)}return{x:e.origin.x+i*Math.cos(o)-r*Math.sin(o),y:e.origin.y+i*Math.sin(o)+r*Math.cos(o)}}function ta(e,t,o){let n=(e??[]).map(i=>({...i,index:i.index+t})).filter(i=>i.index>=0&&i.index<o);return n.length?n:void 0}function Co(e,t){if(e.path||!Number.isInteger(t)||t<ne||t>oe)return null;let o=Oe(e);return{...e,seatCount:t,curve:o*(t-1)}}function ko(e,t){if(e.path||!Number.isInteger(t)||t<ne||t>oe)return null;let o=Oe(e),n=e.seatCount-t,i=-n;return{...e,origin:Mo(e,n),rotation:wo(e.rotation-o*n),seatCount:t,curve:o*(t-1),overrides:ta(e.overrides,i,t)}}function Ao(e,t=e.seatCount){let o=Co(e,t);return o?Mo(o,t-1):null}function Ro(e,t=e.seatCount){return ko(e,t)?.origin??null}function na(e,t){if(e.path||!Number.isFinite(t.x)||!Number.isFinite(t.y))return null;let o=Oe(e),n=Math.abs(o)<1e-9?oe:Math.min(oe,Math.floor(Pt/Math.abs(o))+1),i=null;for(let r=ne;r<=Math.max(ne,n);r+=1){let s=Ao(e,r);if(!s)continue;let l=Math.hypot(s.x-t.x,s.y-t.y),u=o*(r-1);(!i||l<i.distance||l===i.distance&&r<i.seatCount)&&(i={seatCount:r,curve:u,endpoint:s,distance:l})}return i}function oa(e,t){if(e.path||!Number.isFinite(t.x)||!Number.isFinite(t.y))return null;let o=Oe(e),n=Math.abs(o)<1e-9?oe:Math.min(oe,Math.floor(Pt/Math.abs(o))+1),i=null;for(let r=ne;r<=Math.max(ne,n);r+=1){let s=Ro(e,r);if(!s)continue;let l=Math.hypot(s.x-t.x,s.y-t.y),u=o*(r-1);(!i||l<i.distance||l===i.distance&&r<i.seatCount)&&(i={seatCount:r,curve:u,endpoint:s,distance:l})}return i}var ge=class extends Error{constructor(o,n){super(n);this.objectId=o;this.name="GroupedTableProjectionError"}};function ia(e){let t=e.minOccupancy,o=e.maxOccupancy;if(!Number.isInteger(t)||!Number.isInteger(o)||t<1||o<t||o>e.seatCount)throw new ge(e.id,`Table "${e.label}" has invalid variable-occupancy bounds`);return{min:t,max:o}}function ra(e,t){if(t!==2)return[];let o=[];for(let n of Ge(e)){if(n.type!=="table"||!n.bookAsWhole&&!n.variableOccupancy)continue;if(n.bookAsWhole&&n.variableOccupancy)throw new ge(n.id,`Table "${n.label}" cannot be whole-table and variable-occupancy inventory`);if(!Number.isInteger(n.seatCount)||n.seatCount<1||!n.label.trim())throw new ge(n.id,"Grouped tables require a label and at least one chair");let i=n.variableOccupancy?"variable":"whole",r=i==="variable"?ia(n):{min:n.seatCount,max:n.seatCount};o.push({objectId:n.id,label:n.label,...n.displayLabel?{displayLabel:n.displayLabel}:{},...n.displayType?{displayType:n.displayType}:{},categoryKey:n.categoryKey,mode:i,capacity:n.seatCount,minOccupancy:r.min,maxOccupancy:r.max,chairs:z(n)})}return o}function Oo(e){return Array.isArray(e.objects)}function Lo(e,t){if(t.seatsByLabel)return t.seatsByLabel;if(!Oo(e))throw new Error("ticketRestrictions: a categories-only chart document requires options.seatsByLabel");return new Map(Sn(e,{resolveEyeHeights:!1}).map(o=>[o.label,o]))}function Po(e){return{code:"ticket_option_not_applicable",labels:e,message:"That ticket choice is not available for the selected seat."}}function Ye(e,t){let o=e.applicability;return o?!(o.seatLabels?.length&&!o.seatLabels.includes(t.label)||o.accessibility?.length&&!o.accessibility.some(n=>t.accessibility?.includes(n))):!0}function aa(e,t){return(e.categories.find(o=>o.key===t.categoryKey)?.tiers??[]).filter(o=>Ye(o,t))}function Tt(e,t,o){let n=e.categories.find(r=>r.key===t.categoryKey)?.tiers;if(!n?.length)return{kind:"none"};let i=o==null?n.find(r=>Ye(r,t)):n.find(r=>r.id===o&&Ye(r,t));return i?{kind:"resolved",tier:i}:{kind:"invalid"}}function sa(e,t){return(e.logicalRowId??e.rowId)===(t.logicalRowId??t.rowId)}function Eo(e){if(Number.isInteger(e.logicalSeatIndex))return e.logicalSeatIndex;let t=e.id.slice(e.id.lastIndexOf(":")+1),o=Number(t);return Number.isInteger(o)?o:void 0}function ca(e,t){if(!sa(e,t))return!1;let o=Eo(e),n=Eo(t);return o!=null&&n!=null&&Math.abs(o-n)===1}function To(e,t,o={}){if(!t.length)return null;let n=Lo(e,o),i=t.flatMap(l=>{let u=n.get(l.label);return u?[{selection:l,seat:u}]:[]}),r=i.map(({seat:l})=>l).filter(l=>l.accessibility?.includes("wheelchair")),s=[];for(let{selection:l,seat:u}of i){let c=Tt(e,u,l.tierId),d=c.kind==="resolved"?c.tier:void 0;(u.accessibility?.includes("companion")||d?.restriction==="companion")&&!r.some(p=>p.id!==u.id&&ca(u,p))&&s.push(u.label)}return s.length?{code:"companion_pair_required",labels:s,message:"Select the adjacent wheelchair place with each companion ticket."}:null}function la(e,t,o={}){if(!t.length)return null;let n=Lo(e,o),i=new Set(e.categories.filter(l=>l.notForSale).map(l=>l.key)),r=[],s=[];for(let l of t){let u=n.get(l.label);if(!u)continue;if(i.has(u.categoryKey)){r.push(u.label);continue}Tt(e,u,l.tierId).kind==="invalid"&&s.push(u.label)}return r.length?{code:"not_for_sale",labels:r,message:"These seats are not for sale."}:s.length?Po(s):To(e,t,{seatsByLabel:n})}0&&(module.exports={CATEGORY_INVENTORY_FAMILIES,DEFAULT_EVENT_INVENTORY_LIMIT,GA_UNIT_LABEL_PREFIX,GroupedTableProjectionError,LARGE_VENUE_INVENTORY_MODULE,MAX_DIRECT_ROW_SWEEP,MAX_EVENT_INVENTORY,MAX_GA_CAPACITY,MAX_ONE_PARTY_GUESTS,MAX_ROW_BLOCK_ROWS,MAX_ROW_SEATS,MIN_ROW_BLOCK_ROWS,MIN_ROW_SEATS,ONE_PARTY_LIMIT_MESSAGE,applicableTicketTiers,behindStageLabels,capacityControl,categoryCapacity,chartCapacity,companionSelectionIssue,describeCategoryInventoryConflict,effectiveSeatOwnerCategoryCounts,eventInventoryLimitFor,gaAreasOf,gaBoxBounds,gaBoxMode,gaInventorySegments,gaUnitLabel,gaUnitLabels,gaUnitLabelsForModel,gaWheelchairPlaceCount,gaWheelchairUnitLabels,groupedTableInventory,growJoinedGAInventory,inspectCategoryInventoryConflicts,intactRowBlockMembers,isFullChartDoc,isGaUnitLabel,pickBestAvailable,pickBestAvailableInventory,remediateCategoryInventoryConflicts,resizeChartCapacity,resolveRowBlockCount,resolveRowStartCapacity,resolveRowTerminalCapacity,resolveTicketTierForSeat,rowBlockEdgePoint,rowBlockPreviewRows,rowStartEndpoint,rowTerminalEndpoint,rowWithStartCapacity,rowWithTerminalCapacity,strandedSingles,ticketOptionNotApplicableIssue,ticketSelectionIssue,ticketTierAppliesToSeat,validGAInventorySegments});
1
+ "use strict";var Ot=Object.defineProperty;var ei=Object.getOwnPropertyDescriptor;var ti=Object.getOwnPropertyNames;var ni=Object.prototype.hasOwnProperty;var oi=(e,t)=>{for(var n in t)Ot(e,n,{get:t[n],enumerable:!0})},ri=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ti(t))!ni.call(e,r)&&r!==n&&Ot(e,r,{get:()=>t[r],enumerable:!(o=ei(t,r))||o.enumerable});return e};var ii=e=>ri(Ot({},"__esModule",{value:!0}),e);var ac={};oi(ac,{CATEGORY_INVENTORY_FAMILIES:()=>pt,DEFAULT_EVENT_INVENTORY_LIMIT:()=>st,GA_UNIT_LABEL_PREFIX:()=>dt,GroupedTableProjectionError:()=>je,LARGE_VENUE_INVENTORY_MODULE:()=>Dt,MAX_DIRECT_ROW_SWEEP:()=>vn,MAX_EVENT_INVENTORY:()=>no,MAX_GA_CAPACITY:()=>fe,MAX_ONE_PARTY_GUESTS:()=>pe,MAX_ROW_BLOCK_ROWS:()=>xn,MAX_ROW_SEATS:()=>ye,MIN_ROW_BLOCK_ROWS:()=>yn,MIN_ROW_SEATS:()=>he,ONE_PARTY_LIMIT_MESSAGE:()=>Sa,applicableTicketTiers:()=>nc,behindStageLabels:()=>wn,capacityControl:()=>Br,categoryCapacity:()=>zs,chartCapacity:()=>gn,companionSelectionIssue:()=>Qr,describeCategoryInventoryConflict:()=>Jt,effectiveSeatOwnerCategoryCounts:()=>He,eventInventoryLimitFor:()=>oo,gaAreasOf:()=>Ca,gaBoxBounds:()=>Ia,gaBoxMode:()=>ce,gaInventorySegments:()=>Kt,gaUnitLabel:()=>yo,gaUnitLabels:()=>Vt,gaUnitLabelsForModel:()=>Ht,gaWheelchairPlaceCount:()=>xo,gaWheelchairUnitLabels:()=>wa,groupedTableInventory:()=>tc,growJoinedGAInventory:()=>Ma,inspectCategoryInventoryConflicts:()=>Ve,intactRowBlockMembers:()=>Zs,isFullChartDoc:()=>Wr,isGaUnitLabel:()=>se,pickBestAvailable:()=>Cn,pickBestAvailableInventory:()=>ai,remediateCategoryInventoryConflicts:()=>en,resizeChartCapacity:()=>Xs,resolveRowBlockCount:()=>Ws,resolveRowStartCapacity:()=>Js,resolveRowTerminalCapacity:()=>Qs,resolveTicketTierForSeat:()=>Sn,rowBlockEdgePoint:()=>hn,rowBlockPreviewRows:()=>Gr,rowStartEndpoint:()=>Xr,rowTerminalEndpoint:()=>zr,rowWithStartCapacity:()=>Hr,rowWithTerminalCapacity:()=>Vr,strandedSingles:()=>Ys,ticketOptionNotApplicableIssue:()=>qr,ticketSelectionIssue:()=>ic,ticketTierAppliesToSeat:()=>Ct,validGAInventorySegments:()=>ft});module.exports=ii(ac);function In(e){return e.sectionId?`s:${e.sectionId}`:`r:${e.logicalRowId??e.rowId}`}function wn(e,t){let n=new Set,o=new Map;for(let r of e){let i=r.focalPoint??t,s=`${i.x},${i.y}`,u=o.get(s);u||(u={focal:i,seats:[]},o.set(s,u)),u.seats.push(r)}for(let{focal:r,seats:i}of o.values()){let s=qe(i),u=s.x-r.x,l=s.y-r.y,d=Math.hypot(u,l),c=0;for(let S of i)c=Math.max(c,Math.abs(S.x-r.x),Math.abs(S.y-r.y));let f=Math.max(c,1)*1e-6;if(!(d>f))continue;let b=0,m=new Set;for(let S of i)((S.x-r.x)*u+(S.y-r.y)*l)/d<-f&&(b+=1,m.add(In(S)));if(!m.size||b*10>i.length)continue;let g=i.filter(S=>m.has(In(S)));if(!(g.length*4>i.length))for(let S of g)n.add(S.label)}return n}function kt(e,t){if(Number.isInteger(e.logicalSeatIndex))return e.logicalSeatIndex;let n=e.id.lastIndexOf(":");if(n<0)return t;let o=Number(e.id.slice(n+1));return Number.isFinite(o)?o:t}function Ne(e,t){let n=e.x-t.x,o=e.y-t.y;return n*n+o*o}function qe(e){let t=0,n=0;for(let o of e)t+=o.x,n+=o.y;return{x:t/e.length,y:n/e.length}}function Mn(e,t){return e.find(n=>n.focalPoint)?.focalPoint??t}function At(e){return e.commercial?.premium===!0}function Cn(e,t,n){let o=Math.floor(n.qty);if(!Number.isFinite(o)||o<=0)return{labels:[],reason:"sold_out"};let{categoryKey:r,zoneId:i,focal:s,preferPremium:u,preferNearest:l,preferredRowIds:d,accessibility:c,requireContiguous:f}=n,b=n.preferAisle&&n.aisleLabels?.size?n.aisleLabels:null,m=v=>b&&!v.some(C=>b.has(C.label))?1:0,g=new Map,S=[];if(e.forEach((v,C)=>{let a=t.has(v.label)&&(!r||v.categoryKey===r)&&(!i||v.zoneId===i)&&(!c||c.some(h=>v.accessibility?.includes(h))),P=v.logicalRowId??v.rowId,p=g.get(P);p||(p=[],g.set(P,p)),p.push({seat:v,index:kt(v,C),elig:a}),a&&S.push(v)}),S.length===0)return{labels:[],reason:"sold_out"};let I=!r&&!i&&!l?wn(e,s):new Set,A=v=>I.size?v.reduce((C,a)=>C+(I.has(a.label)?1:0),0):0,E=new Map([...g].map(([v,C])=>[v,qe(C.map(a=>a.seat))])),R=(d??[]).map(v=>E.get(v)).filter(v=>!!v),M=v=>{let C=E.get(v);return!C||!R.length?0:Math.min(...R.map(a=>Ne(C,a)))},w=null,x=v=>{if(!w)return!0;if(u&&v.nonPremium!==w.nonPremium)return v.nonPremium<w.nonPremium;if(l&&v.rowD2!==w.rowD2)return v.rowD2<w.rowD2;if(l&&v.d2!==w.d2)return v.d2<w.d2;if(v.behind!==w.behind)return v.behind<w.behind;if(v.noAisle!==w.noAisle)return v.noAisle<w.noAisle;if(v.orphan!==w.orphan)return v.orphan<w.orphan;if(v.d2!==w.d2)return v.d2<w.d2;let C=v.rowId.localeCompare(w.rowId);return C!==0?C<0:v.startIndex<w.startIndex};for(let[v,C]of g){let a=[...C].sort((p,h)=>p.index-h.index),P=0;for(;P<a.length;){if(!a[P].elig){P++;continue}let p=P;for(;p<a.length&&a[p].elig&&(p===P||a[p].index===a[p-1].index+1);)p++;let h=p-P;for(let y=0;y+o<=h;y++){let L=y,k=h-(y+o),T=L===1||k===1?1:0,_=a.slice(P+y,P+y+o).map(Y=>Y.seat),$={labels:_.map(Y=>Y.label),seats:_,rowId:v,startIndex:a[P+y].index,orphan:T,nonPremium:u?_.reduce((Y,xe)=>Y+(At(xe)?0:1),0):0,behind:A(_),noAisle:m(_),rowD2:M(v),d2:Ne(qe(_),l?s:Mn(_,s))};x($)&&(w=$)}P=p}}return w?{labels:w.labels}:f?{labels:[],reason:S.length?"not_enough_together":"sold_out"}:S.length<o?{labels:[],reason:"not_enough_together"}:{labels:S.map((v,C)=>({seat:v,i:C,rowD2:M(v.logicalRowId??v.rowId),d2:Ne(v,l?s:v.focalPoint??s)})).sort((v,C)=>{if(u){let h=At(v.seat)?0:1,y=At(C.seat)?0:1;if(h!==y)return h-y}if(l&&v.rowD2!==C.rowD2)return v.rowD2-C.rowD2;let a=I.has(v.seat.label)?1:0,P=I.has(C.seat.label)?1:0;if(a!==P)return a-P;if(b){let h=b.has(v.seat.label)?0:1,y=b.has(C.seat.label)?0:1;if(h!==y)return h-y}if(v.d2!==C.d2)return v.d2-C.d2;let p=(v.seat.logicalRowId??v.seat.rowId).localeCompare(C.seat.logicalRowId??C.seat.rowId);return p!==0?p:kt(v.seat,v.i)-kt(C.seat,C.i)}).slice(0,o).map(v=>v.seat.label)}}function ai(e,t,n,o){let r=Math.floor(o.qty),i=Cn(e,n,o),u=t.filter(f=>f.bookingMode==="whole"&&f.capacity===r&&n.has(f.label)&&(!o.categoryKey||f.categoryKey===o.categoryKey)&&(!o.zoneId||f.zoneId===o.zoneId)&&!o.accessibility).map(f=>({table:f,d2:Ne(f.center,o.preferNearest?o.focal:f.focalPoint??o.focal)})).sort((f,b)=>f.d2-b.d2||f.table.label.localeCompare(b.table.label))[0];if(!u)return i;if(!i.labels.length)return{labels:[u.table.label]};if(o.preferAisle&&o.aisleLabels&&i.labels.some(f=>o.aisleLabels.has(f)))return i;let l=new Map(e.map(f=>[f.label,f])),d=i.labels.map(f=>l.get(f)).filter(f=>!!f),c=d.length?Ne(qe(d),Mn(d,o.focal)):Number.POSITIVE_INFINITY;return u.d2<c?{labels:[u.table.label]}:i}var On=e=>Math.max(1,e.fontSize*.6+(e.letterSpacing??0));function si(e,t){let n=e.text.split(/\r?\n/);if(!e.width)return Math.max(1,n.length);let o=Math.max(1,Math.floor(t/On(e))),r=0;for(let i of n){if(!i.length){r+=1;continue}let s=0;for(let u of i.split(/\s+/)){let l=u.length;s&&s+1+l<=o?s+=1+l:(r+=Math.max(1,Math.ceil(l/o)),s=l%o)}}return Math.max(1,r)}function kn(e){let t=e.background?.padding??0,n=e.text.split(/\r?\n/),o=Math.max(1,...n.map(u=>u.length))*On(e),r=e.width??o+t*2,i=Math.max(1,r-t*2),s=si(e,i);return{width:r,height:s*e.fontSize*(e.lineHeight??1.2)+t*2,lineCount:s,padding:t}}var ci=Math.PI/180;function W(e,t){return Math.hypot(e.x-t.x,e.y-t.y)}function li(e,t,n){let o=Math.cos(n),r=Math.sin(n),i=e.x-t.x,s=e.y-t.y;return{x:t.x+i*o-s*r,y:t.y+i*r+s*o}}function An(e,t){return li(e,{x:0,y:0},t*ci)}function Et(e,t,n){return{x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}}function $e(e){let t=0,n=0;for(let r of e)t+=r.x,n+=r.y;let o=e.length||1;return{x:t/o,y:n/o}}function En(e,t){let n=1-t,o=n*n*n,r=3*n*n*t,i=3*n*t*t,s=t*t*t;return{x:o*e.start.x+r*e.control1.x+i*e.control2.x+s*e.end.x,y:o*e.start.y+r*e.control1.y+i*e.control2.y+s*e.end.y}}function Pn(e,t,n=192){if(!Number.isInteger(t)||t<1)throw new Error("Path point count must be a positive integer");if(t===1)return[En(e,.5)];let o=Array.from({length:n+1},(l,d)=>En(e,d/n)),r=new Float64Array(o.length);for(let l=1;l<o.length;l+=1){let d=o[l].x-o[l-1].x,c=o[l].y-o[l-1].y;r[l]=r[l-1]+Math.hypot(d,c)}let i=r[r.length-1];if(i<=1e-9)return Array.from({length:t},()=>({...e.start}));let s=[],u=1;for(let l=0;l<t;l+=1){let d=i*l/(t-1);for(;u<r.length-1&&r[u]<d;)u+=1;let c=r[u-1],f=r[u],b=f===c?0:(d-c)/(f-c);s.push({x:o[u-1].x+(o[u].x-o[u-1].x)*b,y:o[u-1].y+(o[u].y-o[u-1].y)*b})}return s}function q(e,t,n){return Math.max(t,Math.min(n,e))}function ui(e){return q(e,0,1)}function Rn(e){let t=ui(e);return t*t*(3-2*t)}var ve=Math.PI*2;function Se(e){return Number.isFinite(e.x)&&Number.isFinite(e.y)}function di(e,t,n){let o=t-e;if(n){for(;o<0;)o+=ve;for(;o>=ve;)o-=ve}else{for(;o>0;)o-=ve;for(;o<=-ve;)o+=ve}return o}function Qe(e){if(e.version!==1||e.closed!==!0||!Se(e.start)||!Array.isArray(e.segments)||e.segments.length<2||e.segments.length>512)return!1;let t=e.start;for(let n of e.segments){if(!n||!Se(n.end))return!1;if(n.kind==="line"){if(W(t,n.end)<=1e-9)return!1}else if(n.kind==="bezier"){if(!Se(n.control1)||!Se(n.control2)||W(t,n.end)<=1e-9)return!1}else if(n.kind==="arc"){if(!Se(n.center)||!Number.isFinite(n.radius)||n.radius<=1e-6||Math.abs(W(t,n.center)-n.radius)>Math.max(1e-4,n.radius*1e-4)||Math.abs(W(n.end,n.center)-n.radius)>Math.max(1e-4,n.radius*1e-4)||W(t,n.end)<=1e-9)return!1}else return!1;t=n.end}return W(t,e.start)<=1e-4}function fi(e,t,n){let o=1-n;return{x:o**3*e.x+3*o**2*n*t.control1.x+3*o*n**2*t.control2.x+n**3*t.end.x,y:o**3*e.y+3*o**2*n*t.control1.y+3*o*n**2*t.control2.y+n**3*t.end.y}}function Je(e,t=2){if(!Qe(e))throw new Error("Section outline path is invalid");let n=Math.max(.25,t),o=[{...e.start}],r=e.start;for(let i of e.segments){if(i.kind==="line")o.push({...i.end});else if(i.kind==="arc"){let s=Math.atan2(r.y-i.center.y,r.x-i.center.x),u=Math.atan2(i.end.y-i.center.y,i.end.x-i.center.x),l=di(s,u,i.clockwise),d=Math.max(2,Math.ceil(Math.abs(l)*i.radius/n));for(let c=1;c<=d;c+=1){let f=s+l*c/d;o.push({x:i.center.x+Math.cos(f)*i.radius,y:i.center.y+Math.sin(f)*i.radius})}}else{let s=W(r,i.control1)+W(i.control1,i.control2)+W(i.control2,i.end),u=Math.max(2,Math.ceil(s/n));for(let l=1;l<=u;l+=1)o.push(fi(r,i,l/u))}r=i.end}return W(o[o.length-1],o[0])<=1e-4&&o.pop(),o}var pi=45,Pt=150,mi=60;function bi(e){let t=pi/100;if(e<=t)return Pt;let n=Math.min(1,(e-t)/(1-t));return Pt-n*(Pt-mi)}var Ln=.5523;function Tn(e,t){return Math.abs(e.x-t.x)<=1e-6&&Math.abs(e.y-t.y)<=1e-6}function gi(e){let t=[],n=[];for(e.forEach((o,r)=>{Se(o)&&(t.length&&Tn(t[t.length-1],o)||(t.push({x:o.x,y:o.y}),n.push(r)))});t.length>1&&Tn(t[0],t[t.length-1]);)t.pop(),n.pop();return{points:t,sourceIndex:n}}var hi=.5,yi=4/3;function xi(e,t,n){let o=t.x-e.x,r=t.y-e.y,i=Math.hypot(o,r);if(i<=1e-9)return{kind:"line",end:{...t}};let s=-r/i,u=o/i,l=n*yi;return{kind:"bezier",control1:{x:e.x+o/3+s*l,y:e.y+r/3+u*l},control2:{x:e.x+o*2/3+s*l,y:e.y+r*2/3+u*l},end:{...t}}}function _n(e,t){let{points:n,sourceIndex:o}=gi(e),r=n.length;if(r<3)return null;let i=Math.min(100,Math.max(0,t.cornerSmoothing??0))/100,s=t.edgeCurvature,u=new Array(r).fill(0);if(s?.length)for(let M=0;M<r;M+=1){let w=s[o[M]];u[M]=Number.isFinite(w)?Math.min(100,Math.max(-100,w))/100:0}let l=u.some(M=>Math.abs(M)>1e-6);if(i<=0&&!l)return null;let d=t.wideAngleThresholdDeg??bi(i),c=[];for(let M=0;M<r;M+=1)c[M]=W(n[M],n[(M+1)%r]);let f=new Array(r).fill(0);for(let M=0;M<r;M+=1){let w=n[(M-1+r)%r],x=n[M],O=n[(M+1)%r],v={x:w.x-x.x,y:w.y-x.y},C={x:O.x-x.x,y:O.y-x.y},a=Math.hypot(v.x,v.y),P=Math.hypot(C.x,C.y);if(a<=1e-9||P<=1e-9)continue;let p=Math.min(1,Math.max(-1,(v.x*C.x+v.y*C.y)/(a*P))),h=Math.acos(p)*180/Math.PI;if(h<d)continue;let y=Rn((h-d)/(180-d));f[M]=i*y*.5*Math.min(a,P)}for(let M=0;M<r;M+=1){let w=(M+1)%r,x=f[M]+f[w];if(x>c[M]&&x>1e-9){let O=c[M]/x;f[M]*=O,f[w]*=O}}let b=new Array(r),m=new Array(r);for(let M=0;M<r;M+=1){let w=n[(M-1+r)%r],x=n[M],O=n[(M+1)%r];if(f[M]<=1e-6){b[M]={...x},m[M]={...x};continue}let v=W(x,w)||1,C=W(x,O)||1;b[M]={x:x.x+(w.x-x.x)/v*f[M],y:x.y+(w.y-x.y)/v*f[M]},m[M]={x:x.x+(O.x-x.x)/C*f[M],y:x.y+(O.y-x.y)/C*f[M]}}if(f.every(M=>M<=1e-6)&&!l)return null;let g=[],S={...m[0]},I=S,A=(M,w)=>{if(W(I,M)<=1e-9)return;let x=u[w];Math.abs(x)>1e-6?g.push(xi(I,M,x*hi*c[w])):g.push({kind:"line",end:{...M}}),I=M};for(let M=1;M<=r;M+=1){let w=M%r,x=n[w];A(b[w],(M-1)%r),f[w]>1e-6&&W(b[w],m[w])>1e-9&&(g.push({kind:"bezier",control1:Et(b[w],x,Ln),control2:Et(m[w],x,Ln),end:{...m[w]}}),I=m[w])}if(!g.length)return null;let E=g[g.length-1];W(E.end,S)>1e-9&&(E.kind==="line"?E.end={...S}:g.push({kind:"line",end:{...S}}));let R={version:1,closed:!0,start:S,segments:g};return Qe(R)?R:null}function vi(e,t){return Math.abs(e.x-t.x)<=1e-7&&Math.abs(e.y-t.y)<=1e-7}function Fe(e,t,n){return(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x)}function et(e,t,n){let o=Fe(t,n,e);return Math.abs(o)>1e-7?!1:e.x>=Math.min(t.x,n.x)-1e-7&&e.x<=Math.max(t.x,n.x)+1e-7&&e.y>=Math.min(t.y,n.y)-1e-7&&e.y<=Math.max(t.y,n.y)+1e-7}function Si(e,t,n,o){let r=Fe(e,t,n),i=Fe(e,t,o),s=Fe(n,o,e),u=Fe(n,o,t);return(r>1e-7&&i<-1e-7||r<-1e-7&&i>1e-7)&&(s>1e-7&&u<-1e-7||s<-1e-7&&u>1e-7)?!0:Math.abs(r)<=1e-7&&et(n,e,t)||Math.abs(i)<=1e-7&&et(o,e,t)||Math.abs(s)<=1e-7&&et(e,n,o)||Math.abs(u)<=1e-7&&et(t,n,o)}function Ii(e){return e.reduce((t,n,o)=>{let r=e[(o+1)%e.length];return t+n.x*r.y-r.x*n.y},0)}function wi(e){for(let t=0;t<e.length;t+=1){let n=(t+1)%e.length;for(let o=t+1;o<e.length;o+=1){let r=(o+1)%e.length;if(!(t===o||n===o||r===t)&&Si(e[t],e[n],e[o],e[r]))return!0}}return!1}function jn(e){return e.length<3?{ok:!1,code:"too_few_vertices",message:"Add at least three vertices to create a polygon."}:e.length>256?{ok:!1,code:"too_many_vertices",message:"A polygon can contain at most 256 vertices."}:e.some(t=>!Number.isFinite(t.x)||!Number.isFinite(t.y)||Math.abs(t.x)>1e7||Math.abs(t.y)>1e7)?{ok:!1,code:"invalid_coordinate",message:"Every polygon vertex must use a finite coordinate inside the safe chart range."}:e.some((t,n)=>vi(t,e[(n+1)%e.length]))?{ok:!1,code:"duplicate_vertex",message:"Move or remove duplicate neighbouring vertices."}:Math.abs(Ii(e))<2?{ok:!1,code:"degenerate_polygon",message:"The polygon needs a visible enclosed area."}:wi(e)?{ok:!1,code:"self_intersection",message:"Polygon edges cannot cross or touch each other."}:{ok:!0}}var Nn=64;function Mi(e){let t=e.points??[];if(e.kind!=="polygon"||t.length<3||!Array.isArray(e.edgeCurvature))return[];let n=t.map((o,r)=>{let i=e.edgeCurvature[r];return Number.isFinite(i)?Math.min(100,Math.max(-100,i)):0});return n.some(o=>Math.abs(o)>.5)?n:[]}function Ci(e){let t=Mi(e);return t.length?_n(e.points,{edgeCurvature:t}):null}function Rt(e,t=2){let n=Ci(e);return n?Je(n,t):e.points??[]}function $n(e,t){let n=Rt(e);return n.length<3||t.length<3||!t.flatMap((r,i)=>{let s=t[(i+1)%t.length];return[r,{x:(r.x+s.x)/2,y:(r.y+s.y)/2}]}).every(r=>Ie(r,n)||Lt(r,n))?!1:!t.some((r,i)=>{let s=t[(i+1)%t.length];return n.some((u,l)=>Fn(r,s,u,n[(l+1)%n.length]))})}function Fn(e,t,n,o){let r=(d,c,f)=>(c.x-d.x)*(f.y-d.y)-(c.y-d.y)*(f.x-d.x),i=r(e,t,n),s=r(e,t,o),u=r(n,o,e),l=r(n,o,t);return i*s<-1e-9&&u*l<-1e-9}function Dn(e,t){return Ie(e[0],t)||Ie(t[0],e)?!0:e.some((n,o)=>{let r=e[(o+1)%e.length];return t.some((i,s)=>Fn(n,r,i,t[(s+1)%t.length]))})}function Bn(e){let t=new Map,n=new Map;for(let o of e){if(o.type!=="row"||!o.segmentedRow)continue;let r=n.get(o.segmentedRow.groupId)??[];r.push(o),n.set(o.segmentedRow.groupId,r)}for(let[o,r]of n){let i=r.slice().sort((b,m)=>b.segmentedRow.componentIndex-m.segmentedRow.componentIndex),s=i[0]?.segmentedRow?.componentCount??0,u=i[0]?.segmentedRow;if(!u||!(s>=2&&i.length===s&&u?.boundaryBefore==="start"&&i.every((b,m)=>b.segmentedRow?.kind==="segmented-row-v1"&&b.segmentedRow.groupId===o&&b.segmentedRow.componentCount===s&&b.segmentedRow.componentIndex===m&&b.segmentedRow.repeatLabelOnComponents===u.repeatLabelOnComponents&&(m===0?b.segmentedRow.boundaryBefore==="start":b.segmentedRow.boundaryBefore!=="start")&&b.segmentedRow.displayLabel===u.displayLabel)))continue;let d=i.reduce((b,m)=>b+m.seatCount,0),c=0,f=0;for(let b of i)b.segmentedRow.boundaryBefore==="break"&&(c+=1),t.set(b.id,{groupId:o,adjacencyOffset:c,displayOffset:f,displayLabel:u.displayLabel,totalSeats:d,canonical:i[0],viewFromSeatUrl:u.viewFromSeatUrl,viewFromSeatMeta:u.viewFromSeatMeta,confidenceEvidence:u.confidenceEvidence}),c+=b.seatCount,f+=b.seatCount}return t}var Oi="ABCDEFGHIJKLMNOPQRSTUVWXYZ";var ki="abcdefghijklmnopqrstuvwxyz";function Ai(e,t){let n=t.length,o=e+1,r="";for(;o>0;){o-=1;let i=o%n;r=t[i]+r,o=Math.floor(o/n)}return r}function De(e,t=!1){let n=t?ki:Oi;return Ai(Math.max(0,Math.floor(e)-1),n)}var Ei=[[1e3,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50,"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]];function Gn(e){if(!Number.isFinite(e)||e<=0)return String(e);let t=Math.floor(e),n="";for(let[o,r]of Ei)for(;t>=o;)n+=r,t-=o;return n}function Pi(e){let t=new Array(e);return Array.from({length:e},(n,o)=>o).sort((n,o)=>Math.abs(2*n-(e-1))-Math.abs(2*o-(e-1))||n-o).forEach((n,o)=>t[n]=o),t}function nt(e,t){let n=e.seatLabelStart??1,o=e.seatNumbering?.direction??"ltr",r=e.seatNumbering?.step??1,i=e.seatNumbering?.scheme??"decimal",s=e.seatNumbering?.prefix??"",u=e.seatNumbering?.endAt,l=e.seatCount;if(i==="updown"||i==="updown-descending"){let m=Math.ceil(l/2),g=i==="updown"?t<m?n+2*t:n-1+2*(l-t):t<m?n+2*(m-1-t):n+1+2*(t-m);return`${s}${g}`}let d=i==="odd"||i==="even"?2:r,c=u!=null&&Number.isFinite(u)?u-(l-1)*d:n,f=o==="center"?Pi(l)[t]:o==="rtl"?l-1-t:t,b;switch(i){case"odd":{let m=c%2===1?c:c+1;b=String(m+f*2);break}case"even":{let m=c%2===0?c:c+1;b=String(m+f*2);break}case"roman":b=Gn(c+f*r);break;case"letters-upper":b=De(c+f*r,!1);break;case"letters-lower":b=De(c+f*r,!0);break;default:b=String(c+f*r);break}return`${s}${b}`}function Ri(e){return{...e.canonical,seatCount:e.totalSeats,label:e.displayLabel,displayLabel:e.displayLabel}}function ot(e,t,n){return n?.label??`${e.seatLabelBase??e.label}-${nt(e,t)}`}function Tt(e,t,n,o){if(o?.displayLabel)return o.displayLabel;if(e.seatDisplayLabelMode==="number")return nt(e,t);if(!n)return`${e.displayLabel||e.label}-${nt(e,t)}`;let r=Ri(n),i=n.displayOffset+t;return`${n.displayLabel}-${nt(r,i)}`}var Un=999,Li=["clockwise","anticlockwise"],Ti=["table-number","number","letter"];function Kn(e,t){return`${e.label}-${t+1}`}function _i(e,t,n){return e?.direction==="anticlockwise"?Math.max(0,t-1-n):n}function ji(e,t){let n=e.chairNumbering,o=n?.start??1,r=_i(n,Math.max(0,Math.round(e.seatCount)),t);return n?.format==="letter"?De(Math.max(1,o)+r):String(o+r)}function Vn(e,t){let n=ji(e,t);return(e.chairNumbering?.format??"table-number")==="table-number"?`${e.displayLabel??e.label}-${n}`:n}function Hn(e){if(e===void 0)return null;if(!e||typeof e!="object"||Array.isArray(e))return"chairNumbering must be an object";let t=e,n=Object.keys(t).filter(o=>!["start","direction","format"].includes(o));return n.length?`chairNumbering has unsupported field(s): ${n.join(", ")}`:t.start!==void 0&&(!Number.isInteger(t.start)||t.start<0||t.start>Un)?`chairNumbering.start must be a whole number from 0 to ${Un}`:t.direction!==void 0&&!Li.includes(t.direction)?"chairNumbering.direction must be clockwise or anticlockwise":t.format!==void 0&&!Ti.includes(t.format)?"chairNumbering.format must be table-number, number or letter":null}var we=.02291666666666667,rt=1/we,Ni=58,zn=Ni*we,jt=0,Me=3,de=0,ie=120,it=0,at=45,Nt=7,Ce=1.2;function _t(e,t,n,o){return Number.isFinite(e)?Math.max(t,Math.min(n,e)):o}function $i(e){return!Number.isFinite(e)||!Number.isInteger(e)||e<0?0:e<=Nt?e:Me}function Be(e,t={}){let n=_t(t.floorBaseHeightM,de,ie,0),o=Math.min(ie,n+$i(e.elevation)*zn),r=e.height===void 0?o:_t(e.height,de,ie,o),i=_t(e.rake,it,at,0);return{height:r,rake:i}}function Xn(e){let t=e.length;return t<=3?[...e]:[e[Math.floor(t*.25)],e[Math.floor(t*.5)],e[Math.floor(t*.75)]]}function Yn(e,t,n){if(!e.length)return 1/0;if(e.length===1)return Math.hypot(t-e[0].x,n-e[0].y);let o=1/0;for(let r=0;r+1<e.length;r++){let i=e[r],s=e[r+1],u=s.x-i.x,l=s.y-i.y,d=u*u+l*l,c=d>1e-12?((t-i.x)*u+(n-i.y)*l)/d:0;c<0?c=0:c>1&&(c=1);let f=t-(i.x+c*u),b=n-(i.y+c*l);if(Math.abs(f)>=o||Math.abs(b)>=o)continue;let m=Math.hypot(f,b);m<o&&(o=m)}return o}function Fi(e){let t=0,n=0;for(let i of e)t+=i.x,n+=i.y;let o=e.length||1;t/=o,n/=o;let r=0;for(let i of e){let s=Math.hypot(i.x-t,i.y-n);s>r&&(r=s)}return{cx:t,cy:n,r}}function Wn(e,t){return Math.hypot(e.cx-t.cx,e.cy-t.cy)-e.r-t.r}function $t(e,t){let n=1/0;for(let o of Xn(e)){let r=Yn(t,o.x,o.y);r<n&&(n=r)}for(let o of Xn(t)){let r=Yn(e,o.x,o.y);r<n&&(n=r)}return n}function Di(e,t){if(e.length<3)return{pts:e,seatIndices:t};let n=0,o=0;for(let c of e)n+=c.x,o+=c.y;n/=e.length,o/=e.length;let r=-1,i=e[0];for(let c of e){let f=Math.hypot(c.x-n,c.y-o);f>r&&(r=f,i=c)}let s=i.x-n,u=i.y-o,l=Math.hypot(s,u);l>1e-9?(s/=l,u/=l):(s=1,u=0);let d=e.map((c,f)=>({p:c,i:f,t:(c.x-n)*s+(c.y-o)*u})).sort((c,f)=>c.t-f.t);return{pts:d.map(c=>c.p),seatIndices:d.map(c=>t[c.i])}}function Bi(e){let t=e.length;if(t<3)return null;let n=0,o=0;for(let E of e)n+=E.x,o+=E.y;n/=t,o/=t;let r=0,i=0,s=0,u=0,l=0,d=0,c=0;for(let E of e){let R=E.x-n,M=E.y-o;r+=R*R,s+=M*M,i+=R*M,u+=R*R*R,l+=M*M*M,d+=R*M*M,c+=M*R*R}let f=r*s-i*i;if(Math.abs(f)<1e-9)return null;let b=(u+d)/2,m=(l+c)/2,g=(b*s-m*i)/f,S=(m*r-b*i)/f,I=g+n,A=S+o;return!Number.isFinite(I)||!Number.isFinite(A)?null:{cx:I,cy:A}}var Gi=.15;function Ui(e){if(e.length<2)return null;let t=e.map(w=>{let x=0,O=0;for(let v of w.pts)x+=v.x,O+=v.y;return{x:x/w.pts.length,y:O/w.pts.length}}),n=0,o=0;for(let w of t)n+=w.x,o+=w.y;n/=t.length,o/=t.length;let r=0,i=0,s=0;for(let w of t){let x=w.x-n,O=w.y-o;r+=x*x,i+=x*O,s+=O*O}let u=r+s,l=r*s-i*i,d=u/2+Math.sqrt(Math.max(0,u*u/4-l)),c,f;Math.abs(i)>1e-12?(c=d-s,f=i):r>=s?(c=1,f=0):(c=0,f=1);let b=Math.hypot(c,f);if(!(b>1e-12))return null;c/=b,f/=b;let m=0,g=0,S=0;for(let w of e){if(w.pts.length<2)continue;let x=w.pts[0],O=w.pts[w.pts.length-1],v=O.x-x.x,C=O.y-x.y,a=Math.hypot(v,C);if(!(a>1e-9))continue;let P=v/a,p=C/a;m+=(P*P-p*p)*a,g+=2*P*p*a,S+=a}if(S>0&&Math.hypot(m,g)>=Vi*S){let w=Math.atan2(g,m)/2,x=Math.cos(w),O=Math.sin(w);Math.abs(c*x+f*O)>Hi&&(c=-O,f=x)}let I=1/0,A=-1/0,E=[];for(let w of e){let x=1/0,O=-1/0;for(let v of w.pts){let C=v.x*c+v.y*f;C<x&&(x=C),C>O&&(O=C),C<I&&(I=C),C>A&&(A=C)}E.push(O-x)}let R=A-I;return R>1e-9?(E.sort((w,x)=>w-x),E[Math.min(E.length-1,Math.floor(E.length*.9))]/R<=Ki?{x:c,y:f}:null):null}var Ki=.35,Vi=.8,Hi=.7;function Zn(e,t,n,o){let r=new Map;for(let x of n){let O=t[x],v=O.rowId||`__seat-${x}`,C=r.get(v);C||(C={pts:[],idx:[]},r.set(v,C)),C.pts.push({x:O.x,y:O.y}),C.idx.push(x)}if(!r.size)return{sectionId:e,rows:[],blockCount:0};let i=[];for(let[x,O]of r){let v=Di(O.pts,O.idx),C=0;for(let a of v.pts)C+=Math.hypot(a.x-o.x,a.y-o.y);i.push({id:x,pts:v.pts,seatIndices:v.seatIndices,blockId:-1,ordinal:0,blockDepth:0,focalDistance:C/v.pts.length})}let s=i.map(x=>Fi(x.pts)),u=i.length<=256?i.length*(i.length-1)/2:0,l=u?new Float64Array(u):null;l?.fill(Number.NaN);let d=l?new Map(i.map((x,O)=>[x,O])):null,c=(x,O)=>(x>O&&([x,O]=[O,x]),x*(2*i.length-x-1)/2+(O-x-1)),f=(x,O)=>{if(!l)return $t(i[x].pts,i[O].pts);let v=c(x,O),C=l[v];if(!Number.isNaN(C))return C;let a=$t(i[x].pts,i[O].pts);return l[v]=a,a},b=(x,O)=>d?f(d.get(x),d.get(O)):$t(x.pts,O.pts),m=[];for(let x=0;x<i.length;x++){let O=1/0;for(let v=0;v<i.length;v++){if(x===v||Wn(s[x],s[v])>=O)continue;let C=f(x,v);C<O&&(O=C)}Number.isFinite(O)&&m.push(O)}m.sort((x,O)=>x-O);let g=m.length?m[Math.floor(m.length/2)]:1,S=Math.max(g*1.8,1e-6),I=i.map(()=>[]);for(let x=0;x<i.length;x++)for(let O=x+1;O<i.length;O++)Wn(s[x],s[O])>S||f(x,O)<=S&&(I[x].push(O),I[O].push(x));let A=0;for(let x=0;x<i.length;x++){if(i[x].blockId!==-1)continue;let O=A++,v=[x];for(i[x].blockId=O;v.length;){let C=v.pop();for(let a of I[C])i[a].blockId===-1&&(i[a].blockId=O,v.push(a))}}let E=new Map;for(let x of i){let O=E.get(x.blockId)??[];O.push(x),E.set(x.blockId,O)}let R=[];for(let x of i){if(x.pts.length<4)continue;let O=Bi(x.pts);O&&(!Number.isFinite(O.cx)||!Number.isFinite(O.cy)||R.push({x:O.cx,y:O.cy}))}let M=R.length>=2?(()=>{let x=R.map(C=>C.x).sort((C,a)=>C-a),O=R.map(C=>C.y).sort((C,a)=>C-a),v=Math.floor(R.length/2);return{cx:x[v],cy:O[v]}})():null;if(M){let x=p=>Math.hypot(p.x-M.cx,p.y-M.cy),O=1/0,v=-1/0,C=[];for(let p of i){let h=1/0,y=-1/0;for(let L of p.pts){let k=x(L);k<h&&(h=k),k>y&&(y=k)}C.push(y-h),h<O&&(O=h),y>v&&(v=y)}let a=v-O;C.sort((p,h)=>p-h);let P=C[Math.min(C.length-1,Math.floor(C.length*.9))];if(a>1e-9&&P/a<=Gi){let p=i.map(B=>{let Ze=0;for(let Jr of B.pts)Ze+=x(Jr);return{row:B,radius:Ze/B.pts.length}}),h=0,y=0;for(let B of p)h+=B.radius,y+=B.row.focalDistance;h/=p.length,y/=p.length;let L=0;for(let B of p)L+=(B.radius-h)*(B.row.focalDistance-y);if(L<0)for(let B of p)B.radius=-B.radius;let T=1/0;for(let B of p)B.radius<T&&(T=B.radius);p.sort((B,Ze)=>B.radius-Ze.radius);let _=-1,$=-1/0,Y=a/Math.max(1,p.length)*.5,xe=[];for(let B of p)B.radius-$>Y&&(_++,$=B.radius),B.row.ordinal=_,B.row.blockDepth=B.radius-T,xe.push(B.row);return{sectionId:e,rows:xe,blockCount:A}}}let w=[];for(let[,x]of E){let O=Ui(x);if(O){let v=p=>{let h=0;for(let y of p.pts)h+=y.x*O.x+y.y*O.y;return h/p.pts.length};x.sort((p,h)=>v(p)-v(h)),x.length>=2&&x[0].focalDistance>x[x.length-1].focalDistance&&x.reverse();let C=[],a=g*.5;for(let p of x){let h=C[C.length-1];h&&Math.abs(v(p)-v(h[0]))<a?h.push(p):C.push([p])}let P=0;for(let p=0;p<C.length;p++){if(p>0){let h=1/0;for(let y of C[p-1])for(let L of C[p])h=Math.min(h,b(y,L));P+=h}for(let h of C[p])h.ordinal=p,h.blockDepth=P,w.push(h)}}else{let v=1/0;for(let C of x)C.focalDistance<v&&(v=C.focalDistance);x.sort((C,a)=>C.focalDistance-a.focalDistance);for(let C=0;C<x.length;C++)x[C].ordinal=C,x[C].blockDepth=Math.max(0,x[C].focalDistance-v),w.push(x[C])}}return{sectionId:e,rows:w,blockCount:A}}var zi=/^\d{4}-\d{2}-\d{2}$/;function Xi(e){let t=Date.parse(e);return Number.isFinite(t)?zi.test(e)?t+864e5:t:null}function Yi(e,t=Date.now()){if(e.validUntil===void 0){if(e.status!=="approved")return!0;let o=e.assessedAt?Date.parse(e.assessedAt):Number.NaN;return Number.isFinite(o)&&(t instanceof Date?t.getTime():t)<=o+366*864e5}let n=Xi(e.validUntil);return n===null?!1:(t instanceof Date?t.getTime():t)<n}function Wi(e,t,n){return!(e.eventConfigurationId&&e.eventConfigurationId!==t||e.eventConfigurationVersion!==void 0&&e.eventConfigurationVersion!==n)}function Zi(e){return e.status!=="draft"&&e.status!=="retracted"}function qi(e,t){return e.status===void 0?t===void 0:e.status!=="approved"?!0:typeof t=="string"&&typeof e.basisSha256=="string"&&e.basisSha256===t}function qn(e,t={}){return!!e&&Zi(e)&&Wi(e,t.activeConfigurationId,t.activeConfigurationVersion)&&qi(e,t.activeBasisSha256)&&Yi(e,t.now)}function Qn(e){return!!e.referenceImage?.assetId&&!!e.backgroundImage?.assetId&&e.referenceImage.assetId!==e.backgroundImage.assetId}var Qi=36,Ji=160;function Jn(e,t=360){let n=q(Math.round(Number.isFinite(e)?e:1),1,40),o=q(Number.isFinite(t)?t:360,120,360);return Math.round(q(n*4*(360/o),Qi,Ji))}var ea=new Set(["pitch-football","rink-hockey","track-athletics","oval-cricket","pitch-rugby","diamond-baseball","court-basketball","court-tennis","ring-boxing"]);function ta(e){return!!e&&ea.has(e)}var eo=1.1;var Lc=Math.PI*2;var Tc=(()=>{let t={x:0,y:52},n=25,o={x:70,y:t.y-70},r=(o.x*o.x+o.y*o.y-4900)/(2*(o.y+70)),i=r+70,s=[],u=Math.atan2(o.y-r,o.x),l=Math.atan2(o.y-r,-o.x);for(let d=0;d<=24;d++){let c=u+(l-u)*d/24;s.push({x:i*Math.cos(c),y:r+i*Math.sin(c)})}return{half:70,home:t,backstop:n,fence:s}})();function to(e){return ta(e)}var na=/^data:image\/(?:png|jpe?g|webp|gif|avif);base64,[a-z0-9+/]+={0,2}$/i,oa=/[\s"'<>`\\]/;function Ft(e){if(typeof e!="string"||!e||e.length>2e6||e!==e.trim())return!1;if(e.startsWith("data:"))return na.test(e);if(oa.test(e))return!1;try{let t=new URL(e);return t.protocol==="https:"&&!t.username&&!t.password}catch{return!1}}var no=2e5,st=1e5,Dt="large_venue_inventory";function oo(e){return e?.includes(Dt)?2e5:1e5}function ra(e){if((e.kind==="polygon"||e.kind==="polyline"||e.kind==="line")&&e.points&&e.points.length>=2)return e.kind==="polygon"?Rt(e,6):e.points;if(e.x==null||e.y==null||e.width==null||e.height==null)return null;let t=e.x,n=e.y,o=e.width,r=e.height;return[{x:t,y:n},{x:t+o,y:n},{x:t+o,y:n+r},{x:t,y:n+r}]}function ia(e,t,n){let o=n*Math.PI/180,r=Math.cos(o),i=Math.sin(o),s=e.x-t.x,u=e.y-t.y;return{x:t.x+s*r-u*i,y:t.y+s*i+u*r}}function ro(e){let t=ra(e);if(!t||t.length<2)return null;let n=e.rotation??0,o=Math.abs(n)<1e-6?t:t.map(l=>ia(l,{x:t.reduce((d,c)=>d+c.x,0)/t.length,y:t.reduce((d,c)=>d+c.y,0)/t.length},n)),r=1/0,i=1/0,s=-1/0,u=-1/0;for(let l of o)r=Math.min(r,l.x),i=Math.min(i,l.y),s=Math.max(s,l.x),u=Math.max(u,l.y);return!Number.isFinite(r)||s-r<1e-6||u-i<1e-6?null:{minX:r,minY:i,maxX:s,maxY:u}}var aa=5,sa=3,ca=.92,la=1.9,ua=2,da=.6,fa=1,pa=.06;function ma(e){return e.heightM!==void 0?e.heightM:e.stageKind==="ring-boxing"?eo:to(e.stageKind)?pa:fa}function io(e){let t=1/0,n=1/0,o=-1/0,r=-1/0,i=-1/0;for(let s of ee(e)){let u=s.baseHeightM??0;for(let l of s.objects){if(l.type!=="shape"||l.role!=="stage")continue;let d=ro(l);d&&(t=Math.min(t,d.minX),n=Math.min(n,d.minY),o=Math.max(o,d.maxX),r=Math.max(r,d.maxY),i=Math.max(i,u+ma(l)))}}return!Number.isFinite(t)||!Number.isFinite(i)?null:{minX:t,minY:n,maxX:o,maxY:r,deckTopM:i}}function ba(e,t,n,o){let r=1/0,i=1/0,s=-1/0,u=-1/0;for(let m of e)Number.isFinite(m.eyeHeightM)&&(r=Math.min(r,m.x),s=Math.max(s,m.x),i=Math.min(i,m.y),u=Math.max(u,m.y));if(!Number.isFinite(r))return null;let l=r*t,d=i*t,c=Math.max(1,Math.ceil((s-r)*t/n)+1),f=Math.max(1,Math.ceil((u-i)*t/n)+1),b=new Float64Array(c*f).fill(-1/0);for(let m of e){if(!Number.isFinite(m.eyeHeightM))continue;let g=m.eyeHeightM-Ce,S=Math.min(c-1,Math.max(0,Math.floor((m.x*t-l)/n))),A=Math.min(f-1,Math.max(0,Math.floor((m.y*t-d)/n)))*c+S,E=g+o;E>b[A]&&(b[A]=E)}return{cellM:n,minX:l,minY:d,cols:c,rows:f,top:b}}function ga(e,t,n){let o=Math.floor((t-e.minX)/e.cellM),r=Math.floor((n-e.minY)/e.cellM);return o<0||r<0||o>=e.cols||r>=e.rows?-1/0:e.top[r*e.cols+o]}function ao(e,t,n={}){let o=new Map;if(!t||!e.length)return o;let r=n.metresPerChartUnit??we,i=n.cellM??da,s=n.chairBackM??ca,u=n.selfRowSkipM??ua,l=n.clearThreshold??.9,d=n.partialThreshold??.25,c=Math.max(1,n.columns??aa),f=Math.max(1,n.rows??sa),b=ba(e,r,i,s);if(!b)return o;let m=(t.maxX-t.minX)*r,g=(t.maxY-t.minY)*r,S=m>=g,I=(t.minX+t.maxX)/2*r,A=(t.minY+t.maxY)/2*r,E=[];for(let M=0;M<c;M++){let w=(M+.5)/c-.5,x=S?I+w*m:I,O=S?A:A+w*g;for(let v=0;v<f;v++){let C=t.deckTopM+(f===1?0:v/(f-1)*la);E.push({x,y:O,z:C})}}let R=i/2;for(let M of e){if(!Number.isFinite(M.eyeHeightM))continue;let w=M.x*r,x=M.y*r,O=M.eyeHeightM,v=0,C=1/0;for(let P of E){let p=P.x-w,h=P.y-x,y=Math.hypot(p,h);if(!(y>u)){v++;continue}let L=p/y,k=h/y,T=0;for(let _=u;_<y;_+=R){let $=ga(b,w+L*_,x+k*_);if(!(!Number.isFinite($)||$>=O)&&$>O+(P.z-O)*_/y){T=_;break}}T?C=Math.min(C,T):v++}let a=v/E.length;a>=l||o.set(M.id,{seatId:M.id,mark:a<d?"obstructedView":"restrictedView",visibleFraction:a,totalRays:E.length,atDistanceM:Number.isFinite(C)?C:0})}return o}function so(e,t){if(!t.size)return 0;let n=0;for(let o of e){let r=t.get(o.id);if(!r)continue;let i=o.commercial;i?.restrictedView!==void 0||i?.obstructedView!==void 0||(o.commercial={...i,[r.mark]:!0},n++)}return n}function Bt(e){return e?e.accessibility?.length?e.wheelchairSpaceType&&!e.accessibility.includes("wheelchair")?["wheelchair",...e.accessibility]:e.accessibility:e.wheelchairSpaceType?["wheelchair"]:e.accessible?["wheelchair"]:[]:[]}var lt=Math.PI/180;var Ge=16;function Gt(e,t,n,o){let r=n*lt,i=Math.cos(r),s=Math.sin(r);return{x:o.x+e*i-t*s,y:o.y+e*s+t*i}}function fo(e){let{seatCount:t,seatSpacing:n,curve:o,rotation:r,origin:i}=e,s=[];if(e.path)return Pn(e.path,t);if(t<=1)return t===1&&s.push({x:i.x,y:i.y}),s;if(o===0){for(let d=0;d<t;d++)s.push(Gt(d*n,0,r,i));return s}let u=o/(t-1)*lt,l=n/(2*Math.sin(Math.abs(u)/2));for(let d=0;d<t;d++){let c=d*u,f=l*Math.sin(c),b=-l+l*Math.cos(c);s.push(Gt(f,b,r,i))}return s}function po(e){let t=new Map;if(e.overrides)for(let n of e.overrides)t.set(n.index,n);return t}function ut(e){let t=new Set((e.overrides??[]).filter(n=>n.skip&&Number.isInteger(n.index)&&n.index>=0&&n.index<e.seatCount).map(n=>n.index));return Math.max(0,e.seatCount-t.size)}function ha(e,t){let n=po(e);return fo(e).map((o,r)=>{let i=n.get(r),s=Bt(i),u=ot(e,r,i),l={...e.commercial,...i?.commercial};return{index:r,x:o.x+(i?.dx??0),y:o.y+(i?.dy??0),label:u,displayLabel:Tt(e,r,t,i),categoryKey:i?.categoryKey??e.categoryKey,skipped:!!i?.skip,accessible:s.length>0,accessibility:s,wheelchairSpaceType:i?.wheelchairSpaceType,commercial:Object.values(l).some(d=>d!==void 0&&d!==!1&&d!=="")?l:void 0,glyph:i?.glyph,viewUrl:i?.viewFromSeatUrl??e.viewFromSeatUrl,viewMeta:i?.viewFromSeatUrl?i.viewFromSeatMeta:e.viewFromSeatMeta,labelStyle:i?.labelStyle??e.seatLabelStyle}})}function Q(e){let t=[];for(let n of ha(e))n.skipped||t.push({id:`${e.id}:${n.index}`,label:n.label,displayLabel:n.displayLabel===n.label?void 0:n.displayLabel,x:n.x,y:n.y,rowId:e.id,categoryKey:n.categoryKey,accessible:n.accessible||void 0,accessibility:n.accessibility.length?n.accessibility:void 0,wheelchairSpaceType:n.wheelchairSpaceType,commercial:n.commercial,glyph:n.glyph,viewUrl:n.viewUrl,viewMeta:n.viewMeta,labelStyle:n.labelStyle});return t}function Ue(e){if(e.seatCountsBySide)return{...e.seatCountsBySide};let t=e.sides&&e.sides.length?e.sides:["top","bottom"],n=["top","bottom","left","right"].filter(i=>t.includes(i)),o={top:0,bottom:0,left:0,right:0};if(!n.length)return o;let r=Math.max(0,Math.round(e.seatCount));for(let i=0;i<r;i++)o[n[i%n.length]]+=1;return o}function mo(e){let t=[],n=Math.max(0,Math.round(e.seatCount));if(n===0)return t;let o=new Map((e.overrides??[]).map(c=>[c.index,c])),r=(c,f,b,m)=>{let g=o.get(c),S=Bt(g),I=g?.label??Kn(e,c);return{index:c,label:I,displayLabel:g?.displayLabel??Vn(e,c),x:f+(g?.dx??0),y:b+(g?.dy??0),categoryKey:g?.categoryKey??e.categoryKey,skipped:!!g?.skip,accessible:S.length>0,accessibility:S,wheelchairSpaceType:g?.wheelchairSpaceType,commercial:g?.commercial,glyph:g?.glyph,viewUrl:g?.viewFromSeatUrl,viewMeta:g?.viewFromSeatUrl?g.viewFromSeatMeta:void 0,labelStyle:g?.labelStyle,...m?{side:m}:{}}};if(e.shape==="round"){let c=(e.radius??40)+Ge,f=e.rotation*lt,b=Math.max(0,Math.min(360,e.seatArc??360));if(b>=360||n===1){for(let I=0;I<n;I++){let A=f+I/n*2*Math.PI;t.push(r(I,e.center.x+c*Math.cos(A),e.center.y+c*Math.sin(A)))}return t}let m=b*lt,g=(2*Math.PI-m)/2,S=f+g;for(let I=0;I<n;I++){let A=S+I/(n-1)*m;t.push(r(I,e.center.x+c*Math.cos(A),e.center.y+c*Math.sin(A)))}return t}let i=e.width??80,s=e.height??50,u=Ue(e),l=["top","bottom","left","right"],d=0;for(let c of l){let f=u[c];for(let b=0;b<f;b++){let m,g;c==="top"?(m=-i/2+(b+.5)*i/f,g=-s/2-Ge):c==="bottom"?(m=-i/2+(b+.5)*i/f,g=s/2+Ge):c==="left"?(m=-i/2-Ge,g=-s/2+(b+.5)*s/f):(m=i/2+Ge,g=-s/2+(b+.5)*s/f);let S=Gt(m,g,e.rotation,e.center);t.push(r(d++,S.x,S.y,c))}}return t}function bo(e){return e.bookAsWhole||e.variableOccupancy?Math.max(0,Math.round(e.seatCount)):mo(e).filter(t=>!t.skipped).length}function te(e){return mo(e).filter(t=>!t.skipped).map(t=>({id:`${e.id}:${t.index}`,label:t.label,...t.displayLabel!==t.label?{displayLabel:t.displayLabel}:{},x:t.x,y:t.y,rowId:e.id,categoryKey:t.categoryKey,...t.accessible?{accessible:!0}:{},...t.accessibility.length?{accessibility:t.accessibility}:{},...t.wheelchairSpaceType?{wheelchairSpaceType:t.wheelchairSpaceType}:{},...t.commercial?{commercial:t.commercial}:{},...t.glyph?{glyph:t.glyph}:{},...t.viewUrl?{viewUrl:t.viewUrl}:{},...t.viewUrl&&t.viewMeta?{viewMeta:t.viewMeta}:{},...t.labelStyle?{labelStyle:t.labelStyle}:{}}))}function go(e){return[{id:`${e.id}:0`,label:e.label,...e.displayLabel&&e.displayLabel!==e.label?{displayLabel:e.displayLabel}:{},x:e.center.x,y:e.center.y,rowId:e.id,categoryKey:e.categoryKey,kind:"booth",...e.commercial?.note?{commercial:{note:e.commercial.note}}:{}}]}function Ie(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[o].x,s=t[o].y,u=t[r].x,l=t[r].y;s>e.y!=l>e.y&&e.x<(u-i)*(e.y-s)/(l-s)+i&&(n=!n)}return n}function Lt(e,t){return t.some((n,o)=>{let r=t[(o+1)%t.length],i=(e.y-n.y)*(r.x-n.x)-(e.x-n.x)*(r.y-n.y);if(Math.abs(i)>1e-7)return!1;let s=(e.x-n.x)*(r.x-n.x)+(e.y-n.y)*(r.y-n.y),u=(r.x-n.x)**2+(r.y-n.y)**2;return s>=-1e-7&&s<=u+1e-7})}function tt(e){return Array.isArray(e)?e.filter(t=>Array.isArray(t)&&t.length>=3):[]}function re(e,t,n){return Ie(e,t)&&!tt(n).some(o=>Ie(e,o)||Lt(e,o))}function ct(e){if(!e.length)return{x:0,y:0};let t=0,n=0;for(let o of e)t+=o.x,n+=o.y;return{x:t/e.length,y:n/e.length}}function ae(e){switch(e.type){case"row":{let t=fo(e),n=po(e),o=0,r=0,i=0;for(let s=0;s<t.length;s++){let u=n.get(s);u?.skip||(o+=t[s].x+(u?.dx??0),r+=t[s].y+(u?.dy??0),i++)}return i?{x:o/i,y:r/i}:{x:e.origin.x,y:e.origin.y}}case"table":case"booth":return{x:e.center.x,y:e.center.y};case"gaArea":return ct(e.points);case"section":return ct(e.outline);case"text":return{x:e.position.x,y:e.position.y};case"shape":return e.points&&e.points.length?ct(e.points):e.x!=null&&e.y!=null&&e.width!=null&&e.height!=null?{x:e.x+e.width/2,y:e.y+e.height/2}:{x:e.x??0,y:e.y??0};case"decorImage":return{x:e.x+e.width/2,y:e.y+e.height/2}}}function co(e,t){return e.length===t.length&&e.every((n,o)=>n.x===t[o].x&&n.y===t[o].y)}function ya(e,t){if(e.type!=="gaArea"||!co(e.points,t.outline))return!1;let n=tt(e.holes),o=tt(t.holes);return n.length===o.length&&n.every((r,i)=>co(r,o[i]))}function Ut(e,t,n=e.filter(r=>r.type==="section"),o=ae(t)){let r="referenceInventorySource"in t?t.referenceInventorySource?.logicalSectionId:void 0;return(r?n.find(s=>(s.logicalSectionId??s.id)===r&&(ya(t,s)||re(o,s.outline,s.holes))):void 0)??n.find(s=>re(o,s.outline,s.holes))}function ee(e){return e.floors&&e.floors.length?e.floors:[{id:"floor-0",name:"Main",objects:e.objects,focalPoint:e.focalPoint,referenceImage:e.referenceImage,backgroundImage:e.backgroundImage}]}function Ke(e){return e.floors&&e.floors.length?e.floors.flatMap(t=>t.objects):e.objects}function lo(e,t,n,o,r,i,s,u,l){let d=[],c=e.filter(S=>S.type==="section"),f=Bn(e),b=S=>!S?.eventConfigurationId||S.eventConfigurationId===o&&(S.eventConfigurationVersion===void 0||S.eventConfigurationVersion===l),m=S=>qn(S,{activeConfigurationId:o,activeConfigurationVersion:l,activeBasisSha256:r,now:u}),g=(S,I)=>m(S)?{...S,coverage:I}:void 0;for(let S of e){let I=[];if(S.type==="row"?I=Q(S):S.type==="table"?I=te(S):S.type==="booth"&&(I=go(S)),!I.length)continue;for(let w of I)w.viewUrl&&!b(w.viewMeta)&&(w.viewUrl=void 0,w.viewMeta=void 0);if(S.type==="row"){let w=f.get(S.id);if(w){let x=new Map((S.overrides??[]).map(O=>[O.index,O]));for(let O of I){let v=Number(O.id.slice(O.id.lastIndexOf(":")+1));if(!Number.isInteger(v))continue;O.logicalRowId=w.groupId,O.logicalSeatIndex=w.adjacencyOffset+v,x.get(v)?.displayLabel||(O.displayLabel=Tt(S,v,w)),!O.viewUrl&&w.viewFromSeatUrl&&b(w.viewFromSeatMeta)&&(O.viewUrl=w.viewFromSeatUrl,O.viewMeta=w.viewFromSeatMeta);let C=x.get(v)?.confidenceEvidence;O.confidenceEvidence=g(C,"exact-seat")??g(S.confidenceEvidence,"row-representative")??g(w.confidenceEvidence,"row-representative")}}}let A=Ut(e,S,c,S.type==="row"?ct(I):ae(S)),E=A?.viewFromSeatUrl,M=(A?.zone?t?.find(w=>w.id===A.zone):void 0)?.focalPoint??n;for(let w of I){if(!w.confidenceEvidence){let x=Number(w.id.slice(w.id.lastIndexOf(":")+1)),O=(S.type==="row"||S.type==="table")&&Number.isInteger(x)?S.overrides?.find(v=>v.index===x)?.confidenceEvidence:void 0;w.confidenceEvidence=g(O,"exact-seat")??(S.type==="row"?g(S.confidenceEvidence,"row-representative"):void 0)}w.confidenceEvidence??=g(A?.confidenceEvidence,"section-representative")??(s?g(s.evidence,s.coverage):void 0),!w.viewUrl&&E&&b(A?.viewFromSeatMeta)&&(w.viewUrl=E,w.viewMeta=A?.viewFromSeatMeta),!w.viewUrl&&i&&b(i.meta)&&(w.viewUrl=i.url,w.viewMeta=i.meta),A&&(w.sectionId=A.logicalSectionId??A.id),A?.zone&&(w.zoneId=A.zone),M&&(w.focalPoint={...M})}d.push(...I)}return d}function ho(e,t={}){if(e.floors?.length){let o=[];for(let r of e.floors){let i=r.focalPoint??e.focalPoint,s=r.viewFromSeatUrl?{url:r.viewFromSeatUrl,meta:r.viewFromSeatMeta}:e.viewFromSeatUrl?{url:e.viewFromSeatUrl,meta:e.viewFromSeatMeta}:void 0,u=r.confidenceEvidence?{evidence:r.confidenceEvidence,coverage:"floor-representative"}:e.confidenceEvidence?{evidence:e.confidenceEvidence,coverage:"venue-representative"}:void 0,l=lo(r.objects,e.zones,i,e.eventConfigurationId,e.confidenceBasisSha256,s,u,t.now,t.eventConfigurationVersion??e.eventConfigurationVersion);t.resolveEyeHeights!==!1&&uo(r.objects,r.focalPoint??e.focalPoint,r.baseHeightM??0,l);for(let d of l)d.floorId=r.id;for(let d of l)o.push(d)}return o}let n=lo(e.objects,e.zones,e.focalPoint,e.eventConfigurationId,e.confidenceBasisSha256,e.viewFromSeatUrl?{url:e.viewFromSeatUrl,meta:e.viewFromSeatMeta}:void 0,e.confidenceEvidence?{evidence:e.confidenceEvidence,coverage:"venue-representative"}:void 0,t.now,t.eventConfigurationVersion??e.eventConfigurationVersion);return t.resolveEyeHeights!==!1&&uo(e.objects,e.focalPoint,t.floorBaseHeightM??0,n),xa(e,n,t)}function xa(e,t,n){return!n.deriveRestrictedView||e.derivedRestrictedView===!1||n.resolveEyeHeights===!1||so(t,ao(t,io(e))),t}function uo(e,t,n,o){let r=e.filter(f=>f.type==="section"),i=n>0||r.some(f=>f.height!==void 0||f.rake!==void 0||(f.elevation??0)>0);if(!r.length||!i||!t){for(let f of o)f.eyeHeightM=n+Ce;return}let s=new Array(o.length),u=new Map;for(let f of r)u.has(f.id)||u.set(f.id,f);let l=new Map,d=new Map;for(let f=0;f<o.length;f++){let b=o[f],g=(b.sectionId?u.get(b.sectionId)??r.find(I=>I.logicalSectionId===b.sectionId&&re({x:b.x,y:b.y},I.outline,I.holes)):void 0)??r.find(I=>re({x:b.x,y:b.y},I.outline,I.holes))??null;if(s[f]=g,!g)continue;l.has(g.id)||l.set(g.id,Be(g,{floorBaseHeightM:n}));let S=d.get(g.id);S?S.push(f):d.set(g.id,[f])}let c=new Array(o.length).fill(void 0);for(let[f,b]of d){let m=l.get(f);if(!m)continue;let g=m.rake>0?Math.tan(m.rake*Math.PI/180):0,S=Zn(f,o,b,t);for(let I of S.rows){let A=I.blockDepth*we*g,E=m.height+A;for(let R of I.seatIndices)c[R]=E}}for(let f=0;f<o.length;f++){let b=o[f],m=s[f];if(!m){b.eyeHeightM=n+Ce;continue}let g=l.get(m.id);b.eyeHeightM=(c[f]??g.height)+Ce}}var dt="__sl_ga__";function se(e){return e.startsWith(dt)}var va=dt,fe=1e5;function yo(e,t){return`${va}${encodeURIComponent(e)}__${t+1}`}function ft(e){let t=e.inventorySegments;if(t===void 0)return!0;if(!Array.isArray(t)||t.length<1||t.length>256)return!1;let n=0,o=new Map;for(let r of t){if(!r||typeof r.sourceAreaId!="string"||!r.sourceAreaId.trim()||r.sourceAreaId.length>160||!Number.isInteger(r.startIndex)||r.startIndex<0||!Number.isInteger(r.count)||r.count<1||r.startIndex+r.count>fe||(n+=r.count,n>fe))return!1;let i=o.get(r.sourceAreaId)??[],s=r.startIndex+r.count;if(i.some(u=>r.startIndex<u.end&&s>u.start))return!1;i.push({start:r.startIndex,end:s}),o.set(r.sourceAreaId,i)}return n===e.capacity}function Kt(e){let t=Math.min(fe,Math.max(0,Math.floor(e.capacity)));return e.inventorySegments===void 0?t?[{sourceAreaId:e.id,startIndex:0,count:t}]:[]:ft(e)?e.inventorySegments.map(n=>({...n})):[]}var pe=100,Sa=`An area sold to one party holds at most ${pe} guests.`;function ce(e){return e.variableOccupancy?"variable":e.bookAsWhole?"whole":null}function Ia(e){return ce(e)==="variable"?{min:e.minOccupancy??1,max:e.maxOccupancy??e.capacity}:{min:e.capacity,max:e.capacity}}function Vt(e){return Ht(e,2)}function Ht(e,t){return t===2&&ce(e)&&e.inventorySegments===void 0?e.label.trim()?[e.label]:[]:Kt(e).flatMap(n=>Array.from({length:n.count},(o,r)=>yo(n.sourceAreaId,n.startIndex+r)))}function xo(e){let t=e.wheelchairPlaces;return!Number.isInteger(t)||t<=0?0:Math.min(t,Math.max(0,Math.floor(e.capacity)))}function wa(e,t=2){let n=xo(e);if(!n)return new Set;let o=Ht(e,t);return o.length===1&&ce(e)&&t===2?new Set(o):new Set(o.slice(Math.max(0,o.length-n)))}function Ma(e,t){if(e.inventorySegments===void 0||t===e.capacity)return e.inventorySegments;if(t<e.capacity)return;let n=Kt(e);if(!n.length)return;let o=t-e.capacity;if(!o)return n;let i=n.filter(u=>u.sourceAreaId===e.id).reduce((u,l)=>Math.max(u,l.startIndex+l.count),0),s=n[n.length-1];if(s?.sourceAreaId===e.id&&s.startIndex+s.count===i)s.count+=o;else{if(n.length>=256)return;n.push({sourceAreaId:e.id,startIndex:i,count:o})}return n}function Ca(e){return Ke(e).filter(t=>t.type==="gaArea")}function Oa(e){return e.type==="row"||e.type==="table"||e.type==="booth"||e.type==="gaArea"}function vo(e){let t=new Map;for(let n of ee(e)){let o=n.objects.filter(r=>r.type==="section");if(o.length)for(let r of n.objects){if(!Oa(r))continue;let i=Ut(n.objects,r,o);i&&t.set(r.id,i.logicalSectionId??i.id)}}return t}var ka=.15,Aa=1.6;function So(e){return q(e??1,ka,Aa)}var Ea=/^#[0-9a-fA-F]{6}$/,Pa=/^#?([\da-f]{3}|[\da-f]{6})$/i;function Io(e){return typeof e=="string"&&Ea.test(e)}function Oe(e){let t=Pa.exec((e??"").trim());if(!t)return null;let n=t[1].length===3?t[1].split("").map(r=>r+r).join(""):t[1],o=parseInt(n,16);return[o>>16&255,o>>8&255,o&255]}function wo(e,t){let n=i=>{let s=Oe(i);if(!s)return null;let u=E=>{let R=E/255;return R<=.04045?R/12.92:((R+.055)/1.055)**2.4},l=u(s[0]),d=u(s[1]),c=u(s[2]),f=(.4124*l+.3576*d+.1805*c)/.95047,b=.2126*l+.7152*d+.0722*c,m=(.0193*l+.1192*d+.9505*c)/1.08883,g=E=>E>.008856?Math.cbrt(E):7.787*E+16/116,S=g(f),I=g(b),A=g(m);return[116*I-16,500*(S-I),200*(I-A)]},o=n(e),r=n(t);return o&&r?Math.hypot(o[0]-r[0],o[1]-r[1],o[2]-r[2]):null}function zt(e){let t=e/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4}function Xt(e){return .2126*zt(e[0])+.7152*zt(e[1])+.0722*zt(e[2])}function J(e,t){let n=Oe(e),o=Oe(t);if(!n||!o)return null;let r=Xt(n),i=Xt(o);return(Math.max(r,i)+.05)/(Math.min(r,i)+.05)}function Ra(e){let t=1/0,n=1/0,o=-1/0,r=-1/0,i=!1;for(let s of e)!Number.isFinite(s.x)||!Number.isFinite(s.y)||(i=!0,s.x<t&&(t=s.x),s.y<n&&(n=s.y),s.x>o&&(o=s.x),s.y>r&&(r=s.y));return i?{minX:t,minY:n,maxX:o,maxY:r}:null}function Mo(e){let t=Ra(e);return t?La(t):null}function La(e){return{x:e.minX,y:e.minY,width:e.maxX-e.minX,height:e.maxY-e.minY}}var ke=[{key:"wheelchair",label:"Wheelchair space",short:"Wheelchair",icon:"\u267F"},{key:"companion",label:"Companion seat",short:"Companion",icon:"\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}"},{key:"semi-ambulatory",label:"Semi-ambulatory (limited mobility)",short:"Limited mobility",icon:"\u{1F9AF}"},{key:"designated-aisle",label:"Designated aisle / transfer seat",short:"Aisle transfer",icon:"AS"},{key:"step-free",label:"Step-free accessible seat",short:"Step-free",icon:"SF"},{key:"hearing",label:"Assistive listening",short:"Hearing",icon:"\u{1F9BB}"},{key:"cart",label:"CART live-caption view",short:"CART captions",icon:"CC"},{key:"sign-language",label:"Sign-language view",short:"Sign language",icon:"\u{1F91F}"},{key:"low-vision",label:"Blind / low-vision viewing",short:"Low vision",icon:"LV"},{key:"sensory-friendly",label:"Quiet / sensory-friendly seating",short:"Sensory-friendly",icon:"QS"},{key:"plus-size",label:"Plus-size seat",short:"Plus-size",icon:"\u{1F4BA}"},{key:"lift-armrest",label:"Lift-up armrest",short:"Lift armrest",icon:"\u2195\uFE0F"}],bl=new Map(ke.map(e=>[e.key,e]));var Ta=[{key:"obstructedView",label:"Obstructed view",short:"Obstructed",icon:"\u26D4"},{key:"restrictedView",label:"Restricted view",short:"Restricted",icon:"\u{1F441}"},{key:"premium",label:"Premium seat",short:"Premium",icon:"\u2605"}],gl=new Map(Ta.map(e=>[e.key,e]));var Yt=8,Wt=24,Co=["start","end","both","none"],Oo=["inline","corner","peninsula","island"],_a=["reference-focal","bar","entrance","exit","restroom","screen","sound","concession","coat","wall","rail","suite","obstruction"],hl=new Set(_a);var Eo=7;var Po=10;var qt=.85,Ro=12,Lo=4.5;var ja=3,ko="#000000",Ao="#ffffff",Na=24,$a=18.67;function To(e,t=400){return e>=Na||t>=700&&e>=$a?ja:Lo}var Fa={wheelchair:"M7.8 4.5a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0zM8 7L10.5 7L10.5 15L8 15ZM8 12.5L18 12.5L18 15L8 15ZM16 15L18 15L18 18L16 18ZM5.5 16a5.5 5.5 0 1 0 11 0a5.5 5.5 0 1 0 -11 0zM8 16a3 3 0 1 1 6 0a3 3 0 1 1 -6 0z",companion:"M5.5 6.5a3 3 0 1 0 6 0a3 3 0 1 0 -6 0zM4.5 18.5L6 11.5L11 11.5L12.5 18.5ZM12.5 7.5a3 3 0 1 0 6 0a3 3 0 1 0 -6 0zM11.5 19L13 12.5L18 12.5L19.5 19Z","semi-ambulatory":"M8.3 3.8a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0zM9 6.2L12 6.6L11 13.5L8.6 13L9 6.2ZM8.6 13L11 13L9.5 21L7 21ZM10.4 13L12.6 13L13.6 21L11.2 21ZM11.2 7.2L14 8L14.6 9.6L11.9 8.9ZM14.4 6.8L15.9 6.8L16.4 21L14.8 21Z","designated-aisle":"M3 5L6 5L6 14L3 14ZM3 12L13 12L13 15L3 15ZM5 15L7 15L7 20L5 20ZM11 15L13 15L13 20L11 20ZM13 7L20 7L17 4L19 4L23 8.5L19 13L17 13L20 10L13 10Z","step-free":"M4 4.5a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0zM4.4 7L7.5 7L7.5 13L11 15L9.5 17L5 14L4.4 7ZM2 19L8 19L17 10L22 10L22 13L18 13L10 21L2 21Z",hearing:"M15.5 3.5C9 2.2 5.5 6 5.5 11.5C5.5 16 8 19.5 10.5 21C13.2 22.6 16.4 20.8 15.4 18C14.8 16.4 12.9 16.1 13 14C13.1 11.9 15.8 11.4 15.8 8.5C15.8 5.4 13 4 15.5 3.5Z",cart:"M5.5 6L18.5 6a2.5 2.5 0 0 1 2.5 2.5L21 15.5a2.5 2.5 0 0 1 -2.5 2.5L11 18L7 20.5L7.5 18L5.5 18a2.5 2.5 0 0 1 -2.5 -2.5L3 8.5a2.5 2.5 0 0 1 2.5 -2.5zM6.5 11L17.5 11L17.5 12.6L6.5 12.6zM6.5 14L17.5 14L17.5 15.6L6.5 15.6z","sign-language":"M7 11L17 11L17 18a2 2 0 0 1 -2 2L9 20a2 2 0 0 1 -2 -2zM7.6 5L9.4 5L9.4 12L7.6 12zM9.9 3.5L11.7 3.5L11.7 12L9.9 12zM12.3 3.5L14.1 3.5L14.1 12L12.3 12zM14.6 5L16.4 5L16.4 12L14.6 12zM7.2 12.5L5 10.2L6.4 8.9L8.6 11.2Z","low-vision":"M2.5 12C6 6 18 6 21.5 12C18 18 6 18 2.5 12ZM9 12a3 3 0 1 0 6 0a3 3 0 1 0 -6 0zM17.5 3L19 3L19 6L17.5 6ZM19 4L22 4L22 5.5L19 5.5Z","sensory-friendly":"M4 11C4 5 7 2.5 12 2.5S20 5 20 11L17 11C17 7 15.5 5.5 12 5.5S7 7 7 11ZM3 10L8 10L8 19L5 19a2 2 0 0 1 -2 -2ZM16 10L21 10L21 17a2 2 0 0 1 -2 2L16 19ZM9 12L15 12L15 14L9 14ZM10 16L14 16L14 18L10 18Z","plus-size":"M9.4 4.3a2.6 2.6 0 1 0 5.2 0a2.6 2.6 0 1 0 -5.2 0zM5 20L4 13C4 10.5 7 9.5 12 9.5C17 9.5 20 10.5 20 13L19 20Z","lift-armrest":"M5 6L8 6L8 19L5 19zM5 16L18 16L18 19L5 19zM8 12L17 12L17 14.5L8 14.5zM14 7L16 7L16 12L14 12zM12 7L18 7L15 3Z"},wl=Fa.wheelchair;var Zt=J;function Qt(e,t,n){let o=Oe(e),r=Oe(t);if(!o||!r)return t;let i=Math.max(0,Math.min(1,n));return`#${o.map((u,l)=>Math.round(u*i+r[l]*(1-i))).map(u=>u.toString(16).padStart(2,"0")).join("")}`}function _o(e,t,n=Lo){let o=Zt(t,e);if(o!=null&&o>=n)return t;let r=Zt(ko,e)??0,i=Zt(Ao,e)??0;return r===0&&i===0?t:r>=i?ko:Ao}function jo(e){return e.notForSale===!0?!0:e.tiers?.length?e.tiers.every(t=>Number.isFinite(t.price)&&t.price>=0):e.price!=null}function Da(e){let t=0;for(let n=0,o=e.length;n<o;n+=1){let r=e[n],i=e[(n+1)%o];t+=r.x*i.y-i.x*r.y}return t/2}function me(e){return Da(e)*2}var pt=[{key:"row-seats",label:"row seats",suffix:"rows",labelSuffix:"Rows",creationWord:"Seats",objectType:"row"},{key:"table-chairs",label:"table chairs",suffix:"tables",labelSuffix:"Tables",creationWord:"Tables",objectType:"table"},{key:"booth-units",label:"booth units",suffix:"booths",labelSuffix:"Booths",creationWord:"Booths",objectType:"booth"},{key:"ga-capacity",label:"GA capacity",suffix:"ga",labelSuffix:"GA",creationWord:"Standing",objectType:"gaArea"}];function No(e){return e.floors?.length?e.floors:[{id:"floor-0",objects:e.objects}]}function Ba(e){return pt.find(t=>t.key===e)}function He(e){let t=new Map,n=Math.max(0,Math.floor(e.seatCount)),o=new Map((e.overrides??[]).filter(i=>Number.isInteger(i.index)&&i.index>=0&&i.index<e.seatCount).map(i=>[i.index,i])),r=(i,s=1)=>{i&&s>0&&t.set(i,(t.get(i)??0)+s)};r(e.categoryKey,n-o.size);for(let i of o.values())i.skip||r(i.categoryKey??e.categoryKey);return t}function Ga(e){return e.type==="row"||e.type==="table"?[...He(e).keys()]:e.type==="booth"?e.categoryKey?[e.categoryKey]:[]:e.type==="gaArea"?e.capacity>0&&e.categoryKey?[e.categoryKey]:[]:[]}function $o(e){return pt.find(t=>t.objectType===e.type)??null}function Fo(e){return e.type==="row"||e.type==="table"||e.type==="booth"||e.type==="gaArea"}function Ve(e){let t=new Map;for(let r of No(e))for(let i of r.objects){if(!Fo(i))continue;let s=$o(i);for(let u of Ga(i)){let l=t.get(u)??new Map,d=l.get(s.key)??[];if(!d.some(c=>c.id===i.id)){let c=i.displayLabel||i.label||i.id;d.push({id:i.id,label:c,type:s.objectType,floorId:r.id})}l.set(s.key,d),t.set(u,l)}}let n=new Map(e.categories.map(r=>[r.key,r.label]));return[...e.categories.map(r=>r.key),...[...t.keys()].filter(r=>!n.has(r)).sort()].flatMap(r=>{let i=t.get(r);if(!i||i.size<2)return[];let s=pt.flatMap(u=>{let l=i.get(u.key);return l?.length?[{family:u.key,label:u.label,objectType:u.objectType,targets:l}]:[]});return[{categoryKey:r,categoryLabel:n.get(r)??r,families:s,objectIds:[...new Set(s.flatMap(u=>u.targets.map(l=>l.id)))]}]})}function Jt(e){let t=e.families.map(n=>`${n.label} (${n.targets.map(o=>o.label).join(", ")})`).join(" and ");return`Category \u201C${e.categoryLabel}\u201D is used by more than one kind of inventory: ${t}. Each category can belong to only one kind. Use the safe split to separate them (prices, ticket tiers, accessibility, and provenance are preserved).`}function Do(e){return e.normalize("NFKC").trim().toLocaleLowerCase("en")}function Ua(e,t,n){for(let o=1;o<=1e4;o+=1){let r=o===1?`--${t}`:`--${t}-${o}`,s=`${e.slice(0,Math.max(1,160-r.length))}${r}`;if(!n.has(s))return n.add(s),s}throw new Error(`Unable to allocate a category key for ${e} (${t})`)}function Ka(e,t,n){for(let o=1;o<=1e4;o+=1){let r=o===1?` (${t})`:` (${t} ${o})`,s=`${e.normalize("NFKC").trim().slice(0,Math.max(1,80-r.length)).trimEnd()}${r}`,u=Do(s);if(!n.has(u))return n.add(u),s}throw new Error(`Unable to allocate a category label for ${e} (${t})`)}function Va(e,t,n,o){let r=Ba(t);return{...structuredClone(e),key:Ua(e.key,r.suffix,n),label:Ka(e.label,r.labelSuffix,o)}}function Ha(e,t,n){let o=[];for(let r of No(e))for(let i of r.objects){if(!Fo(i))continue;let s=$o(i),u=n.get(s.key);if(!(!u||u===t))if(i.type==="row"||i.type==="table"){let l=[];i.categoryKey===t&&(i.categoryKey=u);for(let d of i.overrides??[])d.categoryKey===t&&(d.categoryKey=u,l.push(d.index));(i.categoryKey===u||l.length)&&o.push({family:s.key,floorId:r.id,objectId:i.id,objectType:s.objectType,fromCategoryKey:t,toCategoryKey:u,...l.length?{seatOverrideIndices:l.sort((d,c)=>d-c)}:{}})}else i.categoryKey===t&&(i.categoryKey=u,o.push({family:s.key,floorId:r.id,objectId:i.id,objectType:s.objectType,fromCategoryKey:t,toCategoryKey:u}))}return o}function en(e){let t=structuredClone(e),n=Ve(t);if(!n.length)return{doc:t,changed:!1,changes:[],before:n,after:n};let o=new Set(t.categories.map(u=>u.key)),r=new Set(t.categories.map(u=>Do(u.label))),i=[];for(let u of n){let l=t.categories.findIndex(g=>g.key===u.categoryKey);if(l<0)continue;let d=t.categories[l],c=u.families[0].family,f=new Map([[c,d.key]]),b=u.families.slice(1).map(g=>{let S=Va(d,g.family,o,r);return f.set(g.family,S.key),{family:g.family,key:S.key,label:S.label,category:S}});t.categories.splice(l+1,0,...b.map(g=>g.category));let m=Ha(t,d.key,f);i.push({categoryKey:d.key,categoryLabel:d.label,retainedFamily:c,clones:b.map(({family:g,key:S,label:I})=>({family:g,key:S,label:I})),reassignments:m})}t.floors?.length&&(t.objects=t.floors[0].objects);let s=Ve(t);return{doc:t,changed:i.length>0,changes:i,before:n,after:s}}function Bo(e){return typeof e=="string"&&Co.includes(e)}var mt=["#e69f00","#56b4e9","#009e73","#f0e442","#0072b2","#d55e00","#cc79a7"],Go="#a4508b";var Ll={facilities:Go,"food-drink":mt[5],navigation:mt[2],accessibility:mt[4]};var Tl={minDiameterPx:12,glyphScale:.66,ringRatio:1/14,largeFromPx:24};var G=e=>{let t=Math.round(e*100)/100;return Object.is(t,-0)?"0":String(t)},Re=e=>`${G(e[0])} ${G(e[1])}`,Pe=(e,t,n,o)=>[e+n*Math.cos(o*Math.PI/180),t+n*Math.sin(o*Math.PI/180)];function er(e){let t=`M${Re(e.from)}`;for(let n of e.segs)t+=n.arc?`A${G(n.arc.r)} ${G(n.arc.r)} 0 ${n.arc.large} ${n.arc.sweep} ${Re(n.to)}`:`L${Re(n.to)}`;return`${t}Z`}function K(e){let t=[e.from,...e.segs.map(o=>o.to)],n=[];for(let o=e.segs.length-1;o>=0;o--){let r=e.segs[o].arc;n.push({to:t[o],arc:r&&{...r,sweep:r.sweep?0:1}})}return{from:t[t.length-1],segs:n}}function V(e,t,n){let o={r:n,large:0,sweep:1};return{from:[e-n,t],segs:[{to:[e+n,t],arc:o},{to:[e-n,t],arc:o}]}}function j(e,t,n,o,r){let i=Math.min(r,n/2,o/2),s={r:i,large:0,sweep:1};return i<=0?X([[e,t],[e+n,t],[e+n,t+o],[e,t+o]]):{from:[e+i,t],segs:[{to:[e+n-i,t]},{to:[e+n,t+i],arc:s},{to:[e+n,t+o-i]},{to:[e+n-i,t+o],arc:s},{to:[e+i,t+o]},{to:[e,t+o-i],arc:s},{to:[e,t+i]},{to:[e+i,t],arc:s}]}}function X(e){let t=0;for(let o=0;o<e.length;o++){let[r,i]=e[o],[s,u]=e[(o+1)%e.length];t+=r*u-s*i}let n=t>0?e:[...e].reverse();return{from:n[0],segs:[...n.slice(1).map(o=>({to:o})),{to:n[0]}]}}function D(e,t,n){let o=n/2,r=t[0]-e[0],i=t[1]-e[1],s=Math.hypot(r,i);if(s<1e-6)return V(e[0],e[1],o);let u=[i/s*o,-r/s*o],l={r:o,large:0,sweep:1},d=[e[0]+u[0],e[1]+u[1]];return{from:d,segs:[{to:[t[0]+u[0],t[1]+u[1]]},{to:[t[0]-u[0],t[1]-u[1]],arc:l},{to:[e[0]-u[0],e[1]-u[1]]},{to:d,arc:l}]}}function z(e,t,n=!1){let o=[],r=n?e.length:e.length-1;for(let i=0;i<r;i++)o.push(D(e[i],e[(i+1)%e.length],t));return o}function ne(e,t,n,o,r,i){let s=i/2,u=r-o>180?1:0,l={r:s,large:0,sweep:1},d=Pe(e,t,n+s,o);return{from:d,segs:[{to:Pe(e,t,n+s,r),arc:{r:n+s,large:u,sweep:1}},{to:Pe(e,t,n-s,r),arc:l},{to:Pe(e,t,n-s,o),arc:{r:n-s,large:u,sweep:0}},{to:d,arc:l}]}}var N=(...e)=>e.flat().map(er).join(" "),Z=(e,t,n)=>`M${G(e-n)} ${G(t)}a${G(n)} ${G(n)} 0 1 0 ${G(2*n)} 0a${G(n)} ${G(n)} 0 1 0 ${G(-2*n)} 0`,oe=(e,t,n,o,r)=>er(j(e,t,n,o,r)),gt=e=>`M${e.map(Re).join("L")}`,bt=(e,t,n,o,r)=>`M${Re(Pe(e,t,n,o))}A${G(n)} ${G(n)} 0 ${r-o>180?1:0} 1 ${Re(Pe(e,t,n,r))}`;function Ae(e,t,n,o=1){let r=i=>[i[0]*o+t,i[1]*o+n];return{head:[e.head[0]*o+t,e.head[1]*o+n,e.head[2]*o],limbs:e.limbs.map(i=>i.map(r)),arcs:e.arcs?.map(([i,s,u,l,d])=>[i*o+t,s*o+n,u*o,l,d])}}function ze(e){return[Z(e.head[0],e.head[1],e.head[2]),...e.limbs.map(gt),...(e.arcs??[]).map(([t,n,o,r,i])=>bt(t,n,o,r,i))].join(" ")}function Ee(e,t=2.6){return[V(e.head[0],e.head[1],e.head[2]+1),...e.limbs.flatMap(n=>z(n,t)),...(e.arcs??[]).map(([n,o,r,i,s])=>ne(n,o,r,i,s,t-.2))]}var be={head:[10,4,2],limbs:[[[10,8.2],[10,14],[15.5,14],[18,19.5],[20.5,19.5]],[[10,10.6],[14.5,10.6]]],arcs:[[9.5,16,5.5,35,235]]},Uo={head:[10.6,3.9,1.9],limbs:[[[9.6,7.8],[7.6,12]],[[5.4,8.2],[9.4,8.4],[12.8,10]],[[4,15.6],[7.6,12],[11,13.6],[10.6,16.4]]]},Ko={cx:12,hr:1.9,arm:5,leg:3,r:2},Vo={cx:12,hr:1.9,sh:2.2,hem:6,leg:3},Ho={cx:6.2,hr:1.8,arm:3.6,leg:2.2,r:1.4},zo={cx:17.8,hr:1.8,sh:1.4,hem:4.1,leg:2.2};function Xo({cx:e,hr:t,arm:n,leg:o,r}){return[Z(e,2+t,t),`M${G(e-n+r)} 8.5H${G(e+n-r)}a${r} ${r} 0 0 1 ${r} ${r}V15H${G(e+o)}V22H${G(e-o)}V15H${G(e-n)}V${G(8.5+r)}a${r} ${r} 0 0 1 ${r} ${-r}Z`,`M${G(e)} 15V22`].join(" ")}function Yo({cx:e,hr:t,arm:n,leg:o,r}){return[V(e,2+t,t+1),j(e-n-.5,7.8,2*n+1,7.7,r+.5),j(e-o-.5,13,o,9.5,1),j(e+.5,13,o,9.5,1)]}function Wo({cx:e,hr:t,sh:n,hem:o,leg:r}){return[Z(e,2+t,t),gt([[e-n,8.5],[e+n,8.5],[e+o,16],[e+r,16],[e+r,22],[e-r,22],[e-r,16],[e-o,16]])+"Z",`M${G(e)} 16V22`].join(" ")}function Zo({cx:e,hr:t,sh:n,hem:o,leg:r}){return[V(e,2+t,t+1),X([[e-n-.6,7.8],[e+n+.6,7.8],[e+o+.9,16.8],[e-o-.9,16.8]]),j(e-r-.1,15,r-.4,7.5,.9),j(e+.5,15,r-.4,7.5,.9)]}var za=[[14.6,1.5],[5.2,13.6],[11,13.6],[9.4,22.5],[18.8,10.4],[13,10.4]],Xa="M8.5 3.5 4 5.5l-1.5 5 3 1 1-2v11h11v-11l1 2 3-1-1.5-5-4.5-2c-.5 1.5-1.8 2.5-3.5 2.5s-3-1-3.5-2.5Z",Ya="M12 2.5S5 9.5 5 14.5a7 7 0 0 0 14 0c0-5-7-12-7-12Z",Wa="M2.5 21.5h19V3h-6v6.2H9.2v6.2H2.5Z",qo=[[9,3],[15,3],[15,9],[21,9],[21,15],[15,15],[15,21],[9,21],[9,15],[3,15],[3,9],[9,9]],Za={from:[3.8,5.2],segs:[{to:[20.2,5.2]},{to:[22,7],arc:{r:1.8,large:0,sweep:1}},{to:[22,9.7]},{to:[22,14.3],arc:{r:2.3,large:0,sweep:0}},{to:[22,17]},{to:[20.2,18.8],arc:{r:1.8,large:0,sweep:1}},{to:[3.8,18.8]},{to:[2,17],arc:{r:1.8,large:0,sweep:1}},{to:[2,14.3]},{to:[2,9.7],arc:{r:2.3,large:0,sweep:0}},{to:[2,7]},{to:[3.8,5.2],arc:{r:1.8,large:0,sweep:1}}]},qa={from:[12,1.6],segs:[{to:[20.4,4.9]},{to:[20.4,11.2]},{to:[12,22.4],arc:{r:13,large:0,sweep:1}},{to:[3.6,11.2],arc:{r:13,large:0,sweep:1}},{to:[3.6,4.9]},{to:[12,1.6]}]};function Qo(e,t,n){return{from:[e-n,t],segs:[{to:[e+n,t],arc:{r:n,large:0,sweep:1}},{to:[e-n,t]}]}}var Jo={head:[13.2,4.3,2.2],limbs:[[[12.6,8.6],[11.2,15],[17.8,18.4],[9.4,18.4]],[[12.4,9.8],[16,14.4]]]},Qa=[[6,10.5],[15,10.5],[16.5,7],[18.5,5.5],[20,6.5],[21.5,8.5],[19.5,10],[18,12],[18,19],[16.5,19],[15.5,14],[9.5,14],[8.5,19],[7,19],[6.5,13]],Ja=[[5.4,9.8],[14.6,9.8],[16.1,6.4],[18.4,4.6],[20.5,5.9],[22.4,8.6],[19.9,10.6],[18.8,12.3],[18.8,19.8],[15.8,19.8],[15,14.8],[10.1,14.8],[9.2,19.8],[6.2,19.8],[5.6,13.2]],tn=[{key:"restroom-men",label:"Men's restroom",group:"facilities",path:Xo(Ko),solid:N(Yo(Ko))},{key:"restroom-women",label:"Women's restroom",group:"facilities",path:Wo(Vo),solid:N(Zo(Vo))},{key:"restroom-accessible",label:"Accessible restroom",group:"facilities",path:[oe(2.5,2.5,19,19,3.5),ze(Ae(be,4.6,4.3,.66))].join(" "),solid:N(Ee(be)),solidLarge:N(j(1.5,1.5,21,21,4.5),K(j(3.9,3.9,16.2,16.2,2.6)),Ee(Ae(be,4.9,4.7,.62),2.2))},{key:"first-aid",label:"First aid",group:"facilities",path:gt(qo)+"Z",solid:N(X(qo.map(([e,t])=>[e+(e-12)*.08,t+(t-12)*.08])))},{key:"coat-check",label:"Coat check",group:"facilities",path:"M10 6.5a2 2 0 1 1 2 2V10 M12 10 3.4 16.9a1.4 1.4 0 0 0 .9 2.6h15.4a1.4 1.4 0 0 0 .9-2.6Z",solid:N(ne(12,6.2,2.2,180,450,2.3),D([12,8.4],[12,10.5],2.3),z([[12,10.2],[3.2,18.8],[20.8,18.8]],2.8,!0))},{key:"atm",label:"ATM / cash",group:"facilities",path:[oe(2,6,20,12,2),Z(12,12,2.75),"M6 12h.01 M18 12h.01"].join(" "),solid:N(j(1.5,5.5,21,13,2.4),K(V(12,12,3.2)))},{key:"info",label:"Info point",group:"facilities",path:[Z(12,12,9.5),"M10.8 11H12v5.8 M12 7.6h.01"].join(" "),solid:N(V(12,4.9,2.4),j(10.3,9.2,3.4,12.3,1),j(8.2,9.2,4,3,1),j(8.2,18.5,7.6,3,1))},{key:"lost-found",label:"Lost & found",group:"facilities",path:[Z(10.5,10.5,7.5),"M16 16l5.5 5.5","M8.4 8.4a2.1 2.1 0 1 1 3 1.9c-.6.4-.9.8-.9 1.6 M10.5 14.6h.01"].join(" "),solid:N(ne(12,7.6,4.2,180,405,3.4),z([[14.97,10.57],[12,13],[12,15]],3.4),V(12,20,2.1))},{key:"restrooms",label:"Toilets",group:"facilities",path:[Xo(Ho),Wo(zo)].join(" "),solid:N(Yo(Ho),Zo(zo))},{key:"charging",label:"Charging point",group:"facilities",path:[oe(6,2,12,20,2.5),"M13.2 6.2 9.6 12h4.8l-3.6 5.8"].join(" "),solid:N(X(za))},{key:"smoking",label:"Smoking area",group:"facilities",path:[oe(2,14.5,14.5,4,1),"M6.5 14.5v4","M15.5 11.5c0-1.4 1.5-1.9 1.5-3.4s-1.5-2-1.5-3.4 M19 11.5c0-1.4 1.5-1.9 1.5-3.4s-1.5-2-1.5-3.4"].join(" "),solid:N(j(1.5,14,4.2,5,1.2),j(6.8,14,10.4,5,1.2),z([[15.9,11.4],[17.3,8.9],[15.9,6.4],[17.1,3.9]],2.2),z([[19.6,11.4],[21,8.9],[19.6,6.4],[20.8,3.9]],2.2))},{key:"no-smoking",label:"No smoking",group:"facilities",path:[Z(12,12,9.5),"M5.3 5.3l13.4 13.4","M5.5 10.5h13v3h-13Z"].join(" "),solid:N(V(12,12,10.6),K(V(12,12,8)),D([6,6],[18,18],2.8),j(5,10.4,3,3.2,.6),j(16,10.4,3,3.2,.6))},{key:"food",label:"Food",group:"food-drink",path:"M5 2.5V8a2.5 2.5 0 0 0 5 0V2.5 M7.5 2.5v19 M18.5 13.5h-2c-1.3 0-2-1-2-2.5 0-4 1.5-7 4-8.5v19",solid:N(z([[4.9,2.6],[4.9,8]],2.2),z([[10.1,2.6],[10.1,8]],2.2),z([[7.5,2.6],[7.5,8]],2.2),ne(7.5,8,2.6,0,180,2.2),D([7.5,10],[7.5,21.4],3),X([[19.4,2.2],[19.4,14.2],[16.2,14.2],[14.1,12],[14.1,9.4],[15.2,5.8],[17.3,3.3]]),D([18,13],[18,21.4],3))},{key:"bar",label:"Bar",group:"food-drink",path:"M3.5 3.5h17L12 13Z M6.2 6.5h11.6 M12 13v7.5 M8 20.5h8",solid:N(X([[2.8,3],[21.2,3],[12,13.6]]),D([12,12],[12,20.6],2.8),D([7.4,21],[16.6,21],2.8))},{key:"coffee",label:"Caf\xE9 / coffee",group:"food-drink",path:"M4 9h12v4.5a5.5 5.5 0 0 1-5.5 5.5h-1A5.5 5.5 0 0 1 4 13.5Z M16 10.5h1.2a2.75 2.75 0 0 1 0 5.5H16 M8 3v3 M12 3v3 M3 21.5h14",solid:N({from:[3.4,8.4],segs:[{to:[16.6,8.4]},{to:[16.6,13.4]},{to:[11,19.4],arc:{r:5.8,large:0,sweep:1}},{to:[9,19.4]},{to:[3.4,13.4],arc:{r:5.8,large:0,sweep:1}},{to:[3.4,8.4]}]},ne(17.2,13.25,2.5,270,450,2.4),D([7.8,2.6],[7.8,5.6],2.4),D([12.2,2.6],[12.2,5.6],2.4),D([2.6,21.6],[17.4,21.6],2.6))},{key:"water",label:"Water / drinks",group:"food-drink",path:Ya,solid:"M12 1.2S4 8.9 4 14.5a8 8 0 0 0 16 0c0-5.6-8-13.3-8-13.3Z"},{key:"merch",label:"Merch / shop",group:"food-drink",path:Xa,solid:"M8.4 2.8 3.5 5l-1.9 6 4.2 1.4.4-.8v9.4h11.6v-9.4l.4.8 4.2-1.4-1.9-6-4.9-2.2c-.4 1.5-1.8 2.6-3.6 2.6s-3.2-1.1-3.6-2.6Z"},{key:"screen",label:"Screen",group:"facilities",path:[oe(2,3.5,20,13.5,2),"M12 17v3.5 M8 20.5h8","M10 7.8v5.9l5-2.95Z"].join(" "),solid:N(j(1.5,3,21,14.4,2.4),K(X([[9.6,6.7],[16,10.2],[9.6,13.7]])),j(10.6,16.5,2.8,4,0),D([7.4,21],[16.6,21],2.8))},{key:"sound-booth",label:"Sound booth",group:"facilities",path:["M6 3v9 M6 16v5 M12 3v3 M12 10v11 M18 3v10 M18 17v4",Z(6,14,2),Z(12,8,2),Z(18,15,2)].join(" "),solid:N(D([6,2.8],[6,21.2],1.8),D([12,2.8],[12,21.2],1.8),D([18,2.8],[18,21.2],1.8),j(3.2,11.6,5.6,4.8,1.4),j(9.2,5.6,5.6,4.8,1.4),j(15.2,12.6,5.6,4.8,1.4))},{key:"entrance",label:"Entrance",group:"navigation",path:"M11 7V3.5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v17a1 1 0 0 1-1 1h-8a1 1 0 0 1-1-1V17 M2.5 12h13.5 M12.5 8.5 16 12l-3.5 3.5",solid:N(z([[11,6.5],[11,2.6],[21,2.6],[21,21.4],[11,21.4],[11,17.5]],2.6),D([2.8,12],[13.5,12],3.2),X([[12.6,7.8],[18,12],[12.6,16.2]]))},{key:"exit",label:"Exit",group:"navigation",path:"M13 7V3.5a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v17a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V17 M8 12h13.5 M18 8.5l3.5 3.5-3.5 3.5",solid:N(z([[13,6.5],[13,2.6],[3,2.6],[3,21.4],[13,21.4],[13,17.5]],2.6),D([7.2,12],[17,12],3.2),X([[16.2,7.8],[21.6,12],[16.2,16.2]]))},{key:"emergency-exit",label:"Emergency exit",group:"navigation",path:[ze(Ae(Uo,-2,1.4,1.15)),"M15.5 13h6 M19 10.5l2.5 2.5-2.5 2.5"].join(" "),solid:N(Ee(Ae(Uo,-2,1.4,1.15),2.7),D([15.6,13],[19.5,13],2.8),X([[18.4,9.4],[22.4,13],[18.4,16.6]]))},{key:"stairs",label:"Stairs",group:"navigation",path:Wa,solid:"M1.5 22.5h21V2h-7.8v6.4H8.4v6.4H1.5Z"},{key:"elevator",label:"Elevator",group:"navigation",path:[oe(3.5,2.5,17,19,2.5),"M8.5 9.5 12 5.5l3.5 4Z M8.5 14.5l3.5 4 3.5-4Z"].join(" "),solid:N(X([[12,1.6],[19.6,10.2],[4.4,10.2]]),X([[4.4,13.8],[19.6,13.8],[12,22.4]]))},{key:"parking",label:"Parking",group:"navigation",path:[oe(3,3,18,18,3),"M9.5 17V7h3.75a3 3 0 0 1 0 6H9.5"].join(" "),solid:"M6.5 21V3H12a5.5 5.5 0 0 1 0 11h-1.9v7Z M10.1 6.6v3.8H12a1.9 1.9 0 0 0 0-3.8Z"},{key:"wheelchair",label:"Wheelchair access",group:"accessibility",path:ze(be),solid:N(Ee(be))},{key:"hearing",label:"Hearing assistance",group:"accessibility",path:["M4 9a6 6 0 1 1 12 0c0 3-1.8 4.3-3 5.2-1.1.8-1.6 1.7-1.6 3.1a3.6 3.6 0 0 1-6.2 2.1","M7.5 9a2.5 2.5 0 0 1 5 0c0 1.2-.7 1.9-1.6 2.5","M18.5 5.5a6.5 6.5 0 0 1 0 8"].join(" "),solid:N(ne(10,9,6,180,380,3),z([[15.64,11.05],[12.8,14.3],[11.5,17.2]],3),ne(8.2,17.2,3.3,0,150,3),ne(10,9,2.2,180,400,2.4),ne(13.38,9.5,6.5,322,398,2.6))},{key:"box-office",label:"Box office / tickets",group:"navigation",path:"M3 7.5A1.5 1.5 0 0 1 4.5 6h15A1.5 1.5 0 0 1 21 7.5V10a2 2 0 0 0 0 4v2.5a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 3 16.5V14a2 2 0 0 0 0-4Z M15 6v2 M15 11v2 M15 16v2",solid:N(Za,K(j(14.1,7,1.8,2.2,.9)),K(j(14.1,10.9,1.8,2.2,.9)),K(j(14.1,14.8,1.8,2.2,.9)))},{key:"escalator",label:"Escalator",group:"navigation",path:"M2.5 17H7l9-9h5.5v4h-4l-9 9h-6Z M11 4.5h.01 M11 8.2v3.3",solid:N(X([[2,16.4],[6.8,16.4],[15.8,7.4],[22,7.4],[22,12.6],[17.8,12.6],[8.8,21.6],[2,21.6]]),V(11,4.3,2.3),D([11,8],[11,11],2.6))},{key:"ramp",label:"Ramp",group:"navigation",path:"M2.5 19.5h19v-10Z M4.5 13.2 14 8.2 M10.53 7.76 14 8.2l-1.6 3.11",solid:N(X([[1.6,20.4],[22.4,20.4],[22.4,8.6]]),D([4.2,13.4],[13.2,8.6],2.6),X([[15.4,7.5],[13.16,11.84],[10.56,6.88]]))},{key:"taxi",label:"Taxi / rideshare",group:"navigation",path:["M9.5 2.5h5V5h-5Z M6.5 11 8 7h8l1.5 4",oe(3.5,11,17,6,2),"M6.5 17v2.5 M17.5 17v2.5 M7 14h.01 M17 14h.01"].join(" "),solid:N(j(9,1.8,6,3.4,.8),X([[6,11.4],[7.6,6.4],[16.4,6.4],[18,11.4]]),j(2.8,10.6,18.4,7,2.2),K(V(6.8,14,1.3)),K(V(17.2,14,1.3)),j(4.8,16,3.6,5.2,1.2),j(15.6,16,3.6,5.2,1.2))},{key:"transit",label:"Bus / transit",group:"navigation",path:[oe(4.5,2.5,15,16,3),"M4.5 10.5h15 M9 5.5h6 M7.5 18.5V21 M16.5 18.5V21 M8 14.5h.01 M16 14.5h.01"].join(" "),solid:N(j(4,2,16,17,3.2),K(j(6.2,5.8,11.6,5,1)),K(V(8,14.5,1.3)),K(V(16,14.5,1.3)),j(6,17,3.4,5,1.2),j(14.6,17,3.4,5,1.2))},{key:"bike-parking",label:"Bike parking",group:"navigation",path:[Z(6,14.5,4),Z(18,14.5,4),"M6 14.5 9 7.5h6.5L18 14.5 M9 7.5l2.5 7H6 M11.5 14.5l4-7 M7.5 6h3 M15.5 7.5 15 5.5h2"].join(" "),solid:N(V(6,14.5,4.9),K(V(6,14.5,2.7)),V(18,14.5,4.9),K(V(18,14.5,2.7)),z([[6,14.5],[9,7.5],[15.5,7.5],[18,14.5]],2.2),z([[9,7.5],[11.5,14.5],[15.5,7.5]],2.2),D([6,14.5],[11.5,14.5],2.2),D([7.2,5.8],[10.6,5.8],2.2),z([[15.4,7.3],[15,5.4],[17.2,5.4]],2.2))},{key:"meeting-point",label:"Meeting point",group:"navigation",path:["M9.5 2.5 12 5l2.5-2.5 M9.5 21.5 12 19l2.5 2.5 M2.5 9.5 5 12l-2.5 2.5 M21.5 9.5 19 12l2.5 2.5",Z(10,9.6,1.5),Z(14,9.6,1.5),"M7.5 15.5a2.5 2.5 0 0 1 5 0 M11.5 15.5a2.5 2.5 0 0 1 5 0"].join(" "),solid:N(z([[9.4,2.4],[12,5],[14.6,2.4]],2.6),z([[9.4,21.6],[12,19],[14.6,21.6]],2.6),z([[2.4,9.4],[5,12],[2.4,14.6]],2.6),z([[21.6,9.4],[19,12],[21.6,14.6]],2.6),V(9.7,9.3,2.2),V(14.3,9.3,2.2),Qo(9.7,16,3),Qo(14.3,16,3))},{key:"security",label:"Security / bag check",group:"facilities",path:"M12 2.5 19.5 5.5v6c0 4.6-3.2 8.4-7.5 10-4.3-1.6-7.5-5.4-7.5-10v-6Z M8.5 12l2.5 2.5 4.5-5",solid:N(qa,K(X([[7.4,12.2],[9,10.6],[10.9,12.5],[15,8.4],[16.6,10],[10.9,15.7]])))},{key:"lockers",label:"Lockers",group:"facilities",path:[oe(3.5,2.5,17,19,1.5),"M12 2.5v19 M6 6h3 M15 6h3 M9.5 11.5v2.5 M14.5 11.5v2.5"].join(" "),solid:N(j(3,2,8.4,20,1.4),K(j(5,5,4.4,1.7,.8)),K(j(8.6,10.8,1.5,3.8,.7)),j(12.6,2,8.4,20,1.4),K(j(14.6,5,4.4,1.7,.8)),K(j(13.9,10.8,1.5,3.8,.7)))},{key:"baby-change",label:"Baby change",group:"facilities",path:"M10 6.5l.8-3.3a1.2 1.2 0 0 1 2.4 0l.8 3.3 M8.5 6.5h7 M9.5 6.5l-.9 2.2a3 3 0 0 0-.1.9V19a2.5 2.5 0 0 0 2.5 2.5h2a2.5 2.5 0 0 0 2.5-2.5V9.6a3 3 0 0 0-.1-.9l-.9-2.2 M8.5 12.5h3 M8.5 16h3",solid:N(X([[9.6,6.2],[10.6,1.8],[13.4,1.8],[14.4,6.2]]),j(7.6,5.4,8.8,2.6,1),j(7.8,7.4,8.4,15,2.6),K(j(7.8,11.8,3.4,1.5,0)),K(j(7.8,15.4,3.4,1.5,0)))},{key:"prayer-room",label:"Prayer room",group:"facilities",path:[ze(Jo),"M3 21.5h18"].join(" "),solid:N(Ee(Jo),j(2.4,20.2,19.2,2.6,1.3))},{key:"quiet-room",label:"Quiet room",group:"facilities",path:"M4 9h3.5l5-4v14l-5-4H4Z M15.5 9.5l5 5 M20.5 9.5l-5 5",solid:N(X([[2.6,8.4],[7.2,8.4],[13,3.6],[13,20.4],[7.2,15.6],[2.6,15.6]]),D([15.4,9.2],[20.8,14.8],2.8),D([20.8,9.2],[15.4,14.8],2.8))},{key:"wifi",label:"Wi-Fi",group:"facilities",path:[bt(12,19,11.5,218,322),bt(12,19,7.5,218,322),bt(12,19,3.5,218,322),"M12 19h.01"].join(" "),solid:N(ne(12,19.2,11,218,322,2.8),ne(12,19.2,6.9,218,322,2.8),V(12,19.2,2.2))},{key:"vip-lounge",label:"VIP lounge",group:"facilities",path:["M6.5 11V7a2 2 0 0 1 2-2h7a2 2 0 0 1 2 2v4","M3.5 11.5a1.5 1.5 0 0 1 3 0V14h11v-2.5a1.5 1.5 0 0 1 3 0v6h-17Z","M5.5 17.5V20 M18.5 17.5V20"].join(" "),solid:N(j(6,4,12,8.5,2.2),j(2.4,9.6,4.6,9,2.2),j(17,9.6,4.6,9,2.2),j(6,13.2,12,5.4,.6),D([5,18],[5,20.6],2.4),D([19,18],[19,20.6],2.4))},{key:"accessible-entrance",label:"Accessible entrance",group:"accessibility",path:[ze(Ae(be,.3,5,.62)),"M12.5 3.5H20a1 1 0 0 1 1 1v15a1 1 0 0 1-1 1h-7.5"].join(" "),solid:N(Ee(Ae(be,.3,5,.62),2.2),z([[13,2.8],[21.2,2.8],[21.2,21.2],[13,21.2]],2.6))},{key:"assistance-dog",label:"Assistance-dog area",group:"accessibility",path:[gt(Qa)+"Z","M6 10.8 3.5 7.5","M10.5 10.5V6h4.5l1 2.5"].join(" "),solid:N(X(Ja),D([6.2,11],[3.2,7.2],2.4),z([[10.5,11],[10.5,5.6],[15.2,5.6],[16.2,8.2]],2.2))}],_l=new Map(tn.map(e=>[e.key,e]));var tr=tn;var es=new Map(tr.map(e=>[e.key,e]));function ht(e){return typeof e=="string"&&es.has(e)}var $l=tr.map(e=>e.key);var nr=["butt","round","square"],or=["miter","round","bevel"],nn=["none","arrow"];function on(e){return e==="line"||e==="polyline"}function ue(e){return e.length>=3&&e.every(t=>Number.isFinite(t.x)&&Number.isFinite(t.y))}function Le(e,t,n){let o=(e.y-t.y)*(n.x-t.x)-(e.x-t.x)*(n.y-t.y);if(Math.abs(o)>1e-7)return!1;let r=(e.x-t.x)*(n.x-t.x)+(e.y-t.y)*(n.y-t.y);if(r<-1e-7)return!1;let i=(n.x-t.x)**2+(n.y-t.y)**2;return r<=i+1e-7}function Te(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[r],s=t[o];if(Le(e,i,s))return!0;i.y>e.y!=s.y>e.y&&e.x<(s.x-i.x)*(e.y-i.y)/(s.y-i.y)+i.x&&(n=!n)}return n}function le(e,t,n){return(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x)}function ir(e,t,n,o){let r=le(e,t,n),i=le(e,t,o),s=le(n,o,e),u=le(n,o,t);return(r>1e-7&&i<-1e-7||r<-1e-7&&i>1e-7)&&(s>1e-7&&u<-1e-7||s<-1e-7&&u>1e-7)?!0:Math.abs(r)<=1e-7&&Le(n,e,t)||Math.abs(i)<=1e-7&&Le(o,e,t)||Math.abs(s)<=1e-7&&Le(e,n,o)||Math.abs(u)<=1e-7&&Le(t,n,o)}function ge(e){for(let t=0;t<e.length;t+=1){let n=(t+1)%e.length;for(let o=t+1;o<e.length;o+=1){let r=(o+1)%e.length;if(!(t===o||n===o||r===t)&&ir(e[t],e[n],e[o],e[r]))return!0}}return!1}function Xe(e,t){for(let n=0;n<e.length;n+=1)for(let o=0;o<t.length;o+=1)if(ir(e[n],e[(n+1)%e.length],t[o],t[(o+1)%t.length]))return!0;return Te(e[0],t)||Te(t[0],e)}function rr(e,t){return!t.some((n,o)=>Le(e,n,t[(o+1)%t.length]))&&Te(e,t)}function ar(e){let t=e.outlinePath;if(!t?.segments.length)return;let n=i=>Number.isFinite(i.x)&&Number.isFinite(i.y),o=(i,s)=>Math.hypot(i.x-s.x,i.y-s.y);if(!n(t.start))return 0;let r=t.start;for(let i=0;i<t.segments.length;i++){let s=t.segments[i];if(!s||!n(s.end)||o(r,s.end)<=1e-9||s.kind==="bezier"&&(!n(s.control1)||!n(s.control2)))return i;if(s.kind==="arc"){if(!n(s.center)||!Number.isFinite(s.radius)||s.radius<=1e-6)return i;let u=Math.max(1e-4,s.radius*1e-4);if(Math.abs(o(r,s.center)-s.radius)>u||Math.abs(o(s.end,s.center)-s.radius)>u)return i}r=s.end}return o(r,t.start)>1e-4,t.segments.length-1}function ts(e,t,n,o){let r=le(e,t,n),i=le(e,t,o),s=le(n,o,e),u=le(n,o,t);return(r>1e-7&&i<-1e-7||r<-1e-7&&i>1e-7)&&(s>1e-7&&u<-1e-7||s<-1e-7&&u>1e-7)}function sr(e,t){for(let n=0;n<e.length;n+=1)for(let o=0;o<t.length;o+=1)if(ts(e[n],e[(n+1)%e.length],t[o],t[(o+1)%t.length]))return!0;return e.some(n=>rr(n,t))||t.some(n=>rr(n,e))}function cr(e){return e.role!=="reference-focal"||!e.points||!ue(e.points)?null:e.points}var lr=["in","out","both"];function ns(e){return e?.type==="shape"&&e.gate!=null&&typeof e.gate=="object"}function ur(e){return e.type==="row"||e.type==="section"||e.type==="table"||e.type==="booth"||e.type==="gaArea"}function dr(e){return e==="out"?"exit":"entrance"}function os(e){return e.floors?.length?e.floors.flatMap(t=>t.objects):e.objects}function fr(e){let t=new Map;for(let n of os(e))ns(n)&&t.set(n.id,n);return t}var rn=(e,t)=>typeof e=="string"&&e===e.normalize("NFKC").trim()&&e.length>=1&&e.length<=t,an=e=>e===void 0||typeof e=="boolean";function rs(e){let t=e.gate;if(!t||typeof t!="object")return"has an unreadable gate record";let n=t;return lr.includes(n.use)?e.kind==="line"||e.kind==="polyline"?"must be a closed shape":e.role!==dr(n.use)?"must be an entrance (in, both) or an exit (out)":rn(e.label,40)?n.opens!==void 0&&!rn(n.opens,40)?`must say when it opens in 1 to ${40} characters`:!an(n.stepFree)||!an(n.hideFromBuyers)?"has a step-free or buyer setting that is not on or off":null:`needs a name of 1 to ${40} characters`:"must be used for in, out or both"}function is(e){let t=e.route;return!t||typeof t!="object"?"has an unreadable route record":e.kind!=="line"&&e.kind!=="polyline"?"must be a line or path":rn(e.label,40)?an(t.stepFree)?null:"has a step-free setting that is not on or off":`needs a name of 1 to ${40} characters`}function sn(e,t,n){let o=ee(e).flatMap(i=>i.objects),r=new Set;for(let i of o)if(i.type==="shape"){if(i.gate!==void 0){r.add(i.id);let s=rs(i);s&&t.push({severity:"error",code:"invalid-gate",message:`Gate "${i.label??i.id}" ${s}`,objectId:i.id})}if(i.route!==void 0){let s=is(i);s&&t.push({severity:"error",code:"invalid-route",message:`Route "${i.label??i.id}" ${s}`,objectId:i.id})}}for(let i of o){if(!ur(i)||i.entranceGateId===void 0)continue;let s=i.entranceGateId;typeof s!="string"||!s.trim()?t.push({severity:"error",code:"invalid-entrance-gate",message:`"${i.label}" has an empty entrance gate`,objectId:i.id}):r.has(s)||n.push({severity:"warning",code:"unknown-entrance-gate",message:`"${i.label}" enters by a gate that is no longer on the map`,objectId:i.id})}}function yr(e,t){if(e.displayLabel!==void 0){let n=e.displayLabel.normalize("NFKC").trim();!(e.type==="row"&&e.displayLabel==="")&&(!n||n!==e.displayLabel||n.length>80)&&t.push({severity:"error",code:"invalid-display-label",message:`${e.type==="gaArea"?"GA area":e.type} "${e.label}" must use a normalized buyer label of 1 to 80 characters`,objectId:e.id})}if(e.displayType!==void 0){let n=e.displayType.normalize("NFKC").trim();(!n||n!==e.displayType||n.length>24)&&t.push({severity:"error",code:"invalid-display-type",message:`${e.type==="gaArea"?"GA area":e.type} "${e.label}" must use a normalized buyer type of 1 to 24 characters`,objectId:e.id})}e.type!=="row"&&as(e,t)}var gr=(e,t)=>typeof e=="string"&&e===e.normalize("NFKC").trim()&&e.length>=1&&e.length<=t;function as(e,t){let n=e.type==="gaArea"?"GA area":e.type==="table"?"Table":"Booth",o=(i,s)=>t.push({severity:"error",code:i,message:`${n} "${e.label}" ${s}`,objectId:e.id});e.entrance!==void 0&&!gr(e.entrance,40)&&o("invalid-entrance","must use a normalized entrance of 1 to 40 characters");let r=e.labelPresentation;if(r!==void 0){let i=r?.labelStyle?.size,s=i!==void 0&&(!Number.isFinite(i)||i<Yt||i>Wt);(!r||typeof r!="object"||r.visible!==void 0&&typeof r.visible!="boolean"||s)&&o("invalid-label-presentation",`has an invalid name-on-map setting (size ${Yt}\u2013${Wt})`)}if(e.type==="table"){let i=Hn(e.chairNumbering);i&&o("invalid-chair-numbering",`has invalid chair numbering: ${i}`)}e.type==="booth"&&(e.boothType!==void 0&&!Oo.includes(e.boothType)&&o("invalid-booth-type","must use inline, corner, peninsula or island as its booth type"),e.commercial!==void 0&&(!e.commercial||typeof e.commercial!="object"||Object.keys(e.commercial).some(i=>i!=="note")||e.commercial.note!==void 0&&!gr(e.commercial.note,160))&&o("invalid-booth-note","must use a normalized buyer note of 1 to 160 characters"))}function hr(e,t,n,o){let r=e.crop,i=r&&(!Number.isFinite(r.x)||!Number.isFinite(r.y)||!Number.isFinite(r.width)||!Number.isFinite(r.height)||r.x<0||r.y<0||r.width<=0||r.height<=0||r.x+r.width>1.000001||r.y+r.height>1.000001);(!Number.isFinite(e.center?.x)||!Number.isFinite(e.center?.y)||!Number.isFinite(e.width)||e.width<=0||!Number.isFinite(e.opacity)||e.opacity<0||e.opacity>1||e.rotation!==void 0&&!Number.isFinite(e.rotation)||i)&&n.push({severity:"error",code:"invalid-background-placement",message:`The ${t} image has an invalid position, size, opacity, rotation, or crop`,...o?{floorId:o}:{}})}function cn(e,t,n,o){let r=e.referenceImage,i=e.backgroundImage;r&&(hr(r,"reference",t,o),!r.assetId&&!r.url&&t.push({severity:"error",code:"invalid-reference-image",message:"A trace reference must identify a private asset or self-contained image",...o?{floorId:o}:{}})),i&&(hr(i,i.assetId?"legacy reference":"buyer background",t,o),!i.assetId&&!i.url&&t.push({severity:"error",code:"invalid-buyer-background",message:"A buyer background must contain a renderable image URL",...o?{floorId:o}:{}}),i.assetId&&n.push({severity:"warning",code:"legacy-reference-background",message:"This legacy asset-backed background is trace-only and will migrate to the private reference layer when edited",...o?{floorId:o}:{}})),Qn(e)&&t.push({severity:"error",code:"conflicting-reference-images",message:"The canonical reference and legacy asset-backed background identify different private sources",...o?{floorId:o}:{}})}function Ye(e){let t=new Set(ke.map(n=>n.key));return!e||/^ref_[0-9a-f-]{36}$/.test(e.assetId)&&!!e.logicalSectionId.trim()&&["user-confirmed","authoritative-source"].includes(e.evidence)&&!!e.sourceDescription.trim()&&(e.derivation===void 0||["explicit-inventory","server-synthesized-from-aggregate"].includes(e.derivation))&&(e.aggregateEvidence===void 0||["user-confirmed","authoritative-source"].includes(e.aggregateEvidence))&&(e.derivation!=="server-synthesized-from-aggregate"||e.evidence==="user-confirmed")&&(e.sectionAssignmentEvidence===void 0||["user-confirmed","authoritative-source"].includes(e.sectionAssignmentEvidence))&&e.sectionAssignmentEvidence===void 0==!e.sectionAssignmentSourceDescription?.trim()&&(e.sectionAssignmentSourceDescription?.trim().length??0)<=240&&(e.numberingEvidence===void 0||e.numberingEvidence==="user-confirmed")&&e.numberingEvidence===void 0==!e.numberingSourceDescription?.trim()&&(e.numberingSourceDescription?.trim().length??0)<=240&&(!e.accessibility||e.accessibility.placementDerivation==="server-synthesized-row-edges"&&e.accessibility.groupLogicalSectionIds.length>0&&e.accessibility.groupLogicalSectionIds.length<=100&&new Set(e.accessibility.groupLogicalSectionIds).size===e.accessibility.groupLogicalSectionIds.length&&e.accessibility.groupLogicalSectionIds.includes(e.logicalSectionId)&&e.accessibility.groupLogicalSectionIds.every(n=>!!n.trim()&&n.length<=160)&&["user-confirmed","authoritative-source"].includes(e.accessibility.assignmentEvidence)&&!!e.accessibility.assignmentSourceDescription.trim()&&e.accessibility.assignmentSourceDescription.trim().length<=240&&e.accessibility.counts.length>0&&e.accessibility.counts.length<=ke.length&&new Set(e.accessibility.counts.map(n=>n.type)).size===e.accessibility.counts.length&&e.accessibility.counts.every(n=>t.has(n.type)&&Number.isInteger(n.count)&&n.count>0&&["user-confirmed","authoritative-source"].includes(n.evidence)&&!!n.sourceDescription.trim()&&n.sourceDescription.trim().length<=240))}function xr(e){let t=e.referenceInventoryExclusion;return!t||typeof t.assetId=="string"&&/^ref_[0-9a-f-]{36}$/.test(t.assetId)&&t.assetId===e.referenceSource?.assetId&&typeof t.logicalSectionId=="string"&&t.logicalSectionId===(e.logicalSectionId??e.id)&&typeof t.reason=="string"&&!!t.reason.trim()&&t.reason.trim().length<=80&&["user-confirmed","authoritative-source"].includes(t.evidence)&&typeof t.sourceDescription=="string"&&!!t.sourceDescription.trim()&&t.sourceDescription.trim().length<=240}function vr(e){let t=e.referenceCategorySource;return!t||/^ref_[0-9a-f-]{36}$/.test(t.assetId)&&/^#[0-9a-f]{6}$/i.test(t.sourceColor)&&(t.sourceColors===void 0||t.sourceColors.length>0&&t.sourceColors.includes(t.sourceColor)&&new Set(t.sourceColors).size===t.sourceColors.length&&t.sourceColors.every(n=>/^#[0-9a-f]{6}$/i.test(n)&&`${n[1]}${n[3]}${n[5]}`.toLowerCase()===`${t.sourceColor[1]}${t.sourceColor[3]}${t.sourceColor[5]}`.toLowerCase()))&&(t.logicalSectionIds===void 0||t.logicalSectionIds.length>0&&new Set(t.logicalSectionIds).size===t.logicalSectionIds.length&&t.logicalSectionIds.every(n=>!!n.trim()&&n.length<=160))&&(t.assignmentDerivation===void 0||["source-color-class","confirmed-logical-sections"].includes(t.assignmentDerivation))&&t.assignmentEvidence===void 0==!t.assignmentSourceDescription?.trim()&&(t.assignmentEvidence===void 0||["user-confirmed","authoritative-source"].includes(t.assignmentEvidence))&&(t.assignmentSourceDescription?.trim().length??0)<=240&&(t.assignmentDerivation!=="confirmed-logical-sections"||t.assignmentEvidence!==void 0&&!!t.assignmentSourceDescription?.trim())&&t.sourcePaletteColor===void 0==(t.sourcePaletteColorEvidence===void 0)&&t.sourcePaletteColorEvidence===void 0==!t.sourcePaletteColorSourceDescription?.trim()&&(t.sourcePaletteColor===void 0||/^#[0-9a-f]{6}$/i.test(t.sourcePaletteColor))&&(t.sourcePaletteColorEvidence===void 0||["user-confirmed","authoritative-source"].includes(t.sourcePaletteColorEvidence))&&(t.sourcePaletteColorSourceDescription?.trim().length??0)<=240&&["user-confirmed","authoritative-source"].includes(t.labelEvidence)&&!!t.labelSourceDescription.trim()&&t.labelSourceDescription.trim().length<=240&&e.price!==void 0&&["user-confirmed","authoritative-source"].includes(t.priceEvidence)&&!!t.priceSourceDescription.trim()&&t.priceSourceDescription.trim().length<=240&&t.outputColorEvidence===void 0==!t.outputColorSourceDescription?.trim()&&(t.outputColorEvidence===void 0||["user-confirmed","authoritative-source"].includes(t.outputColorEvidence))&&(t.outputColorSourceDescription?.trim().length??0)<=240&&(e.color.toLowerCase()===(t.sourcePaletteColor??t.sourceColor).toLowerCase()&&new Set((t.sourceColors??[t.sourceColor]).map(n=>`${n[1]}${n[3]}${n[5]}`.toLowerCase())).size===1||t.outputColorEvidence!==void 0&&["user-confirmed","authoritative-source"].includes(t.outputColorEvidence))}function Sr(e){let t=e.referenceDirectSeatImport;return!t||/^ref_[0-9a-f-]{36}$/.test(t.assetId)&&/^source-color:(?:#[0-9a-f]{6}(?:\+#[0-9a-f]{6})*|unclassified)$/i.test(t.familyId)}function Ir(e,t){let n=e.floors?.length?e.floors.map(i=>({id:i.id,objects:i.objects})):[{id:"floor-0",objects:e.objects}],o=new Map,r=new Map;for(let i of n){let s=i.objects.filter(d=>d.type==="row"),u=new Map,l=new Map;for(let d of s){if(d.segmentedRow){let c=u.get(d.segmentedRow.groupId)??[];c.push(d),u.set(d.segmentedRow.groupId,c)}if(d.rowBlockGeneration){let c=l.get(d.rowBlockGeneration.groupId)??[];c.push(d),l.set(d.rowBlockGeneration.groupId,c)}d.segmentedRow&&d.rowBlockGeneration&&t.push({severity:"error",code:"invalid-row-group-membership",message:`Row "${d.label}" cannot be both a segmented-row component and a generated row-block member`,objectId:d.id,floorId:i.id})}for(let[d,c]of u){let f=o.get(d);f&&f!==i.id&&t.push({severity:"error",code:"invalid-segmented-row",message:`Segmented row "${d}" cannot span multiple floors`,objectId:c[0].id,floorId:i.id}),o.set(d,i.id);let b=c.slice().sort((A,E)=>A.segmentedRow.componentIndex-E.segmentedRow.componentIndex),m=b[0]?.segmentedRow,g=m?.componentCount??0,S=m?JSON.stringify({displayLabel:m.displayLabel,repeatLabelOnComponents:m.repeatLabelOnComponents,displayType:m.displayType,labelPresentation:m.labelPresentation,viewFromSeatUrl:m.viewFromSeatUrl,viewFromSeatMeta:m.viewFromSeatMeta,confidenceEvidence:m.confidenceEvidence,smoothing:m.smoothing}):"";m&&g>=2&&g<=64&&b.length===g&&m.boundaryBefore==="start"&&b.every((A,E)=>{let R=A.segmentedRow;return R.kind==="segmented-row-v1"&&R.groupId===d&&R.componentCount===g&&R.componentIndex===E&&(E===0?R.boundaryBefore==="start":R.boundaryBefore!=="start")&&R.displayLabel.normalize("NFKC").trim()===R.displayLabel&&R.displayLabel.length>0&&R.displayLabel.length<=80&&JSON.stringify({displayLabel:R.displayLabel,repeatLabelOnComponents:R.repeatLabelOnComponents,displayType:R.displayType,labelPresentation:R.labelPresentation,viewFromSeatUrl:R.viewFromSeatUrl,viewFromSeatMeta:R.viewFromSeatMeta,confidenceEvidence:R.confidenceEvidence,smoothing:R.smoothing})===S})||t.push({severity:"error",code:"invalid-segmented-row",message:`Segmented row "${d}" has missing, duplicated, cyclic, or inconsistent component metadata`,objectId:c[0]?.id,floorId:i.id})}for(let[d,c]of l){let f=r.get(d);f&&f!==i.id&&t.push({severity:"error",code:"invalid-row-block-generation",message:"A generated row block cannot span multiple floors",objectId:c[0].id,floorId:i.id}),r.set(d,i.id)}}}function wr(e,t){let n=(i,s)=>t.push({severity:"error",code:i,message:`GA area "${e.label}" ${s}`,objectId:e.id});e.bookAsWhole!==void 0&&typeof e.bookAsWhole!="boolean"&&n("invalid-ga-booking","has an invalid whole-area setting"),e.variableOccupancy!==void 0&&typeof e.variableOccupancy!="boolean"&&n("invalid-ga-booking","has an invalid party-size setting"),e.bookAsWhole===!0&&e.variableOccupancy===!0&&n("invalid-ga-booking","cannot be sold whole and by party size at the same time");let o=ce(e);if(o&&e.inventorySegments!==void 0&&n("invalid-ga-booking","was joined from other areas and must be sold per person, not as one box"),o&&e.capacity>pe&&n("invalid-ga-booking",`is sold to one party but holds ${e.capacity} guests; at most ${pe} can book in one go`),o&&se(e.label)&&n("reserved-seat-label",`uses SeatLayer's reserved GA namespace for its box label "${e.label}"`),o==="variable"){let i=e.minOccupancy,s=e.maxOccupancy;(!Number.isInteger(i)||!Number.isInteger(s)||i<1||s<i||s>e.capacity)&&n("invalid-ga-occupancy",`needs whole-number fewest and most guests from 1 to its ${e.capacity}-person capacity`)}else(e.minOccupancy!==void 0||e.maxOccupancy!==void 0)&&n("invalid-ga-occupancy","has guest bounds without party-size selling");let r=e.wheelchairPlaces;r!==void 0&&(!Number.isInteger(r)||r<0||r>e.capacity)&&n("invalid-ga-wheelchair-places",`must have from 0 to ${e.capacity} wheelchair places`)}function Mr(e){return e==="m"||e==="ft"}function ss(e){return e==="ft"?.3048:1}function yt(e,t){return e/ss(t)}var cs=e=>Math.abs(e)<1e-9?0:e;function xt(e,t="m"){let n=cs(yt(e,t)),o=Math.abs(n);return t==="ft"?o<100?`${n.toFixed(1)} ft`:`${Math.round(n)} ft`:o<1?`${n.toFixed(2)} m`:o<100?`${n.toFixed(1)} m`:`${Math.round(n)} m`}var ls=.5,us=5e3,ds=e=>typeof e=="number"&&Number.isFinite(e),fs=e=>!!e&&typeof e=="object"&&!Array.isArray(e);function Cr(e){let t=e?.designerSettings;return fs(t)?t:null}function vt(e){let t=Cr(e)?.units;return Mr(t)?t:"m"}function St(e){let t=Cr(e)?.unitsPerMetre;return ds(t)&&t>=ls&&t<=us?t:null}function ln(e,t){let n=t/(St(e)??rt),o=vt(e);return o==="ft"&&yt(n,"ft")<.1?`${yt(n,"ft").toFixed(2)} ft`:xt(n,o)}function ms(e){return e.type==="row"||e.type==="table"||e.type==="booth"}function bs(e){let t=[],n=new Map((e.overrides??[]).map(o=>[o.index,o]));for(let o=0;o<e.seatCount;o++){let r=n.get(o);r?.skip||t.push({label:ot(e,o,r),index:o})}return t}function Or(e){let t=[],n=new Map((e.overrides??[]).map(o=>[o.index,o]));for(let o=0;o<e.seatCount;o++){let r=n.get(o);r?.skip||t.push({label:r?.label??`${e.label}-${o+1}`,index:o})}return t}function un(e){return Array.isArray(e)&&e.every(t=>!!t&&typeof t=="object")}function dn(e){return Array.isArray(e)&&e.every(t=>Array.isArray(t)&&t.every(n=>!!n&&typeof n=="object"))}function kr(e,t={}){let n=t.maxInventory??1e5,o=[];e.floorOverview!==void 0&&e.floorOverview!=="combined"&&e.floorOverview!=="separated"&&o.push({severity:"error",code:"invalid-floor-overview",message:"Whole venue view must be Combined plan or Separate levels"}),e.eventConfigurationId!==void 0&&(typeof e.eventConfigurationId!="string"||e.eventConfigurationId.normalize("NFKC").trim()!==e.eventConfigurationId||e.eventConfigurationId.length<1||e.eventConfigurationId.length>100)&&o.push({severity:"error",code:"invalid-event-configuration",message:"Active event configuration must contain 1 to 100 normalized characters"});let r=[],i=new Set(e.categories.map(a=>a.key)),s=new Set(ke.map(a=>a.key)),u=new Map(e.categories.map(a=>[a.key,jo(a)])),l=new Set;cn(e,o,r),sn(e,o,r),e.theme?.sectionDetail!==void 0&&!["rows","seats"].includes(e.theme.sectionDetail)&&o.push({severity:"error",code:"invalid-section-detail",message:"Section detail must be rows or seats"}),e.theme?.logoUrl!==void 0&&!Ft(e.theme.logoUrl)&&o.push({severity:"error",code:"invalid-theme-logo-url",message:"The buyer-facing theme logo URL is invalid"});let d=Ft,c=(a,P,p,h={})=>{if(P===void 0)return;if(!P||typeof P!="object"||Array.isArray(P)){o.push({severity:"error",code:"invalid-seat-view-metadata",message:`${p} view metadata is invalid`,...h});return}let y=P;a||r.push({severity:"warning",code:"orphaned-seat-view-metadata",message:`${p} view metadata has no image`,...h});let L=new Set(["exact-seat","row-representative","section-representative","floor-representative","venue-representative"]);y.projection!==void 0&&y.projection!=="equirectangular"&&o.push({severity:"error",code:"invalid-seat-view-projection",message:`${p} view projection must be equirectangular`,...h}),y.coverage!==void 0&&!L.has(y.coverage)&&o.push({severity:"error",code:"invalid-seat-view-coverage",message:`${p} view coverage is invalid`,...h});let k=(T,_,$)=>typeof T=="number"&&Number.isFinite(T)&&T>=_&&T<=$;if(y.initialBearingDeg!==void 0&&!k(y.initialBearingDeg,-360,360)&&o.push({severity:"error",code:"invalid-seat-view-bearing",message:`${p} view bearing must be between -360\xB0 and 360\xB0`,...h}),y.initialPitchDeg!==void 0&&!k(y.initialPitchDeg,-90,90)&&o.push({severity:"error",code:"invalid-seat-view-pitch",message:`${p} view pitch must be between -90\xB0 and 90\xB0`,...h}),y.capturedAt!==void 0&&(typeof y.capturedAt!="string"||y.capturedAt.length>40||!Number.isFinite(Date.parse(y.capturedAt)))&&o.push({severity:"error",code:"invalid-seat-view-capture-date",message:`${p} view capture date is invalid`,...h}),y.sourceLabel!==void 0&&(typeof y.sourceLabel!="string"||y.sourceLabel.trim().length>100)&&o.push({severity:"error",code:"invalid-seat-view-source",message:`${p} view source label is invalid`,...h}),y.previewUrl!==void 0&&!d(y.previewUrl)&&o.push({severity:"error",code:"invalid-seat-view-preview-url",message:`${p} view preview URL is invalid`,...h}),y.variants!==void 0){let T=Array.isArray(y.variants)?y.variants:[];if(!Array.isArray(y.variants)||T.length<1||T.length>4)o.push({severity:"error",code:"invalid-seat-view-variants",message:`${p} view variants must contain between 1 and 4 tiers`,...h});else{let _=new Set;for(let $ of T){if(!$||typeof $!="object"||!d($.url)||!Number.isInteger($.width)||$.width<1||$.width>12e3||!Number.isInteger($.height)||$.height<1||$.height>12e3||$.width!==$.height*2||typeof $.sha256!="string"||!/^[a-f0-9]{64}$/.test($.sha256)||_.has($.width)){o.push({severity:"error",code:"invalid-seat-view-variant",message:`${p} view variant is not a unique immutable 2:1 equirectangular tier`,...h});break}_.add($.width)}}}for(let[T,_]of[["width",y.sourceWidth],["height",y.sourceHeight],["preview width",y.previewWidth],["preview height",y.previewHeight]])_!==void 0&&(!Number.isInteger(_)||_<1||_>32768)&&o.push({severity:"error",code:"invalid-seat-view-dimensions",message:`${p} view source ${T} is invalid`,...h});y.captureEyeHeightM!==void 0&&!k(y.captureEyeHeightM,.5,3)&&o.push({severity:"error",code:"invalid-seat-view-eye-height",message:`${p} capture eye height must be between 0.5 m and 3 m`,...h}),y.eventConfigurationId!==void 0&&(typeof y.eventConfigurationId!="string"||!y.eventConfigurationId.trim()||y.eventConfigurationId.length>100)&&o.push({severity:"error",code:"invalid-seat-view-configuration",message:`${p} event configuration id is invalid`,...h}),y.eventConfigurationVersion!==void 0&&(!Number.isInteger(y.eventConfigurationVersion)||y.eventConfigurationVersion<1)&&o.push({severity:"error",code:"invalid-seat-view-configuration-version",message:`${p} event configuration version is invalid`,...h}),y.eventConfigurationVersion!==void 0&&!y.eventConfigurationId&&o.push({severity:"error",code:"invalid-seat-view-configuration-pin",message:`${p} event configuration version requires an id`,...h})},f=(a,P,p={})=>{if(a===void 0)return;let h=_=>{o.push({severity:"error",code:"invalid-seat-confidence-evidence",message:`${P} confidence evidence ${_}`,...p})};if(!a||typeof a!="object"||Array.isArray(a)){h("is invalid");return}let y=a;y.schema!=="seatlayer.seat-confidence/1"&&h("has an unsupported schema");let L=(_,$)=>typeof _=="string"&&_.normalize("NFKC").trim()===_&&_.length>0&&_.length<=$;L(y.evidenceId,120)||h("has an invalid evidence id"),L(y.modelVersion,120)||h("has an invalid model version"),new Set(["synthetic-model","organizer-approved","calibrated-provider"]).has(y.evidenceKind)||h("has an invalid evidence kind"),new Set(["generated","geometry-verified","configuration-verified"]).has(y.modelLevel)||h("has an invalid model level");let k=y.realityLevel??"none";new Set(["none","comparable-build-reference","actual-build-checked"]).has(k)||h("has an invalid reality level"),y.eventConfigurationId!==void 0&&!L(y.eventConfigurationId,100)&&h("has an invalid event configuration id"),y.eventConfigurationVersion!==void 0&&(!Number.isInteger(y.eventConfigurationVersion)||y.eventConfigurationVersion<1)&&h("has an invalid event configuration version"),y.status!==void 0&&!new Set(["draft","approved","retracted"]).has(y.status)&&h("has an invalid publication status"),y.basisSha256!==void 0&&!/^[a-f0-9]{64}$/.test(y.basisSha256)&&h("has an invalid venue basis SHA-256"),y.basisSha256!==void 0&&y.status!=="approved"&&h("can carry a venue basis SHA-256 only after approval");for(let[_,$]of[["assessment",y.assessedAt],["expiry",y.validUntil]])$!==void 0&&(!L($,40)||!Number.isFinite(Date.parse($)))&&h(`has an invalid ${_} date`);y.approvedByRole!==void 0&&!L(y.approvedByRole,100)&&h("has an invalid approving organization or role"),y.sourceLabel!==void 0&&!L(y.sourceLabel,120)&&h("has an invalid source label"),y.limitations!==void 0&&(!Array.isArray(y.limitations)||y.limitations.length>6||y.limitations.some(_=>!L(_,160)))&&h("has invalid limitations"),y.evidenceKind==="synthetic-model"&&(y.modelLevel!=="generated"||k!=="none")&&h("cannot describe synthetic data as verified or reality checked"),y.modelLevel!=="generated"&&(!y.assessedAt||!y.approvedByRole)&&h("requires an assessment date and approving organization or role for verified model levels"),y.modelLevel==="configuration-verified"&&!y.eventConfigurationId&&h("requires an event configuration id for configuration verification"),k!=="none"&&(!y.assessedAt||!y.sourceLabel)&&h("requires an assessment date and source for reality evidence"),k==="actual-build-checked"&&(y.modelLevel!=="configuration-verified"||!y.eventConfigurationId)&&h("requires a configuration-verified model and event configuration for an actual-build check");let T=y.modeledTarget;T!==void 0&&(!T||typeof T!="object"||Array.isArray(T)?h("has an invalid modeled target"):((!L(T.label,80)||!L(T.methodLabel,100))&&h("has invalid modeled-target labels"),(!Number.isInteger(T.totalRayCount)||T.totalRayCount<1||T.totalRayCount>1e3||!Number.isInteger(T.clearRayCount)||T.clearRayCount<0||T.clearRayCount>T.totalRayCount)&&h("has invalid modeled-target ray counts"),new Set(["clear","partial","obstructed"]).has(T.classification)||h("has an invalid modeled-target classification"),T.occluderLabels!==void 0&&(!Array.isArray(T.occluderLabels)||T.occluderLabels.length>10||T.occluderLabels.some(_=>!L(_,100)))&&h("has invalid modeled-target occluders")))};c(e.viewFromSeatUrl,e.viewFromSeatMeta,"Venue"),f(e.confidenceEvidence,"Venue"),e.viewFromSeatUrl!==void 0&&!d(e.viewFromSeatUrl)&&o.push({severity:"error",code:"invalid-venue-view-url",message:"The whole-venue view-from-seat image URL is invalid"});for(let a of e.floors??[])a.viewFromSeatUrl!==void 0&&!d(a.viewFromSeatUrl)&&o.push({severity:"error",code:"invalid-floor-view-url",message:`Floor "${a.name}" has an invalid view-from-seat image URL`}),c(a.viewFromSeatUrl,a.viewFromSeatMeta,`Floor "${a.name}"`,{floorId:a.id}),f(a.confidenceEvidence,`Floor "${a.name}"`,{floorId:a.id});let b=e.floors?.length?e.floors.flatMap(a=>a.objects):e.objects;for(let a of b)if((a.type==="row"||a.type==="section")&&(a.viewFromSeatUrl!==void 0&&!d(a.viewFromSeatUrl)&&o.push({severity:"error",code:a.type==="row"?"invalid-row-view-url":"invalid-section-view-url",message:`${a.type==="row"?"Row":"Section"} "${a.label}" has an invalid view-from-seat image URL`,objectId:a.id}),c(a.viewFromSeatUrl,a.viewFromSeatMeta,`${a.type==="row"?"Row":"Section"} "${a.label}"`,{objectId:a.id}),f(a.confidenceEvidence,`${a.type==="row"?"Row":"Section"} "${a.label}"`,{objectId:a.id})),a.type==="row"&&a.segmentedRow&&(a.segmentedRow.viewFromSeatUrl!==void 0&&!d(a.segmentedRow.viewFromSeatUrl)&&o.push({severity:"error",code:"invalid-segmented-row-view-url",message:`Segmented row "${a.segmentedRow.displayLabel}" has an invalid view-from-seat image URL`,objectId:a.id}),c(a.segmentedRow.viewFromSeatUrl,a.segmentedRow.viewFromSeatMeta,`Segmented row "${a.segmentedRow.displayLabel}"`,{objectId:a.id}),f(a.segmentedRow.confidenceEvidence,`Segmented row "${a.segmentedRow.displayLabel}"`,{objectId:a.id})),a.type==="row"||a.type==="table")for(let P of a.overrides??[])P.viewFromSeatUrl!==void 0&&!d(P.viewFromSeatUrl)&&o.push({severity:"error",code:"invalid-seat-view-url",message:`Seat ${P.index+1} has an invalid view-from-seat image URL`,objectId:a.id,seatIndices:[P.index]}),c(P.viewFromSeatUrl,P.viewFromSeatMeta,`Seat ${P.index+1}`,{objectId:a.id,seatIndices:[P.index]}),f(P.confidenceEvidence,`Seat ${P.index+1}`,{objectId:a.id,seatIndices:[P.index]});let m=new Set;for(let a of e.categories){m.has(a.key)&&o.push({severity:"error",code:"duplicate-category-key",message:`Category key "${a.key}" is used more than once`,categoryKey:a.key}),m.add(a.key);let P=new Set;for(let p of a.tiers??[]){if(P.has(p.id)&&o.push({severity:"error",code:"duplicate-category-tier-id",message:`Ticket tier id "${p.id}" is used more than once in category "${a.key}"`,categoryKey:a.key}),p.restriction!=null&&!["companion","child","senior","student","membership","custom"].includes(p.restriction)&&o.push({severity:"error",code:"invalid-category-tier-restriction",message:`Ticket tier "${p.name}" has an unknown restriction`,categoryKey:a.key}),p.buyerMessage!=null&&(!p.buyerMessage.trim()||p.buyerMessage.length>240)&&o.push({severity:"error",code:"invalid-category-tier-buyer-message",message:`Ticket tier "${p.name}" buyer guidance must contain 1 to 240 characters`,categoryKey:a.key}),p.currency!=null&&!/^[A-Z]{3}$/.test(p.currency)&&o.push({severity:"error",code:"invalid-category-tier-currency",message:`Ticket tier "${p.name}" must use a three-letter ISO currency`,categoryKey:a.key}),p.applicability!=null){let h=p.applicability.seatLabels,y=p.applicability.accessibility;(h!==void 0&&(!Array.isArray(h)||!h.length||h.length>1e4||h.some(L=>typeof L!="string"||!L.trim()||L.length>160)||new Set(h).size!==h.length)||y!==void 0&&(!Array.isArray(y)||!y.length||y.some(L=>!s.has(L))||new Set(y).size!==y.length))&&o.push({severity:"error",code:"invalid-category-tier-applicability",message:`Ticket tier "${p.name}" has invalid seat applicability`,categoryKey:a.key})}p.evidence!=null&&(!["public-host","public-event","user-confirmed"].includes(p.evidence.provenance)||!p.evidence.sourceDescription.trim()||p.evidence.sourceDescription.length>240||p.evidence.capturedAt!==void 0&&(p.evidence.capturedAt.length>40||!Number.isFinite(Date.parse(p.evidence.capturedAt))))&&o.push({severity:"error",code:"invalid-category-tier-evidence",message:`Ticket tier "${p.name}" has invalid evidence provenance`,categoryKey:a.key}),P.add(p.id)}vr(a)||o.push({severity:"error",code:"invalid-reference-category-source",message:`Category ${a.label||a.key} has incomplete or invalid reference evidence`,categoryKey:a.key}),Sr(a)||o.push({severity:"error",code:"invalid-reference-direct-seat-import",message:`Category ${a.label||a.key} has invalid direct-seat import provenance`,categoryKey:a.key})}let g=new Map,S=new Map,I=[],A=new Map,E=0,R=0,M=new Set;for(let a of e.floors??[])cn(a,o,r,a.id),M.has(a.id)&&o.push({severity:"error",code:"duplicate-floor-id",message:`Floor id "${a.id}" is used more than once`,floorId:a.id}),M.add(a.id),a.baseHeightM!==void 0&&(!Number.isFinite(a.baseHeightM)||a.baseHeightM<de||a.baseHeightM>ie)&&o.push({severity:"error",code:"invalid-floor-base-height",message:`Floor "${a.name}" base height must be between ${de} and ${ie} metres`,floorId:a.id});let w=e.floors&&e.floors.length?e.floors.flatMap(a=>a.objects):e.objects;Ir(e,o);let x=new Set;for(let a of w)x.has(a.id)&&o.push({severity:"error",code:"duplicate-object-id",message:`Object id "${a.id}" is used more than once`,objectId:a.id}),x.add(a.id);let O=new Set;for(let a of e.zones??[])O.has(a.id)&&o.push({severity:"error",code:"duplicate-zone-id",message:`Zone id "${a.id}" is used more than once`}),O.add(a.id),a.focalPoint!==void 0&&(!Number.isFinite(a.focalPoint.x)||!Number.isFinite(a.focalPoint.y))&&o.push({severity:"error",code:"invalid-zone-focal-point",message:`Zone "${a.label}" must use a finite focal point`});let v=new Map;for(let a of w)if(!(a.type!=="section"||!a.zone)){if(e.zones?.length&&!O.has(a.zone)){o.push({severity:"error",code:"unknown-section-zone",message:`Section "${a.displayLabel??a.label}" references unknown zone "${a.zone}"`,objectId:a.id});continue}v.has(a.zone)||v.set(a.zone,a)}for(let[a,P]of v){let p=e.zones?.find(h=>h.id===a);p&&(p?.focalPoint||r.push({severity:"warning",code:"missing-zone-focal-point",message:`Zone "${p?.label??a}" uses the legacy floor focal; set its own focal point before publishing`,objectId:P.id}))}for(let a of w)if((a.type==="row"||a.type==="table"||a.type==="booth"||a.type==="gaArea")&&yr(a,o),ms(a)){if(E++,R+=a.type==="booth"?1:a.type==="row"?ut(a):a.bookAsWhole||a.variableOccupancy?a.seatCount:Or(a).length,g.get(a.label)!==void 0?a.type!=="row"&&o.push({severity:"error",code:"duplicate-object-label",message:`Label "${a.label}" is used by more than one object`,objectId:a.id}):g.set(a.label,a.id),i.has(a.categoryKey)?l.add(a.categoryKey):o.push({severity:"error",code:"unknown-category",message:`"${a.label}" references unknown category "${a.categoryKey}"`,objectId:a.id,categoryKey:a.categoryKey}),a.type==="row"){Ye(a.referenceInventorySource)||o.push({severity:"error",code:"invalid-reference-inventory-source",message:`Row "${a.label}" has invalid reference-inventory provenance`,objectId:a.id}),a.seatCount<1&&o.push({severity:"error",code:"empty-row",message:`Row "${a.label}" has no seats`,objectId:a.id}),a.aisleSeats!==void 0&&!Bo(a.aisleSeats)&&o.push({severity:"error",code:"invalid-row-aisle-seats",message:`Row "${a.label}" must mark its aisle seats at the start, end, both or none`,objectId:a.id});let p=new Set;for(let h of a.overrides??[]){(h.accessibility??[]).filter(T=>!s.has(T)).length&&o.push({severity:"error",code:"invalid-accessibility-type",message:`Row "${a.label}" seat ${h.index+1} uses an unknown accessibility type`,objectId:a.id,seatIndices:[h.index]}),(!Number.isInteger(h.index)||h.index<0||h.index>=a.seatCount||p.has(h.index))&&o.push({severity:"error",code:"invalid-seat-override",message:`Row "${a.label}" has a duplicated or out-of-range seat override`,objectId:a.id,...Number.isInteger(h.index)?{seatIndices:[h.index]}:{}}),p.add(h.index);let L=h.wheelchairSpaceType,k=h.accessible===!0||h.accessibility?.includes("wheelchair");L!==void 0&&L!=="seat-present"&&L!=="no-seat"?o.push({severity:"error",code:"invalid-wheelchair-space",message:`Row "${a.label}" seat ${h.index+1} has an invalid wheelchair-space type`,objectId:a.id,seatIndices:[h.index]}):L&&(!k||h.skip)&&o.push({severity:"error",code:"invalid-wheelchair-space",message:h.skip?`Row "${a.label}" seat ${h.index+1} cannot have a wheelchair-space physical type while skipped from inventory`:`Row "${a.label}" seat ${h.index+1} must include wheelchair accessibility for its physical-space type`,objectId:a.id,seatIndices:[h.index]})}for(let h of bs(a))se(h.label)&&o.push({severity:"error",code:"reserved-seat-label",message:`Seat label "${h.label}" uses SeatLayer's reserved GA namespace`,objectId:a.id,seatIndices:[h.index]}),S.get(h.label)!==void 0?I.push({severity:"error",code:"duplicate-seat-label",message:`Seat label "${h.label}" is used more than once`,objectId:a.id,seatIndices:[h.index]}):S.set(h.label,a.id)}else if(a.type==="table"){let p=a.bookAsWhole===!0||a.variableOccupancy===!0;if(a.fill!==void 0&&!Io(a.fill)&&o.push({severity:"error",code:"invalid-table-fill",message:`Table "${a.label}" has an invalid surface color`,objectId:a.id}),a.automaticRadius!==void 0&&typeof a.automaticRadius!="boolean"?o.push({severity:"error",code:"invalid-table-automatic-radius",message:`Table "${a.label}" has an invalid automatic-radius setting`,objectId:a.id}):a.automaticRadius===!0&&(a.shape!=="round"||a.radius!==Jn(a.seatCount,a.seatArc))&&o.push({severity:"error",code:"invalid-table-automatic-radius",message:`Table "${a.label}" needs a radius that matches its automatic chair spacing`,objectId:a.id}),a.seatCountsBySide){let k=["top","bottom","left","right"],T=Object.keys(a.seatCountsBySide),_=k.every(Y=>Number.isInteger(a.seatCountsBySide[Y])&&a.seatCountsBySide[Y]>=0&&a.seatCountsBySide[Y]<=40),$=_?k.reduce((Y,xe)=>Y+a.seatCountsBySide[xe],0):Number.NaN;(a.shape!=="rect"||T.length!==k.length||T.some(Y=>!k.includes(Y))||!_||$!==a.seatCount||$<1||$>40)&&o.push({severity:"error",code:"invalid-table-side-counts",message:`Table "${a.label}" needs top, bottom, left, and right whole-number chair counts totaling its ${a.seatCount}-chair capacity`,objectId:a.id})}p&&a.overrides?.length&&o.push({severity:"error",code:"grouped-table-chair-overrides",message:`Grouped table "${a.label}" cannot carry individual-chair overrides`,objectId:a.id,seatIndices:a.overrides.map(k=>k.index)});let h=new Set;for(let k of a.overrides??[]){(k.accessibility??[]).filter(Y=>!s.has(Y)).length&&o.push({severity:"error",code:"invalid-accessibility-type",message:`Table "${a.label}" chair ${k.index+1} uses an unknown accessibility type`,objectId:a.id,seatIndices:[k.index]}),(!Number.isInteger(k.index)||k.index<0||k.index>=a.seatCount||h.has(k.index))&&o.push({severity:"error",code:"invalid-seat-override",message:`Table "${a.label}" has a duplicated or out-of-range chair override`,objectId:a.id,...Number.isInteger(k.index)?{seatIndices:[k.index]}:{}}),h.add(k.index),k.categoryKey&&!i.has(k.categoryKey)?o.push({severity:"error",code:"unknown-category",message:`Table "${a.label}" chair ${k.index+1} references unknown category "${k.categoryKey}"`,objectId:a.id,seatIndices:[k.index],categoryKey:k.categoryKey}):k.categoryKey&&l.add(k.categoryKey);let _=k.wheelchairSpaceType,$=k.accessible===!0||k.accessibility?.includes("wheelchair");_!==void 0&&_!=="seat-present"&&_!=="no-seat"?o.push({severity:"error",code:"invalid-wheelchair-space",message:`Table "${a.label}" chair ${k.index+1} has an invalid wheelchair-space type`,objectId:a.id,seatIndices:[k.index]}):_&&(!$||k.skip)&&o.push({severity:"error",code:"invalid-wheelchair-space",message:k.skip?`Table "${a.label}" chair ${k.index+1} cannot have a wheelchair-space physical type while skipped from inventory`:`Table "${a.label}" chair ${k.index+1} must include wheelchair accessibility for its physical-space type`,objectId:a.id,seatIndices:[k.index]})}a.bookAsWhole&&a.variableOccupancy?o.push({severity:"error",code:"invalid-table-booking-mode",message:`Table "${a.label}" cannot be sold both as a whole table and with variable occupancy`,objectId:a.id}):a.variableOccupancy?(!Number.isInteger(a.minOccupancy)||!Number.isInteger(a.maxOccupancy)||a.minOccupancy<1||a.maxOccupancy<a.minOccupancy||a.maxOccupancy>a.seatCount)&&o.push({severity:"error",code:"invalid-table-occupancy",message:`Table "${a.label}" needs whole-number minimum and maximum guests from 1 to its ${a.seatCount}-chair capacity`,objectId:a.id}):(a.minOccupancy!=null||a.maxOccupancy!=null)&&o.push({severity:"error",code:"invalid-table-occupancy",message:`Table "${a.label}" has guest bounds without variable-occupancy selling`,objectId:a.id}),Ye(a.referenceInventorySource)||o.push({severity:"error",code:"invalid-reference-inventory-source",message:`Table "${a.label}" has invalid reference-inventory provenance`,objectId:a.id}),(a.shape==="round"&&a.radius==null||a.shape==="rect"&&(a.width==null||a.height==null)||a.seatCount<1)&&o.push({severity:"error",code:"bad-table",message:`Table "${a.label}" is missing required dimensions or seats`,objectId:a.id});let L=p?[{label:a.label,index:void 0}]:Or(a);for(let k of L)se(k.label)&&o.push({severity:"error",code:"reserved-seat-label",message:`Inventory label "${k.label}" uses SeatLayer's reserved GA namespace`,objectId:a.id}),S.get(k.label)!==void 0?I.push({severity:"error",code:"duplicate-seat-label",message:`Inventory label "${k.label}" is used more than once; grouped table labels must be unique`,objectId:a.id,...k.index===void 0?{}:{seatIndices:[k.index]}}):S.set(k.label,a.id)}else if(a.type==="booth"){Ye(a.referenceInventorySource)||o.push({severity:"error",code:"invalid-reference-inventory-source",message:`Booth "${a.label}" has invalid reference-inventory provenance`,objectId:a.id});let p=a.label;se(p)&&o.push({severity:"error",code:"reserved-seat-label",message:`Seat label "${p}" uses SeatLayer's reserved GA namespace`,objectId:a.id}),S.get(p)!==void 0?I.push({severity:"error",code:"duplicate-seat-label",message:`Seat label "${p}" is used more than once`,objectId:a.id}):S.set(p,a.id)}}else if(a.type==="gaArea"){if(wr(a,o),!ft(a))o.push({severity:"error",code:"invalid-ga-inventory-segments",message:`GA area "${a.label}" has invalid joined-area inventory provenance`,objectId:a.id});else for(let h of Vt(a))S.get(h)!==void 0?I.push({severity:"error",code:"duplicate-seat-label",message:`GA inventory label "${h}" is used more than once`,objectId:a.id}):S.set(h,a.id);if(Ye(a.referenceInventorySource)||o.push({severity:"error",code:"invalid-reference-inventory-source",message:`GA area "${a.label}" has invalid reference-inventory provenance`,objectId:a.id}),!un(a.points)){o.push({severity:"error",code:"invalid-polygon-points",message:`GA area "${a.label}" outline must be a list of points`,objectId:a.id});continue}(!ue(a.points)||Math.abs(me(a.points))<=1e-7||ge(a.points))&&o.push({severity:"error",code:"invalid-ga-outline",message:`GA area "${a.label}" must have a finite, non-self-intersecting polygon outline`,objectId:a.id});let p=a.holes??[];if(!dn(p))o.push({severity:"error",code:"invalid-hole-collection",message:`GA area "${a.label}" cutouts must be a list of point lists`,objectId:a.id});else{let h=p.length<=64?p.findIndex(y=>y.length>512||!ue(y)||Math.abs(me(y))<=1e-7||ge(y)?!0:!y.flatMap((k,T)=>{let _=y[(T+1)%y.length];return[k,{x:(k.x+_.x)/2,y:(k.y+_.y)/2}]}).every(k=>Te(k,a.points))):0;if(h>=0)o.push({severity:"error",code:"invalid-ga-hole",message:`GA area "${a.label}" has a cutout outside its outline or with invalid geometry`,objectId:a.id,holeIndex:h});else if(p.some((y,L)=>p.slice(L+1).some(k=>Xe(y,k)))){let y=p.findIndex((L,k)=>p.slice(k+1).some(T=>Xe(L,T)));o.push({severity:"error",code:"overlapping-ga-holes",message:`GA area "${a.label}" has overlapping cutout polygons`,objectId:a.id,holeIndex:y})}}i.has(a.categoryKey)?l.add(a.categoryKey):o.push({severity:"error",code:"unknown-category",message:`"${a.label}" references unknown category "${a.categoryKey}"`,objectId:a.id,categoryKey:a.categoryKey}),a.capacity<1&&o.push({severity:"error",code:"empty-ga",message:`GA area "${a.label}" has zero capacity`,objectId:a.id}),(!Number.isInteger(a.capacity)||a.capacity>fe)&&o.push({severity:"error",code:"invalid-ga-capacity",message:`GA area "${a.label}" capacity must be a whole number from 1 to ${fe}`,objectId:a.id}),E++,R+=Math.max(0,Math.floor(a.capacity))}else if(a.type==="section"){if(a.displayLabel!==void 0){let h=a.displayLabel.normalize("NFKC").trim();h?(h!==a.displayLabel||h.length>80)&&o.push({severity:"error",code:"invalid-display-label",message:`Section "${a.label}" must use a normalized buyer label of 1 to 80 characters`,objectId:a.id}):o.push({severity:"error",code:"unnamed-section",message:`${a.label} has no buyer name`,objectId:a.id})}if(a.editor?.defaultCategoryKey&&!i.has(a.editor.defaultCategoryKey)&&o.push({severity:"error",code:"unknown-category",message:`Section "${a.label}" references unknown future-seat category "${a.editor.defaultCategoryKey}"`,objectId:a.id}),a.elevation!==void 0&&(!Number.isInteger(a.elevation)||a.elevation<jt||a.elevation>Me)){let h=Number.isInteger(a.elevation)&&a.elevation>Me&&a.elevation<=Nt;r.push({severity:"warning",code:h?"legacy-section-elevation":"invalid-section-elevation",message:h?`Section "${a.label}" uses legacy tier ${a.elevation}; set an exact height before normalizing it to tier ${Me}`:`Section "${a.label}" elevation must be a whole-number tier from ${jt} to ${Me}`,objectId:a.id})}if(a.height!==void 0&&(!Number.isFinite(a.height)||a.height<de||a.height>ie)&&o.push({severity:"error",code:"invalid-section-height",message:`Section "${a.label}" exact height must be between ${de} and ${ie} metres`,objectId:a.id}),a.rake!==void 0&&(!Number.isFinite(a.rake)||a.rake<it||a.rake>at)&&o.push({severity:"error",code:"invalid-section-rake",message:`Section "${a.label}" rake must be between ${it}\xB0 and ${at}\xB0`,objectId:a.id}),a.surfaceKind!==void 0&&a.surfaceKind!=="flat"&&a.surfaceKind!=="rakedRows"&&o.push({severity:"error",code:"invalid-section-surface-kind",message:`Section "${a.label}" surfaceKind must be 'flat' or 'rakedRows'`,objectId:a.id}),!un(a.outline)){o.push({severity:"error",code:"invalid-polygon-points",message:`Section "${a.label}" outline must be a list of points`,objectId:a.id});continue}if(!ue(a.outline)||Math.abs(me(a.outline))<=1e-7||ge(a.outline)){o.push({severity:"error",code:"invalid-section-outline",message:`Section "${a.label}" must have a finite, non-self-intersecting polygon outline`,objectId:a.id});continue}if(a.outlinePath){let h=[];try{h=Je(a.outlinePath)}catch{}(!Qe(a.outlinePath)||!h.length||Math.hypot(a.outlinePath.start.x-a.outline[0].x,a.outlinePath.start.y-a.outline[0].y)>1e-4||!ue(h)||Math.abs(me(h))<=1e-7||ge(h))&&o.push({severity:"error",code:"invalid-section-outline-path",message:`Section "${a.label}" has an invalid or inconsistent curved outline path`,objectId:a.id,edgeIndex:ar(a)})}if(a.referenceSource&&(!/^ref_[0-9a-f-]{36}$/.test(a.referenceSource.assetId)||!/^(?:reg|ai)_[0-9a-f]{16}$/.test(a.referenceSource.regionId))&&o.push({severity:"error",code:"invalid-section-reference-source",message:`Section "${a.label}" has invalid opaque reference provenance`,objectId:a.id}),xr(a)||o.push({severity:"error",code:"invalid-section-inventory-exclusion",message:`Section "${a.label}" has incomplete or mismatched non-sellable evidence`,objectId:a.id}),a.logicalSectionId!==void 0&&!a.logicalSectionId.trim())o.push({severity:"error",code:"invalid-logical-section-id",message:`Section "${a.label}" has an empty logical section id`,objectId:a.id});else if(a.logicalSectionId){let h=JSON.stringify({displayLabel:a.displayLabel??null,entrance:a.entrance??null,viewFromSeatUrl:a.viewFromSeatUrl??null,viewFromSeatMeta:a.viewFromSeatMeta??null,confidenceEvidence:a.confidenceEvidence??null,zone:a.zone??null,labelStyle:a.labelPresentation?.labelStyle??null,labelVisible:a.labelPresentation?.visible!==!1}),y=A.get(a.logicalSectionId);y&&(y.label!==a.label||y.semanticSignature!==h)?o.push({severity:"error",code:"inconsistent-logical-section",message:`Logical section "${a.logicalSectionId}" must use one technical label and buyer-facing presentation across every component`,objectId:a.id}):y||A.set(a.logicalSectionId,{label:a.label,semanticSignature:h})}let P=a.holes??[];if(!dn(P)){o.push({severity:"error",code:"invalid-hole-collection",message:`Section "${a.label}" openings must be a list of point lists`,objectId:a.id});continue}if(P.length>64){o.push({severity:"error",code:"invalid-section-hole",message:`Section "${a.label}" has an invalid opening collection`,objectId:a.id});continue}let p=-1;for(let h=0;h<P.length;h++){let y=P[h];if(y.length>512||!ue(y)||Math.abs(me(y))<=1e-7||ge(y)){p=h;break}if(!y.flatMap((k,T)=>{let _=y[(T+1)%y.length];return[k,{x:(k.x+_.x)/2,y:(k.y+_.y)/2}]}).every(k=>Te(k,a.outline))){p=h;break}}if(p>=0)o.push({severity:"error",code:"invalid-section-hole",message:`Section "${a.label}" has an opening outside its outline or with an invalid shape`,objectId:a.id,holeIndex:p});else if(P.some((h,y)=>P.slice(y+1).some(L=>Xe(h,L)))){let h=P.findIndex((y,L)=>P.slice(L+1).some(k=>Xe(y,k)));o.push({severity:"error",code:"overlapping-section-holes",message:`Section "${a.label}" has overlapping openings`,objectId:a.id,holeIndex:h})}}let C=e.floors?.length?e.floors.map(a=>a.objects):[e.objects];for(let a of C){let P=a.filter(p=>p.type==="section");for(let p of a.filter(h=>h.type==="text")){let h=p.iconKey;h!==void 0&&!ht(h)&&o.push({severity:"error",code:"invalid-icon-key",message:`Venue icon "${p.text||p.id}" references an unknown symbol`,objectId:p.id});let y=p.fontFamily;y!==void 0&&(typeof y!="string"||y.normalize("NFKC").trim()!==y||y.length<1||y.length>120)&&o.push({severity:"error",code:"invalid-text-font-family",message:`Text "${p.text||p.id}" font family must contain 1 to 120 normalized characters`,objectId:p.id});let L=p.background;(p.width!==void 0&&(!Number.isFinite(p.width)||p.width<40||p.width>1200)||p.align!==void 0&&!["left","center","right"].includes(p.align)||p.lineHeight!==void 0&&(!Number.isFinite(p.lineHeight)||p.lineHeight<.8||p.lineHeight>3)||p.letterSpacing!==void 0&&(!Number.isFinite(p.letterSpacing)||p.letterSpacing<-2||p.letterSpacing>20)||p.opacity!==void 0&&(!Number.isFinite(p.opacity)||p.opacity<.1||p.opacity>1)||L!==void 0&&(!/^#[0-9a-f]{6}$/i.test(L.color)||L.padding!==void 0&&(!Number.isFinite(L.padding)||L.padding<0||L.padding>40)||L.cornerRadius!==void 0&&(!Number.isFinite(L.cornerRadius)||L.cornerRadius<0||L.cornerRadius>40)||L.opacity!==void 0&&(!Number.isFinite(L.opacity)||L.opacity<.1||L.opacity>1)))&&o.push({severity:"error",code:"invalid-text-layout",message:`Text "${p.text||p.id}" has invalid width, spacing, opacity, alignment, or background layout`,objectId:p.id})}for(let p of a.filter(h=>h.type==="shape")){if(p.eventConfigurationIds!==void 0){let L=p.eventConfigurationIds;Array.isArray(L)&&L.length>0&&L.length<=20&&L.every(T=>typeof T=="string"&&T.normalize("NFKC").trim()===T&&T.length>=1&&T.length<=100)&&new Set(L).size===L.length||o.push({severity:"error",code:"invalid-shape-configurations",message:`Shape "${p.label||p.id}" must reference 1 to 20 unique event configuration ids`,objectId:p.id})}if(p.heightM!==void 0&&(!Number.isFinite(p.heightM)||p.heightM<.05||p.heightM>50)&&o.push({severity:"error",code:"invalid-shape-height",message:`Shape "${p.label||p.id}" height must be between 0.05 m and 50 m`,objectId:p.id}),p.stroke!==void 0&&(!p.stroke||typeof p.stroke.color!="string"||!/^#[0-9a-f]{6}$/i.test(p.stroke.color)||!Number.isFinite(p.stroke.width)||p.stroke.width<.5||p.stroke.width>40)&&o.push({severity:"error",code:"invalid-shape-stroke",objectId:p.id,message:`Shape "${p.label||p.id}" stroke must use a six-digit colour and a width from ${ln(e,.5)} to ${ln(e,40)}`}),(p.lineCap!==void 0||p.lineJoin!==void 0||p.startEnding!==void 0||p.endEnding!==void 0)&&!on(p.kind)?o.push({severity:"error",code:"invalid-shape-line-style-applicability",message:`Shape "${p.label||p.id}" may use line caps, joins, and end decorations only when it is an open line or polyline`,objectId:p.id}):on(p.kind)&&(p.lineCap!==void 0&&!nr.includes(p.lineCap)||p.lineJoin!==void 0&&!or.includes(p.lineJoin)||p.startEnding!==void 0&&!nn.includes(p.startEnding)||p.endEnding!==void 0&&!nn.includes(p.endEnding))&&o.push({severity:"error",code:"invalid-shape-line-style",message:`Shape "${p.label||p.id}" has an unsupported line cap, join, or ending`,objectId:p.id}),p.points!==void 0&&!un(p.points)){o.push({severity:"error",code:"invalid-polygon-points",message:`Shape "${p.label||p.id}" points must be a list of points`,objectId:p.id});continue}if(p.kind==="polygon"){let L=jn(p.points??[]);if(!L.ok)o.push({severity:"error",code:"invalid-shape-polygon",message:`Shape "${p.label||p.id}" has invalid polygon geometry: ${L.message}`,objectId:p.id});else{let k=gs(p);k&&o.push({severity:"error",code:"invalid-shape-outline",message:`Shape "${p.label||p.id}" ${k}`,objectId:p.id})}}else(p.edgeCurvature!==void 0||p.holes!==void 0)&&o.push({severity:"error",code:"invalid-shape-outline",message:`Shape "${p.label||p.id}" has curved sides or cut-outs, which only a custom outline can have`,objectId:p.id});let y=cr(p);if(y){for(let L of P)if(sr(y,L.outline)){o.push({severity:"error",code:"reference-focal-overlaps-section",message:`Reference focal area "${p.label??p.id}" overlaps section "${L.label}"`,objectId:p.id});break}}}}R>n&&o.push({severity:"error",code:"inventory-capacity-exceeded",message:`Chart has ${R} bookable units; the maximum is ${n}`}),o.push(...I.slice(0,5)),I.length>5&&o.push({severity:"error",code:"duplicate-seat-label",message:`${I.length} seats share a label with another seat; the first 5 are listed above. Seat labels must be unique across the whole chart.`});for(let a of Ve(e)){let P=a.families[0]?.targets[0];r.push({severity:"warning",code:"category-inventory-family-conflict",message:Jt(a),categoryKey:a.categoryKey,...P?{objectId:P.id,floorId:P.floorId}:{},relatedObjectIds:a.objectIds,categoryInventoryFamilies:a.families})}e.focalPoint||r.push({severity:"warning",code:"missing-focal-point",message:"Chart has no focal point set"}),E===0&&r.push({severity:"warning",code:"no-bookables",message:"Chart has no rows, tables, booths, or GA areas"});for(let a of l)if(u.get(a)===!1){let P=e.categories.find(p=>p.key===a);r.push({severity:"warning",code:"unpriced-category",message:`Category "${P?.label??a}" is used but has no price`,categoryKey:a})}return[...o,...r]}function gs(e){let t=e.points??[];if(e.edgeCurvature!==void 0&&(!Array.isArray(e.edgeCurvature)||e.edgeCurvature.length!==t.length||e.edgeCurvature.some(n=>typeof n!="number"||!Number.isFinite(n)||n<-100||n>100)))return"needs one side curve from -100 to 100 for each side";if(e.holes===void 0)return null;if(!dn(e.holes)||e.holes.length>Nn)return"has an invalid cut-out collection";for(let n=0;n<e.holes.length;n+=1){let o=e.holes[n];if(o.length<3||o.length>512||!ue(o)||Math.abs(me(o))<=1e-7||ge(o))return`has an invalid cut-out ${n+1}`;if(!$n(e,o))return`has cut-out ${n+1} outside its outline`;for(let r=0;r<n;r+=1){let i=e.holes[r];if(Dn(o,i))return`has cut-outs ${r+1} and ${n+1} overlapping`}}return null}var Ar=e=>!!("entrance"in e&&e.entrance?.trim()||"entranceGateId"in e&&e.entranceGateId);function hs(e){return e.type==="row"||e.type==="table"?e.seatCount:e.type==="booth"?1:e.type==="gaArea"?e.capacity??0:0}function ys(e){let t=fr(e).size,n=[];if(!t)return{gates:t,gaps:n,missingAreas:0,missingPlaces:0};let o=vo(e);for(let r of ee(e)){let i=new Map;for(let l of r.objects){if(l.type!=="section")continue;let d=l.logicalSectionId??l.id;i.set(d,[...i.get(d)??[],l])}let s={floorId:r.id,selectIds:[],names:[],places:0},u=new Set;for(let l of r.objects){if(l.type!=="row"&&l.type!=="table"&&l.type!=="booth"&&l.type!=="gaArea"||Ar(l))continue;let d=o.get(l.id),c=d?i.get(d):void 0;if(!c?.some(Ar))if(s.places+=hs(l),c){if(u.has(d))continue;u.add(d),s.selectIds.push(...c.map(f=>f.id)),s.names.push(c[0].displayLabel??c[0].label)}else s.selectIds.push(l.id),s.names.push(l.label||l.id)}s.names.length&&n.push(s)}return{gates:t,gaps:n,missingAreas:n.reduce((r,i)=>r+i.names.length,0),missingPlaces:n.reduce((r,i)=>r+i.places,0)}}function xs(e){let t=e.slice(0,3).map(o=>`\u201C${o}\u201D`),n=e.length-t.length;return n>0?`${t.join(", ")} and ${n} more`:t.join(t.length===2?" and ":", ")}function Er(e,t){for(let n of ys(e).gaps){let o=n.names.length;t.push({severity:"warning",code:"entrance-missing",dimension:"navigation",source:"quality",title:`${o} ${o===1?"area has":"areas have"} no entrance`,message:`Buyers in ${xs(n.names)} are not told which gate to use.`,action:"Select them, then choose a gate for them in the Gate panel, or use Pick on the map there.",objectId:n.selectIds[0],relatedObjectIds:n.selectIds,floorId:n.floorId,autoFixable:!1})}}var vs=9,_r="#f7f8fb",Ss="#f5f6f8",jr="#8b93a7",Is="#0b1220",ws="#0b1220",Ms="#ffffff",Cs=100,mn=e=>e.semanticKind==="icon"&&ht(e.iconKey);function F(e,t=2){let n=10**t;return Math.round(e*n)/n}function U(e){return{source:"quality",...e}}function Os(e){return e.code==="missing-focal-point"||e.code==="missing-zone-focal-point"?"navigation":"structure"}function bn(e){return vs*So(e.theme?.seatScale)}function Nr(e){let t=[];for(let n of e.objects)n.type==="row"?t.push(...Q(n)):n.type==="table"&&t.push(...te(n));return t}function ks(e){let t={rowSeats:0,tableSeats:0,booths:0,gaCapacity:0};for(let n of e)for(let o of n.objects)o.type==="row"?t.rowSeats+=Q(o).length:o.type==="table"?t.tableSeats+=te(o).length:o.type==="booth"?t.booths+=1:o.type==="gaArea"&&(t.gaCapacity+=Math.max(0,Math.floor(o.capacity)));return{inventoryByKind:t,bookableUnits:t.rowSeats+t.tableSeats+t.booths+t.gaCapacity}}function H(e,t){e.filter(n=>n.code===t.code).length<Cs&&e.push(t)}function As(e,t,n){let o=bn(e),r=2*o,i=2.3*o,s=0,u=0,l=1/0;for(let d of t){let c=new Map(d.objects.filter(I=>I.type==="row").map(I=>[I.id,I])),f=I=>{let A=d.objects.find(x=>x.id===I);if(!A||A.type!=="row"&&A.type!=="table")return"another seating object";let E=A.type==="row"?Q(A):te(A),R=E.length?{x:E.reduce((x,O)=>x+O.x,0)/E.length,y:E.reduce((x,O)=>x+O.y,0)/E.length}:A.type==="row"?A.origin:A.center,M=d.objects.find(x=>x.type==="section"&&re(R,x.outline,x.holes)),w=A.type==="row"?`Row \u201C${A.label}\u201D`:`Table \u201C${A.label}\u201D`;return M?.type==="section"?`${w} in \u201C${M.label}\u201D`:w},b=Nr(d);s+=b.length;let m=i,g=new Map,S=new Map;for(let I of b){let A=Math.floor(I.x/m),E=Math.floor(I.y/m);for(let w=-1;w<=1;w++)for(let x=-1;x<=1;x++){let O=g.get(`${A+w}:${E+x}`)??[];for(let v of O){u++;let C=Math.hypot(I.x-v.x,I.y-v.y);if(l=Math.min(l,C),C>=i)continue;let P=(I.rowId<v.rowId?[I.rowId,v.rowId]:[v.rowId,I.rowId]).join("|"),p=S.get(P);(!p||C<p.distance)&&S.set(P,{a:I,b:v,distance:C})}}let R=`${A}:${E}`,M=g.get(R)??[];M.push(I),g.set(R,M)}for(let I of S.values()){let A=I.a.rowId===I.b.rowId,E=c.get(I.a.rowId),R=c.get(I.b.rowId),M=!A&&E?.segmentedRow?.repeatLabelOnComponents===!0&&R?.segmentedRow?.repeatLabelOnComponents===!0&&E.segmentedRow.groupId===R.segmentedRow.groupId,w=!!E?.referenceScan&&!!R?.referenceScan&&E.referenceScan.assetId===R.referenceScan.assetId&&E.referenceScan.sectionId===R.referenceScan.sectionId,x=I.distance<r;if((M||w)&&!x)continue;let O=x?"seat-overlap":"seat-cramped",v=f(I.a.rowId),C=f(I.b.rowId),a=F(x?r:i);H(n,U({severity:"warning",code:O,dimension:"geometry",title:x?A?`${v} has overlapping seats`:`${v} and ${C} overlap`:A?`${v} has seats too close together`:`${v} and ${C} are too close together`,message:x?`The closest seats are ${It(e,I.distance)} apart, so their markers overlap on the buyer map; at least ${It(e,a)} keeps them apart.`:`The closest seats are ${It(e,I.distance)} apart; at least ${It(e,a)} is needed.`,action:A?`Increase the seat spacing for ${v}, or use Review safe fixes.`:`Move ${v} or ${C} until they no longer overlap.`,objectId:I.a.rowId,relatedObjectIds:A?[I.a.rowId]:[I.a.rowId,I.b.rowId],floorId:d.id,measured:F(I.distance),minimum:a,autoFixable:A}))}}return{seats:s,checkedSeatPairs:u,minimumSeatDistance:Number.isFinite(l)?F(l):null}}function wt(e){let{width:t,height:n}=mn(e)?{width:e.fontSize,height:e.fontSize}:kn(e);if(!e.rotation)return{x:e.position.x,y:e.position.y,width:t,height:n};let o=[{x:0,y:0},{x:t,y:0},{x:t,y:n},{x:0,y:n}].map(r=>{let i=An(r,e.rotation);return{x:e.position.x+i.x,y:e.position.y+i.y}});return Mo(o)}function $r(e,t,n=0){return e.x<t.x+t.width+n&&e.x+e.width+n>t.x&&e.y<t.y+t.height+n&&e.y+e.height+n>t.y}function pn(e,t,n){let o=q(t.x,e.x,e.x+e.width),r=q(t.y,e.y,e.y+e.height);return(t.x-o)**2+(t.y-r)**2<n**2}function Es(e,t,n){let o=bn(e),r=0;for(let i of t){let s=i.objects.filter(l=>l.type==="text"),u=Nr(i);r+=s.length;for(let l=0;l<s.length;l++){let d=s[l],c=wt(d),f=u.find(b=>pn(c,b,o));f&&H(n,U({severity:"warning",code:"label-collision",dimension:"labels",message:`Text \u201C${d.text}\u201D overlaps seat ${f.label}`,objectId:d.id,relatedObjectIds:[d.id,f.rowId],floorId:i.id,autoFixable:!0}));for(let b=0;b<l;b++){let m=s[b];$r(c,wt(m),2)&&H(n,U({severity:"warning",code:"label-collision",dimension:"labels",message:`Text \u201C${d.text}\u201D overlaps text \u201C${m.text}\u201D`,objectId:d.id,relatedObjectIds:[d.id,m.id],floorId:i.id,autoFixable:!0}))}}}return r}function Ps(e,t){let n=!e.categoryKey.trim();if(e.type==="booth")return{places:n?1:0};if(e.type==="gaArea")return{places:n?Math.max(1,Math.floor(e.capacity)):0};if(e.type==="table"&&(e.bookAsWhole||e.variableOccupancy))return{places:n?e.seatCount:0};let o=new Map((e.overrides??[]).map(s=>[s.index,s])),r=[],i=0;for(let s=0;s<e.seatCount;s+=1){let u=o.get(s);if(u?.skip)continue;i+=1;let l=u?.categoryKey;(l===void 0?n:!l.trim()||!t.has(l))&&r.push(s)}return r.length?r.length===i?{places:i}:{places:r.length,seatIndices:r}:{places:0}}function fn(e){return e.normalize("NFKC").trim().toLowerCase().replace(/\s+/g," ")}function Rs(e,t,n){let o=new Map,r=new Set(e.categories.map(l=>l.key));for(let l of t)for(let d of l.objects){let c=d.type,f=c==="row"||c==="table"||c==="booth"||c==="gaArea",b=f||c==="section",m=f?Ps(d,r):null;if(f&&m&&m.places>0){let S=`${c==="gaArea"?"GA area":c==="row"?"Row":c==="table"?"Table":"Booth"} \u201C${d.label||d.id}\u201D`,I=c==="gaArea"?"place":c==="table"?"chair":c==="booth"?"booth":"seat",A=`${m.places} ${I}${m.places===1?"":"s"}`;H(n,U({severity:"warning",code:"object-uncategorized",dimension:"structure",title:m.seatIndices?`${S} has ${A} with no category`:`${S} has no category`,message:m.seatIndices?`${A} in ${S} have no category, so buyers see no price or colour for them.`:`${S} is not assigned to any category (${A}), so buyers see no price or colour for it.`,action:"Select it and pick a category on the Categories bar, or create one there first.",objectId:d.id,floorId:l.id,autoFixable:!1,...m.seatIndices?{seatIndices:m.seatIndices}:{}}))}if(b){let g=(d.type==="section"?d.displayLabel??d.label:d.label)??"";if(g.trim()){if(c==="table"||c==="booth"||c==="gaArea"){let S=fn(g),I=o.get(S);I&&I.raw!==g?H(n,U({severity:"warning",code:"duplicate-object-label-normalized",dimension:"labels",title:`\u201C${g}\u201D and \u201C${I.raw}\u201D read as the same label`,message:`Labels \u201C${g}\u201D and \u201C${I.raw}\u201D differ only by case, spacing, or accents, so buyers cannot tell them apart.`,action:"Make the two labels visibly distinct.",objectId:d.id,relatedObjectIds:[d.id,I.id],floorId:l.id,autoFixable:!1})):I||o.set(S,{id:d.id,raw:g})}}else{let S=c==="gaArea"?"A GA area":c==="section"?"A section":c==="row"?"A row":c==="table"?"A table":"A booth";H(n,U({severity:"warning",code:"object-unlabeled",dimension:"labels",title:`${S} has no label`,message:`${S} has an empty label; buyers rely on labels to identify what they are booking.`,action:"Give this object a short, unique label in the inspector.",objectId:d.id,floorId:l.id,autoFixable:!1}))}}}let i=[];for(let l of t){let d=l.objects.filter(c=>c.type==="row"||c.type==="table"||c.type==="booth"||c.type==="gaArea");for(let c of l.objects)if(!(c.type!=="section"||c.referenceInventoryExclusion||d.some(b=>re(ae(b),c.outline,c.holes)))){if(c.referenceSource){i.push({id:c.id,floorId:l.id});continue}H(n,U({severity:"warning",code:"empty-section",dimension:"structure",title:`Section \u201C${c.displayLabel??c.label}\u201D is empty`,message:`Section \u201C${c.displayLabel??c.label}\u201D contains no rows, tables, booths, or GA areas.`,action:"Add seating inside this section (Fill with rows), or remove the empty section.",objectId:c.id,floorId:l.id,autoFixable:!1}))}}i.length&&H(n,U({severity:"warning",code:"empty-section",dimension:"structure",title:i.length===1?"1 traced section has no seating yet":`${i.length} traced sections have no seating yet`,message:`${i.length} section${i.length===1?"":"s"} traced from the reference image contain${i.length===1?"s":""} no rows, tables, booths, or GA areas.`,action:"Fill them with rows, or remove the ones the venue does not sell.",objectId:i[0].id,relatedObjectIds:i.map(l=>l.id),floorId:i[0].floorId,autoFixable:!1}));let s=new Map,u=new Map;for(let l of t){let d=[];for(let c of l.objects)c.type!=="section"||c.outline.length<3||d.push({id:c.logicalSectionId??c.id,outline:c.outline,...c.holes?{holes:c.holes}:{},bounds:Ns(c.outline)});for(let c of l.objects){if(c.type!=="row")continue;let f=(c.segmentedRow?.displayLabel??c.displayLabel??c.label??"").trim(),b=(c.displayType??"").trim(),m=f&&b&&fn(b)!=="row"?`${b} ${f}`:f,g="";if(d.length){let E=ae(c),R=d.find(M=>E.x>=M.bounds.minX&&E.x<=M.bounds.maxX&&E.y>=M.bounds.minY&&E.y<=M.bounds.maxY&&re(E,M.outline,M.holes));R&&(g=R.id)}let S=`${l.id}\0${g}\0${fn(m)}`,I=c.segmentedRow?.groupId??c.id;if(!m){let E=`${l.id}\0${g}`,R=u.get(E);R?(R.ids.push(c.id),R.logical.set(I,[...R.logical.get(I)??[],c])):u.set(E,{ids:[c.id],logical:new Map([[I,[c]]]),floorId:l.id});continue}let A=s.get(S);A?(A.ids.push(c.id),A.logical.set(I,[...A.logical.get(I)??[],c])):s.set(S,{ids:[c.id],logical:new Map([[I,[c]]]),floorId:l.id,raw:m})}}for(let{ids:l,logical:d,floorId:c,raw:f}of s.values()){let b=d.size;b<2||Pr([...d.values()])&&H(n,U({severity:"warning",code:"duplicate-row-label",dimension:"labels",title:`${b} rows share the name \u201C${f}\u201D`,message:`${b} rows share the label \u201C${f}\u201D, so buyers cannot tell which row a seat belongs to.`,action:"Rename them so each row reads differently: for example the section or box each belongs to.",objectId:l[0],relatedObjectIds:l,floorId:c,autoFixable:!1}))}for(let{ids:l,logical:d,floorId:c}of u.values()){let f=d.size;f<2||Pr([...d.values()])&&H(n,U({severity:"warning",code:"unnamed-row-collision",dimension:"labels",title:`${f} rows have no name`,message:`${f} rows in the same area have no name and repeat each other\u2019s seat numbers, so buyers cannot tell which row a seat belongs to.`,action:"Give each of these rows a name, for example the box each belongs to, so a ticket can say which row a seat is in.",objectId:l[0],relatedObjectIds:l,floorId:c,autoFixable:!1}))}if(e.floors&&e.floors.length>1)for(let l of e.floors)l.objects.length===0&&H(n,U({severity:"warning",code:"unused-floor",dimension:"structure",title:`${Tr(l.name)} is empty`,message:`${Tr(l.name)} has nothing on it yet.`,action:"Add seating to this floor, copy the floor below, or remove it in Structure.",floorId:l.id,autoFixable:!1}))}var Ls=5,Ts=16;function _s(e,t,n){for(let o of t){let r=o.focalPoint??e.focalPoint;if(r)for(let i of o.objects){if(i.type!=="section"||i.outline.length<3)continue;let{rake:s}=Be(i);if(s<Ls)continue;let u=i.outline.map(b=>Math.hypot(b.x-r.x,b.y-r.y)),l=Math.max(...u);if(l<=0)continue;let d=(l-Math.min(...u))/l;if(s*d<=Ts)continue;let f=i.displayLabel??i.label;H(n,U({severity:"warning",code:"section-rake-inconsistent",dimension:"geometry",title:`Section \u201C${f}\u201D is too deep for a single rake`,message:`Section \u201C${f}\u201D spans ${Math.round(d*100)}% of its distance to the stage at a ${Math.round(s)}\xB0 rake, so one rake can't represent its sightlines faithfully: a real tier this deep changes slope at a cross-aisle.`,action:"Split this section at the cross-aisle into two sections, each with its own rake.",objectId:i.id,floorId:o.id,autoFixable:!1}))}}}function js(e,t,n){let o=e.theme?.background??_r,r=Ss,i=new Map;for(let d of t)for(let c of d.objects){if(c.type!=="gaArea")continue;let f=i.get(c.categoryKey)??[];f.push({id:c.id,floorId:d.id}),i.set(c.categoryKey,f)}for(let d of e.categories){let c=J(d.color,o),f=J(d.color,r);if(c==null||f==null){H(n,U({severity:"error",code:"invalid-category-color",dimension:"contrast",message:`Category \u201C${d.label}\u201D does not use a supported hex color`,categoryKey:d.key}));continue}let b=Math.min(c,f);b<3&&H(n,U({severity:"warning",code:"category-contrast-low",dimension:"contrast",title:`Category \u201C${d.label}\u201D is hard to see`,message:`Its colour is too close to light or dark chart backgrounds (${F(b)}:1, needs 3:1). Pick a stronger colour.`,action:`Choose a lighter or darker color for \u201C${d.label}\u201D until this warning clears.`,categoryKey:d.key,measured:F(b),minimum:3,autoFixable:!1}));let m=i.get(d.key)??[];if(m.length){let g=Qt(d.color,o,qt),S=Qt(d.color,r,qt),I=Math.min(J(g,o)??0,J(S,r)??0);I<3&&H(n,U({severity:"warning",code:"ga-contrast-low",dimension:"contrast",title:`Standing areas in \u201C${d.label}\u201D are hard to see`,message:`Their pale fill is too close to the chart background (${F(I)}:1, needs 3:1). Pick a stronger colour for \u201C${d.label}\u201D.`,objectId:m[0].id,categoryKey:d.key,floorId:m[0].floorId,relatedObjectIds:m.map(A=>A.id),measured:F(I),minimum:3,autoFixable:!1}))}}for(let d=0;d<e.categories.length;d++)for(let c=0;c<d;c++){let f=e.categories[d],b=e.categories[c],m=wo(f.color,b.color);m!=null&&m<25&&H(n,U({severity:"warning",code:"category-colors-too-similar",dimension:"contrast",title:`\u201C${f.label}\u201D and \u201C${b.label}\u201D look too similar`,message:`Categories \u201C${f.label}\u201D and \u201C${b.label}\u201D are only \u0394E ${F(m)} apart; 25 is required`,action:"Pick a visibly different color for either category so buyers can tell them apart.",categoryKey:f.key,measured:F(m),minimum:25,autoFixable:!1}))}for(let d of t){let c=d.objects.filter(f=>f.type==="text");for(let f of c){if(mn(f))continue;let b=f.color??e.theme?.textColor??jr,m=J(b,o),g=f.fontSize>=18?3:4.5;(m==null||m<g)&&H(n,U({severity:"warning",code:"text-contrast-low",dimension:"contrast",message:`Text \u201C${f.text}\u201D has ${F(m??0)}:1 contrast against the chart background; ${g}:1 is required`,objectId:f.id,floorId:d.id,measured:F(m??0),minimum:g,autoFixable:!0}))}}if(e.theme?.selectionColor){let d=J(e.theme.selectionColor,o);(d==null||d<3)&&H(n,U({severity:"warning",code:"selection-contrast-low",dimension:"contrast",title:"The selection color is hard to see",message:`Selection rings have ${F(d??0)}:1 contrast against the chart background; 3:1 is required.`,action:"In Theme, choose a Selection color that stands out clearly from the Background color.",measured:F(d??0),minimum:3,autoFixable:!1}))}if(e.theme?.textColor){let d=J(e.theme.textColor,o);(d==null||d<3)&&H(n,U({severity:"warning",code:"theme-text-contrast-low",dimension:"contrast",title:"The theme text color is hard to read",message:`Theme text has ${F(d??0)}:1 contrast against the chart background; 3:1 is required.`,action:"In Theme, choose a Text color with stronger contrast against the Background color.",measured:F(d??0),minimum:3,autoFixable:!1}))}let s=e.theme?.seatLabelColor??Is,u=new Map,l=(d,c,f)=>{let b=u.get(d)??new Map,m=b.get(c)??[];m.push(f),b.set(c,m),u.set(d,b)};for(let d of t)for(let c of d.objects)if(c.type==="row")for(let f of He(c).keys())l(f,"seat",c.id);else if(c.type==="table")for(let f of He(c).keys())l(f,"table seat",c.id);else c.type==="booth"&&l(c.categoryKey,"booth",c.id);for(let d of e.categories){let c=u.get(d.key);if(c)for(let[f,b]of c){let m=f==="booth"?Po:Eo,g=To(Ro,600),S=_o(d.color,s),I=J(S,d.color);(I==null||I<g)&&H(n,U({severity:"warning",code:"bookable-label-contrast-low",dimension:"contrast",message:`${f==="booth"?"Booth":f==="seat"?"Seat":"Table-seat"} labels use ${m}u type and have ${F(I??0)}:1 contrast on category \u201C${d.label}\u201D; ${g}:1 is required for small text`,objectId:b[0],relatedObjectIds:b,measured:F(I??0),minimum:g,autoFixable:!0}))}}}function Pr(e){if(e.length>24)return!0;let t=new Set;for(let n of e){let o=new Set;for(let r of n)for(let i of Q(r)){let s=i.label,u=s.lastIndexOf("-");o.add(u>=0?s.slice(u+1):s)}if(!o.size)return!0;for(let r of o)if(t.has(r))return!0;for(let r of o)t.add(r)}return!1}function Ns(e){let t=1/0,n=1/0,o=-1/0,r=-1/0;for(let i of e)i.x<t&&(t=i.x),i.y<n&&(n=i.y),i.x>o&&(o=i.x),i.y>r&&(r=i.y);return{minX:t,minY:n,maxX:o,maxY:r}}function $s(e,t){for(let n of e){let o=n.objects.filter(r=>r.type==="section");if(!(o.length<2))for(let r of n.objects){if(!(r.type==="row"||r.type==="table"||r.type==="booth"||r.type==="gaArea"))continue;let s=ae(r),u=o.filter(m=>re(s,m.outline,m.holes)),l=new Map;for(let m of u){let g=m.logicalSectionId??m.id,S=l.get(g)??[];S.push(m),l.set(g,S)}if(l.size<2)continue;let d=[...l.values()],c=d.map(m=>`Section \u201C${m[0].displayLabel??m[0].label}\u201D`),f=c.length===2?c.join(" and "):`${c.slice(0,-1).join(", ")}, and ${c[c.length-1]}`,b=r.type==="gaArea"?"GA area":r.type==="row"?"Row":r.type==="table"?"Table":"Booth";H(t,U({severity:"warning",code:"ambiguous-section-ownership",dimension:"structure",title:`${b} \u201C${r.label}\u201D belongs to more than one section`,message:`${b} \u201C${r.label}\u201D has its center inside ${f}, so its buyer section is unclear.`,action:"Adjust the boundaries until this object sits in one Section. If the overlapping shapes are meant to form one Section, combine them first.",objectId:r.id,relatedObjectIds:[r.id,...d.flatMap(m=>m.map(g=>g.id))],floorId:n.id,autoFixable:!1}))}}}var Fs={structure:20,geometry:30,contrast:25,labels:15,navigation:10},Ds={"seat-overlap":15,"seat-cramped":4,"label-collision":4,"category-contrast-low":3,"ga-contrast-low":3,"category-colors-too-similar":3,"invalid-category-color":10,"text-contrast-low":4,"bookable-label-contrast-low":3,"selection-contrast-low":3,"theme-text-contrast-low":3,"missing-focal-point":10,"object-uncategorized":3,"object-unlabeled":3,"duplicate-object-label-normalized":2,"empty-section":2,"unused-floor":2,"ambiguous-section-ownership":4,"category-inventory-family-conflict":10};function Bs(e){let t={...Fs};for(let r of e){let i=r.severity==="error"?10:2;t[r.dimension]=Math.max(0,t[r.dimension]-(Ds[r.code]??i))}let n=Object.values(t).reduce((r,i)=>r+i,0),o=n>=95?"A":n>=85?"B":n>=70?"C":n>=55?"D":"F";return{overall:n,dimensions:t,errorFree:e.every(r=>r.severity!=="error"),grade:o}}var Gs=new Set(["unpriced-category","object-uncategorized"]);function Rr(e,t={}){let n=ee(e),o=kr(e,{maxInventory:t.maxInventory}).filter(c=>c.code!=="missing-zone-focal-point"||t.requireExplicitZoneFocals).map(c=>{let f=c.objectId?n.find(g=>g.objects.some(S=>S.id===c.objectId))?.id:void 0,b=c.code==="category-inventory-family-conflict",m=b?e.categories.find(g=>g.key===c.categoryKey):void 0;return U({...c,...b?{severity:"error",title:`Category \u201C${m?.label??c.categoryKey??"Unknown"}\u201D spans incompatible inventory types`,action:"Show the affected objects, then review the safe category split. The repair preserves price, ticket tiers, accessibility assignments, and source provenance."}:{},...t.requireExplicitZoneFocals&&c.code==="missing-zone-focal-point"?{severity:"error"}:{},...f?{floorId:f}:{},source:"structural",dimension:Os(c),autoFixable:b})}),r=As(e,n,o),i=ks(n),s=Es(e,n,o);if(Rs(e,n,o),$s(n,o),_s(e,n,o),js(e,n,o),Er(e,o),n.reduce((c,f)=>c+f.objects.filter(b=>b.type==="row"||b.type==="table"||b.type==="booth"||b.type==="gaArea").length,0)===0){let c=new Set(["missing-focal-point","no-bookables"]);for(let f=o.length-1;f>=0;f--)c.has(o[f].code)&&o.splice(f,1)}if(t.requirePricedInventory)for(let c=0;c<o.length;c++)Gs.has(o[c].code)&&(o[c]={...o[c],severity:"error"});let l=o.filter(c=>c.severity==="error"),d=o.filter(c=>c.severity==="warning");return{issues:o,errors:l,warnings:d,metrics:{floors:n.length,objects:n.reduce((c,f)=>c+f.objects.length,0),seats:r.seats,bookableUnits:i.bookableUnits,inventoryByKind:i.inventoryByKind,categories:e.categories.length,freeTextLabels:s,checkedSeatPairs:r.checkedSeatPairs,minimumSeatDistance:r.minimumSeatDistance},score:Bs(o),deferredRules:["rendered-row-label-decollision","rendered-bookable-state-contrast","section-focus-opacity-and-backdrop","24px-pointer-hit-target","reference-image-diff","sightline-blocked","ga-density-high"]}}function Us(e,t){if(e.seatCount<2||e.seatSpacing>=t)return!1;let n=$e(Q(e));e.seatSpacing=F(t,3);let o=$e(Q(e));return e.origin.x=F(e.origin.x+n.x-o.x,3),e.origin.y=F(e.origin.y+n.y-o.y,3),!0}function Ks(e,t){if(e.seatCount<2)return!1;let n=!1;if(e.shape==="round"){let o=q(e.seatArc??360,0,360),r=(o>=360?360/e.seatCount:o/(e.seatCount-1))*Math.PI/180;if(r>0){let i=t/(2*Math.sin(r/2)),s=Math.max(1,i-16);(e.radius??40)<s&&(e.radius=F(s,3),n=!0)}}else{let o=Ue(e),r=Math.max(o.top,o.bottom),i=Math.max(o.left,o.right);r>1&&(e.width??80)/r<t&&(e.width=F(r*t,3),n=!0),i>1&&(e.height??50)/i<t&&(e.height=F(i*t,3),n=!0)}return n}function Vs(e){return[ws,Ms].map(n=>({color:n,minimum:Math.min(...e.map(o=>J(n,o)??0))})).sort((n,o)=>o.minimum-n.minimum)[0].color}function Lr(e,t,n){let o=wt(e),r=0;for(let i of t)i.type==="row"?r+=Q(i).filter(s=>pn(o,s,n)).length:i.type==="table"?r+=te(i).filter(s=>pn(o,s,n)).length:i.type==="text"&&i.id!==e.id&&$r(o,wt(i),2)&&r++;return r}function Hs(e,t,n){if(Lr(e,t,n)===0)return!1;let r={...e.position},i=Math.max(12,e.fontSize*1.25),s=[[0,-1],[1,0],[0,1],[-1,0],[1,-1],[1,1],[-1,1],[-1,-1]];for(let u=1;u<=12;u++)for(let[l,d]of s)if(e.position={x:F(r.x+l*i*u,3),y:F(r.y+d*i*u,3)},Lr(e,t,n)===0)return!0;return e.position=r,!1}function Fr(e,t={}){let n=JSON.parse(JSON.stringify(e)),o=Rr(n,t),r=[],i=en(n);if(i.changed){n=i.doc;for(let f of i.changes){let b=i.before.find(g=>g.categoryKey===f.categoryKey),m=b?.families.map(g=>g.label).join(", ")??"inventory families";r.push({code:"category-inventory-family-conflict",objectId:b?.objectIds[0],message:`Split category \u201C${f.categoryLabel}\u201D across ${m}; preserved its commercial metadata and reassigned ${f.reassignments.length} affected object${f.reassignments.length===1?"":"s"}`})}}let s=bn(n),u=2.5*s,l=ee(n);for(let f of l)for(let b of f.objects)if(b.type==="row"){let m=b.seatSpacing;Us(b,u)&&r.push({code:m<2*s?"seat-overlap":"seat-cramped",objectId:b.id,message:`Expanded ${b.id} to the ${F(u)}u target pitch while preserving its centre`})}else b.type==="table"&&Ks(b,u)&&r.push({code:"seat-cramped",objectId:b.id,message:`Expanded ${b.id} so its perimeter seats meet the ${F(u)}u target pitch`});let d=n.theme?.background??_r;for(let f of l)for(let b of f.objects){if(b.type!=="text"||mn(b))continue;let m=b.color??n.theme?.textColor??jr,g=b.fontSize>=18?3:4.5;(J(m,d)??0)<g&&(b.color=Vs([d]),r.push({code:"text-contrast-low",objectId:b.id,message:`Changed ${b.id} to the highest-contrast black/white ink`}))}for(let f of l){let b=f.objects.filter(m=>m.type==="text");for(let m of b)Hs(m,f.objects,s)&&r.push({code:"label-collision",objectId:m.id,message:`Moved ${m.id} to the nearest collision-free deterministic label position`})}n.floors?.length&&(n.objects=n.floors[0].objects);let c=Rr(n,t);return{doc:n,changed:r.length>0,fixes:r,before:o,after:c}}function Tr(e){let t=e.trim();return/^\d+( copy)?$/.test(t)?`Floor ${t}`:`\u201C${t}\u201D`}function It(e,t){return xt(t/(St(e)??rt),vt(e))}function Mt(e){return e.floors?.length?e.floors.flatMap(t=>t.objects):e.objects}function gn(e){return Mt(e).reduce((t,n)=>n.type==="row"?t+ut(n):n.type==="table"?t+bo(n):n.type==="gaArea"?t+Math.max(0,Math.floor(n.capacity)):n.type==="booth"?t+1:t,0)}function zs(e){let t={};for(let o of e.categories??[])t[o.key]=0;let n=(o,r)=>{r>0&&(t[o]=(t[o]??0)+r)};for(let o of Mt(e))if(o.type==="row")for(let r of Q(o))n(r.categoryKey,1);else if(o.type==="table")if(o.bookAsWhole||o.variableOccupancy)n(o.categoryKey,Math.max(0,Math.round(o.seatCount)));else for(let r of te(o))n(r.categoryKey,1);else o.type==="gaArea"?n(o.categoryKey,Math.max(0,Math.floor(o.capacity))):o.type==="booth"&&n(o.categoryKey,1);return t}function Br(e){if(!e.template)return null;let t=Mt(e),n=t.filter(l=>l.type==="row"||l.type==="table"||l.type==="gaArea");if(!n.length)return null;let r=t.filter(l=>l.type==="booth").length+n.reduce((l,d)=>l+(d.type==="table"?2:1),0),i=gn(e),s=Math.max(r+1,Math.min(5e4,i*4)),u=[.5,1,1.5,2].map(l=>q(Math.round(i*l),r,s));return{family:e.template.family,display:e.template.family.replace(/-/g," ").replace(/\b\w/g,l=>l.toUpperCase()),min:r,max:s,presets:["S","M","L","XL"].map((l,d)=>({size:l,seats:u[d]}))}}function Dr(e){let t=Q(e);return t.length?$e(t):{...e.origin}}function Xs(e,t){let n=Br(e);if(!n)return structuredClone(e);let o=structuredClone(e),r=Mt(o),i=r.filter(m=>m.type==="row"||m.type==="table"||m.type==="gaArea"),s=r.filter(m=>m.type==="booth").length,u=Math.max(n.min,Math.min(n.max,Math.round(t))),l=u-s,d=i.map((m,g)=>{let S=m.type==="gaArea"?Math.max(0,Math.floor(m.capacity)):m.seatCount,I=m.type==="table"?2:1;return{object:m,index:g,current:S,minimum:I,value:I,fraction:0}}),c=d.reduce((m,g)=>m+g.minimum,0),f=Math.max(0,l-c),b=d.reduce((m,g)=>m+Math.max(1,g.current-g.minimum),0);for(let m of d){let g=f*Math.max(1,m.current-m.minimum)/b,S=Math.floor(g);m.value+=S,m.fraction=g-S}f=l-d.reduce((m,g)=>m+g.value,0),d.sort((m,g)=>g.fraction-m.fraction||m.index-g.index);for(let m=0;m<f;m++)d[m%d.length].value++;d.sort((m,g)=>m.index-g.index);for(let m of d)if(m.object.type==="row"){let g=Dr(m.object);m.object.seatCount=m.value;let S=Dr(m.object);m.object.origin.x+=g.x-S.x,m.object.origin.y+=g.y-S.y}else if(m.object.type==="table"){let g=m.object;if(g.seatCountsBySide){let S=["top","bottom","left","right"],I=Ue(g),A=S.reduce((M,w)=>M+I[w],0)||1,E=S.map((M,w)=>{let x=m.value*I[M]/A;return{side:M,index:w,value:Math.floor(x),fraction:x-Math.floor(x)}}),R=m.value-E.reduce((M,w)=>M+w.value,0);E.sort((M,w)=>w.fraction-M.fraction||M.index-w.index);for(let M=0;M<R;M++)E[M%E.length].value+=1;E.sort((M,w)=>M.index-w.index),g.seatCountsBySide={top:E[0].value,bottom:E[1].value,left:E[2].value,right:E[3].value},g.sides=S.filter(M=>g.seatCountsBySide[M]>0)}g.seatCount=m.value,g.overrides&&(g.overrides=g.overrides.filter(S=>S.index<m.value),g.overrides.length||delete g.overrides)}else{let g=m.object;g.capacity=ce(g)?Math.min(m.value,pe):m.value,g.variableOccupancy&&(g.maxOccupancy=Math.min(g.maxOccupancy??g.capacity,g.capacity),g.minOccupancy=Math.min(g.minOccupancy??1,g.maxOccupancy)),g.wheelchairPlaces&&(g.wheelchairPlaces=Math.min(g.wheelchairPlaces,g.capacity))}return o.floors?.length&&(o.objects=o.floors[0].objects),o.template={family:o.template.family,targetSeats:u},o=Fr(o).doc,o.template={family:e.template.family,targetSeats:gn(o)},o}function _e(e){let t=Number(e.slice(e.lastIndexOf(":")+1));return Number.isFinite(t)?t:-1}function Ys(e,t,n){let o=new Map;for(let s of e){if(s.kind==="booth")continue;let u=o.get(s.rowId);u?u.push(s):o.set(s.rowId,[s])}let r=s=>n.has(s.id)||t(s.id)!=="free",i=[];for(let s of o.values())if(!(s.length<3)){s.sort((u,l)=>_e(u.id)-_e(l.id));for(let u=1;u<s.length-1;u++){let l=s[u];if(r(l))continue;let d=s[u-1],c=s[u+1];_e(l.id)-_e(d.id)!==1||_e(c.id)-_e(l.id)!==1||!r(d)||!r(c)||!n.has(d.id)&&!n.has(c.id)||i.push(l)}}return i}var yn=1,xn=100;function Gr(e,t){if(!Number.isInteger(t)||t<yn||t>xn)return null;let n=e.rotation*Math.PI/180,o={x:Math.cos(n),y:Math.sin(n)},r={x:-o.y,y:o.x};return Array.from({length:t},(i,s)=>{let u=e.style==="intertwined"&&s%2===1?e.seatSpacing/2:0;return{type:"row",id:`__block_preview_${s}`,label:"",origin:{x:e.origin.x+r.x*s*e.rowGap+o.x*u,y:e.origin.y+r.y*s*e.rowGap+o.y*u},rotation:e.rotation,curve:e.curve,seatCount:e.seatsPerRow,seatSpacing:e.seatSpacing,categoryKey:"__preview__"}})}function hn(e,t=e.rowCount){let n=Gr(e,t);return n?.length?ae(n[n.length-1]):null}function Ws(e,t){if(!Number.isFinite(t.x)||!Number.isFinite(t.y)||e.rowGap<=0)return null;let n=hn(e,1);if(!n)return null;let o=e.rotation*Math.PI/180,r={x:-Math.sin(o),y:Math.cos(o)},i=(t.x-n.x)*r.x+(t.y-n.y)*r.y,s=Math.max(yn,Math.min(xn,Math.round(i/e.rowGap)+1)),u=hn(e,s);return u?{rowCount:s,edgePoint:u}:null}function Zs(e,t){return e.length!==t.rowCount?!1:[...e].sort((o,r)=>(o.rowBlockGeneration?.rowIndex??1/0)-(r.rowBlockGeneration?.rowIndex??1/0)).every((o,r)=>{let i=o.rowBlockGeneration;return i?.kind==="row-block-v1"&&i.groupId===t.groupId&&i.rowIndex===r&&i.signature===t.signature&&JSON.stringify(i)===JSON.stringify({...t,rowIndex:r})})}function Ur(e){let t=(e%360+360)%360,n=t>=180?t-360:t;return Object.is(n,-0)||Math.abs(n)<1e-9?0:n}var he=1,ye=300,vn=330;function We(e){return e.seatCount>1?e.curve/(e.seatCount-1):0}function Kr(e,t){let n=e.rotation*Math.PI/180,o=We(e)*Math.PI/180,r,i;if(Math.abs(o)<1e-9)r=t*e.seatSpacing,i=0;else{let s=e.seatSpacing/(2*Math.sin(Math.abs(o)/2)),u=o*t;r=s*Math.sin(u),i=-s+s*Math.cos(u)}return{x:e.origin.x+r*Math.cos(n)-i*Math.sin(n),y:e.origin.y+r*Math.sin(n)+i*Math.cos(n)}}function qs(e,t,n){let o=(e??[]).map(r=>({...r,index:r.index+t})).filter(r=>r.index>=0&&r.index<n);return o.length?o:void 0}function Vr(e,t){if(e.path||!Number.isInteger(t)||t<he||t>ye)return null;let n=We(e);return{...e,seatCount:t,curve:n*(t-1)}}function Hr(e,t){if(e.path||!Number.isInteger(t)||t<he||t>ye)return null;let n=We(e),o=e.seatCount-t,r=-o;return{...e,origin:Kr(e,o),rotation:Ur(e.rotation-n*o),seatCount:t,curve:n*(t-1),overrides:qs(e.overrides,r,t)}}function zr(e,t=e.seatCount){let n=Vr(e,t);return n?Kr(n,t-1):null}function Xr(e,t=e.seatCount){return Hr(e,t)?.origin??null}function Qs(e,t){if(e.path||!Number.isFinite(t.x)||!Number.isFinite(t.y))return null;let n=We(e),o=Math.abs(n)<1e-9?ye:Math.min(ye,Math.floor(vn/Math.abs(n))+1),r=null;for(let i=he;i<=Math.max(he,o);i+=1){let s=zr(e,i);if(!s)continue;let u=Math.hypot(s.x-t.x,s.y-t.y),l=n*(i-1);(!r||u<r.distance||u===r.distance&&i<r.seatCount)&&(r={seatCount:i,curve:l,endpoint:s,distance:u})}return r}function Js(e,t){if(e.path||!Number.isFinite(t.x)||!Number.isFinite(t.y))return null;let n=We(e),o=Math.abs(n)<1e-9?ye:Math.min(ye,Math.floor(vn/Math.abs(n))+1),r=null;for(let i=he;i<=Math.max(he,o);i+=1){let s=Xr(e,i);if(!s)continue;let u=Math.hypot(s.x-t.x,s.y-t.y),l=n*(i-1);(!r||u<r.distance||u===r.distance&&i<r.seatCount)&&(r={seatCount:i,curve:l,endpoint:s,distance:u})}return r}var je=class extends Error{constructor(n,o){super(o);this.objectId=n;this.name="GroupedTableProjectionError"}};function ec(e){let t=e.minOccupancy,n=e.maxOccupancy;if(!Number.isInteger(t)||!Number.isInteger(n)||t<1||n<t||n>e.seatCount)throw new je(e.id,`Table "${e.label}" has invalid variable-occupancy bounds`);return{min:t,max:n}}function tc(e,t){if(t!==2)return[];let n=[];for(let o of Ke(e)){if(o.type!=="table"||!o.bookAsWhole&&!o.variableOccupancy)continue;if(o.bookAsWhole&&o.variableOccupancy)throw new je(o.id,`Table "${o.label}" cannot be whole-table and variable-occupancy inventory`);if(!Number.isInteger(o.seatCount)||o.seatCount<1||!o.label.trim())throw new je(o.id,"Grouped tables require a label and at least one chair");let r=o.variableOccupancy?"variable":"whole",i=r==="variable"?ec(o):{min:o.seatCount,max:o.seatCount};n.push({objectId:o.id,label:o.label,...o.displayLabel?{displayLabel:o.displayLabel}:{},...o.displayType?{displayType:o.displayType}:{},categoryKey:o.categoryKey,mode:r,capacity:o.seatCount,minOccupancy:i.min,maxOccupancy:i.max,chairs:te(o)})}return n}function Wr(e){return Array.isArray(e.objects)}function Zr(e,t){if(t.seatsByLabel)return t.seatsByLabel;if(!Wr(e))throw new Error("ticketRestrictions: a categories-only chart document requires options.seatsByLabel");return new Map(ho(e,{resolveEyeHeights:!1}).map(n=>[n.label,n]))}function qr(e){return{code:"ticket_option_not_applicable",labels:e,message:"That ticket choice is not available for the selected seat."}}function Ct(e,t){let n=e.applicability;return n?!(n.seatLabels?.length&&!n.seatLabels.includes(t.label)||n.accessibility?.length&&!n.accessibility.some(o=>t.accessibility?.includes(o))):!0}function nc(e,t){return(e.categories.find(n=>n.key===t.categoryKey)?.tiers??[]).filter(n=>Ct(n,t))}function Sn(e,t,n){let o=e.categories.find(i=>i.key===t.categoryKey)?.tiers;if(!o?.length)return{kind:"none"};let r=n==null?o.find(i=>Ct(i,t)):o.find(i=>i.id===n&&Ct(i,t));return r?{kind:"resolved",tier:r}:{kind:"invalid"}}function oc(e,t){return(e.logicalRowId??e.rowId)===(t.logicalRowId??t.rowId)}function Yr(e){if(Number.isInteger(e.logicalSeatIndex))return e.logicalSeatIndex;let t=e.id.slice(e.id.lastIndexOf(":")+1),n=Number(t);return Number.isInteger(n)?n:void 0}function rc(e,t){if(!oc(e,t))return!1;let n=Yr(e),o=Yr(t);return n!=null&&o!=null&&Math.abs(n-o)===1}function Qr(e,t,n={}){if(!t.length)return null;let o=Zr(e,n),r=t.flatMap(u=>{let l=o.get(u.label);return l?[{selection:u,seat:l}]:[]}),i=r.map(({seat:u})=>u).filter(u=>u.accessibility?.includes("wheelchair")),s=[];for(let{selection:u,seat:l}of r){let d=Sn(e,l,u.tierId),c=d.kind==="resolved"?d.tier:void 0;(l.accessibility?.includes("companion")||c?.restriction==="companion")&&!i.some(b=>b.id!==l.id&&rc(l,b))&&s.push(l.label)}return s.length?{code:"companion_pair_required",labels:s,message:"Select the adjacent wheelchair place with each companion ticket."}:null}function ic(e,t,n={}){if(!t.length)return null;let o=Zr(e,n),r=new Set(e.categories.filter(u=>u.notForSale).map(u=>u.key)),i=[],s=[];for(let u of t){let l=o.get(u.label);if(!l)continue;if(r.has(l.categoryKey)){i.push(l.label);continue}Sn(e,l,u.tierId).kind==="invalid"&&s.push(l.label)}return i.length?{code:"not_for_sale",labels:i,message:"These seats are not for sale."}:s.length?qr(s):Qr(e,t,{seatsByLabel:o})}0&&(module.exports={CATEGORY_INVENTORY_FAMILIES,DEFAULT_EVENT_INVENTORY_LIMIT,GA_UNIT_LABEL_PREFIX,GroupedTableProjectionError,LARGE_VENUE_INVENTORY_MODULE,MAX_DIRECT_ROW_SWEEP,MAX_EVENT_INVENTORY,MAX_GA_CAPACITY,MAX_ONE_PARTY_GUESTS,MAX_ROW_BLOCK_ROWS,MAX_ROW_SEATS,MIN_ROW_BLOCK_ROWS,MIN_ROW_SEATS,ONE_PARTY_LIMIT_MESSAGE,applicableTicketTiers,behindStageLabels,capacityControl,categoryCapacity,chartCapacity,companionSelectionIssue,describeCategoryInventoryConflict,effectiveSeatOwnerCategoryCounts,eventInventoryLimitFor,gaAreasOf,gaBoxBounds,gaBoxMode,gaInventorySegments,gaUnitLabel,gaUnitLabels,gaUnitLabelsForModel,gaWheelchairPlaceCount,gaWheelchairUnitLabels,groupedTableInventory,growJoinedGAInventory,inspectCategoryInventoryConflicts,intactRowBlockMembers,isFullChartDoc,isGaUnitLabel,pickBestAvailable,pickBestAvailableInventory,remediateCategoryInventoryConflicts,resizeChartCapacity,resolveRowBlockCount,resolveRowStartCapacity,resolveRowTerminalCapacity,resolveTicketTierForSeat,rowBlockEdgePoint,rowBlockPreviewRows,rowStartEndpoint,rowTerminalEndpoint,rowWithStartCapacity,rowWithTerminalCapacity,strandedSingles,ticketOptionNotApplicableIssue,ticketSelectionIssue,ticketTierAppliesToSeat,validGAInventorySegments});