@selvajs/selva 2.0.0 → 2.0.2

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 (456) hide show
  1. package/build/client/.!34937!selva_example_0_1_0.gh +0 -0
  2. package/build/client/_app/immutable/assets/0.B0phAlf7.css.gz +0 -0
  3. package/build/client/_app/immutable/assets/20.5bKkcx-V.css +1 -0
  4. package/build/client/_app/immutable/assets/20.5bKkcx-V.css.br +0 -0
  5. package/build/client/_app/immutable/assets/20.5bKkcx-V.css.gz +0 -0
  6. package/build/client/_app/immutable/assets/index.CV-KWLNP.css.gz +0 -0
  7. package/build/client/_app/immutable/chunks/1s2jTHrf.js.gz +0 -0
  8. package/build/client/_app/immutable/chunks/2XlIPTRw.js.gz +0 -0
  9. package/build/client/_app/immutable/chunks/2_FEXmq1.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/2dX6Wjni.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/4tskcAVN.js.gz +0 -0
  12. package/build/client/_app/immutable/chunks/AEyooZaf.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/B1aRL9Hz.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/B8uG8z2c.js.gz +0 -0
  15. package/build/client/_app/immutable/chunks/B8zY50Bc.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/BCse3N0b.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/BGxzXVpM.js.gz +0 -0
  18. package/build/client/_app/immutable/chunks/BM4_iXSA.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/BMGykAfL.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/BNScKugQ.js.gz +0 -0
  21. package/build/client/_app/immutable/chunks/BNzEBMy8.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/BU9URCkw.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/BW4xleRz.js.gz +0 -0
  24. package/build/client/_app/immutable/chunks/BZmrLQwT.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/B_Lmgh7q.js.gz +0 -0
  26. package/build/client/_app/immutable/chunks/BapAUJpM.js.gz +0 -0
  27. package/build/client/_app/immutable/chunks/Bb9xebuT.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/BjkQG7dw.js.gz +0 -0
  29. package/build/client/_app/immutable/chunks/Bmz9gLBz.js.gz +0 -0
  30. package/build/client/_app/immutable/chunks/Bnpwcepm.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/BoR6OKl6.js.gz +0 -0
  32. package/build/client/_app/immutable/chunks/Br5bpmJC.js.gz +0 -0
  33. package/build/client/_app/immutable/chunks/BxCHY0iG.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/{ChSMnQMB.js → C-pNJcZ1.js} +1 -1
  35. package/build/client/_app/immutable/chunks/C-pNJcZ1.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/C-pNJcZ1.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/C1Sz0rtw.js.gz +0 -0
  38. package/build/client/_app/immutable/chunks/C1aQuqo_.js.gz +0 -0
  39. package/build/client/_app/immutable/chunks/C26nmevH.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/C8ko2SLk.js.gz +0 -0
  41. package/build/client/_app/immutable/chunks/CAMhfNhW.js.gz +0 -0
  42. package/build/client/_app/immutable/chunks/CEnIp_6Y.js.gz +0 -0
  43. package/build/client/_app/immutable/chunks/CMjc_m7Z.js.gz +0 -0
  44. package/build/client/_app/immutable/chunks/CRRzXoPz.js.gz +0 -0
  45. package/build/client/_app/immutable/chunks/CXh1ITwj.js.gz +0 -0
  46. package/build/client/_app/immutable/chunks/CZ1oTCKP.js.gz +0 -0
  47. package/build/client/_app/immutable/chunks/Cbu9Tg11.js.gz +0 -0
  48. package/build/client/_app/immutable/chunks/CcYNc8-G.js.gz +0 -0
  49. package/build/client/_app/immutable/chunks/Cdcajer6.js.gz +0 -0
  50. package/build/client/_app/immutable/chunks/Ce2MupFq.js.gz +0 -0
  51. package/build/client/_app/immutable/chunks/CfP1DoGT.js.gz +0 -0
  52. package/build/client/_app/immutable/chunks/CfhPDo21.js.gz +0 -0
  53. package/build/client/_app/immutable/chunks/CkW8YtSm.js.gz +0 -0
  54. package/build/client/_app/immutable/chunks/CoR7xVWs.js.gz +0 -0
  55. package/build/client/_app/immutable/chunks/CpGv0MSX.js.gz +0 -0
  56. package/build/client/_app/immutable/chunks/{D7PHp8xb.js → CqdlMl9v.js} +1 -1
  57. package/build/client/_app/immutable/chunks/CqdlMl9v.js.br +0 -0
  58. package/build/client/_app/immutable/chunks/CqdlMl9v.js.gz +0 -0
  59. package/build/client/_app/immutable/chunks/{4y4xLOS_.js → Cvkx15k5.js} +1 -1
  60. package/build/client/_app/immutable/chunks/Cvkx15k5.js.br +0 -0
  61. package/build/client/_app/immutable/chunks/Cvkx15k5.js.gz +0 -0
  62. package/build/client/_app/immutable/chunks/Cvr8AlQE.js.gz +0 -0
  63. package/build/client/_app/immutable/chunks/D0QMYypb.js.gz +0 -0
  64. package/build/client/_app/immutable/chunks/D40b34QZ.js.gz +0 -0
  65. package/build/client/_app/immutable/chunks/D6MI_dhi.js.gz +0 -0
  66. package/build/client/_app/immutable/chunks/D7l1JayF.js.gz +0 -0
  67. package/build/client/_app/immutable/chunks/D99uXqZb.js.gz +0 -0
  68. package/build/client/_app/immutable/chunks/DEBBEmC0.js.gz +0 -0
  69. package/build/client/_app/immutable/chunks/DNsLImlA.js.gz +0 -0
  70. package/build/client/_app/immutable/chunks/DRDjLZb3.js.gz +0 -0
  71. package/build/client/_app/immutable/chunks/DTJeGfAL.js.gz +0 -0
  72. package/build/client/_app/immutable/chunks/DZFqETAQ.js.gz +0 -0
  73. package/build/client/_app/immutable/chunks/D_wr-JLf.js.gz +0 -0
  74. package/build/client/_app/immutable/chunks/Dl4WTuMB.js.gz +0 -0
  75. package/build/client/_app/immutable/chunks/Doks8ISn.js.gz +0 -0
  76. package/build/client/_app/immutable/chunks/DsnmJJEf.js.gz +0 -0
  77. package/build/client/_app/immutable/chunks/{DdaJZmuM.js → Dw1n4e1Z.js} +1 -1
  78. package/build/client/_app/immutable/chunks/Dw1n4e1Z.js.br +0 -0
  79. package/build/client/_app/immutable/chunks/Dw1n4e1Z.js.gz +0 -0
  80. package/build/client/_app/immutable/chunks/E3yOQTT0.js.gz +0 -0
  81. package/build/client/_app/immutable/chunks/Gxlzmh6y.js.gz +0 -0
  82. package/build/client/_app/immutable/chunks/Ib-7xmHT.js.gz +0 -0
  83. package/build/client/_app/immutable/chunks/P4Np3c9O.js.gz +0 -0
  84. package/build/client/_app/immutable/chunks/Zf7VV5ZB.js.gz +0 -0
  85. package/build/client/_app/immutable/chunks/_OLpdTiI.js.gz +0 -0
  86. package/build/client/_app/immutable/chunks/azBeeLR0.js.gz +0 -0
  87. package/build/client/_app/immutable/chunks/{DHWrMZkd.js → ej-X2XiW.js} +1 -1
  88. package/build/client/_app/immutable/chunks/ej-X2XiW.js.br +0 -0
  89. package/build/client/_app/immutable/chunks/ej-X2XiW.js.gz +0 -0
  90. package/build/client/_app/immutable/chunks/gMllmzma.js.gz +0 -0
  91. package/build/client/_app/immutable/chunks/hRoV10UM.js.gz +0 -0
  92. package/build/client/_app/immutable/chunks/iEBlyxZv.js.gz +0 -0
  93. package/build/client/_app/immutable/chunks/jFKgkeON.js.gz +0 -0
  94. package/build/client/_app/immutable/chunks/ooPBmYPj.js.gz +0 -0
  95. package/build/client/_app/immutable/chunks/pRg-f8xU.js.gz +0 -0
  96. package/build/client/_app/immutable/chunks/uINs3xv3.js.gz +0 -0
  97. package/build/client/_app/immutable/chunks/wamM80bu.js.gz +0 -0
  98. package/build/client/_app/immutable/chunks/xe-rGDG8.js +3 -0
  99. package/build/client/_app/immutable/chunks/xe-rGDG8.js.br +0 -0
  100. package/build/client/_app/immutable/chunks/xe-rGDG8.js.gz +0 -0
  101. package/build/client/_app/immutable/entry/{app.CY1cyDxx.js → app.CFLPIelF.js} +2 -2
  102. package/build/client/_app/immutable/entry/app.CFLPIelF.js.br +0 -0
  103. package/build/client/_app/immutable/entry/app.CFLPIelF.js.gz +0 -0
  104. package/build/client/_app/immutable/entry/start.CrhtzCz1.js +1 -0
  105. package/build/client/_app/immutable/entry/start.CrhtzCz1.js.br +0 -0
  106. package/build/client/_app/immutable/entry/start.CrhtzCz1.js.gz +0 -0
  107. package/build/client/_app/immutable/nodes/0.KJ-PiM1c.js +1 -0
  108. package/build/client/_app/immutable/nodes/0.KJ-PiM1c.js.br +0 -0
  109. package/build/client/_app/immutable/nodes/0.KJ-PiM1c.js.gz +0 -0
  110. package/build/client/_app/immutable/nodes/{1.WcE6FOcF.js → 1.B4cNXFZe.js} +1 -1
  111. package/build/client/_app/immutable/nodes/1.B4cNXFZe.js.br +0 -0
  112. package/build/client/_app/immutable/nodes/1.B4cNXFZe.js.gz +0 -0
  113. package/build/client/_app/immutable/nodes/10.C5pTC9MT.js +3 -0
  114. package/build/client/_app/immutable/nodes/10.C5pTC9MT.js.br +0 -0
  115. package/build/client/_app/immutable/nodes/10.C5pTC9MT.js.gz +0 -0
  116. package/build/client/_app/immutable/nodes/{11.kVvSmSNV.js → 11.DO9irQLl.js} +1 -1
  117. package/build/client/_app/immutable/nodes/11.DO9irQLl.js.br +0 -0
  118. package/build/client/_app/immutable/nodes/11.DO9irQLl.js.gz +0 -0
  119. package/build/client/_app/immutable/nodes/12.BoPfAFdi.js.gz +0 -0
  120. package/build/client/_app/immutable/nodes/{13.JyGUEsdb.js → 13.Cmx49Kub.js} +1 -1
  121. package/build/client/_app/immutable/nodes/13.Cmx49Kub.js.br +0 -0
  122. package/build/client/_app/immutable/nodes/13.Cmx49Kub.js.gz +0 -0
  123. package/build/client/_app/immutable/nodes/{14.BbJglRXt.js → 14.DtWKU29l.js} +1 -1
  124. package/build/client/_app/immutable/nodes/14.DtWKU29l.js.br +0 -0
  125. package/build/client/_app/immutable/nodes/14.DtWKU29l.js.gz +0 -0
  126. package/build/client/_app/immutable/nodes/15.CgB8Kdm8.js +13 -0
  127. package/build/client/_app/immutable/nodes/15.CgB8Kdm8.js.br +0 -0
  128. package/build/client/_app/immutable/nodes/15.CgB8Kdm8.js.gz +0 -0
  129. package/build/client/_app/immutable/nodes/{16.DRADdurD.js → 16.CdiaMjqd.js} +2 -2
  130. package/build/client/_app/immutable/nodes/16.CdiaMjqd.js.br +0 -0
  131. package/build/client/_app/immutable/nodes/16.CdiaMjqd.js.gz +0 -0
  132. package/build/client/_app/immutable/nodes/{17.DOsqdwdd.js → 17.fdmJDdhR.js} +1 -1
  133. package/build/client/_app/immutable/nodes/17.fdmJDdhR.js.br +0 -0
  134. package/build/client/_app/immutable/nodes/17.fdmJDdhR.js.gz +0 -0
  135. package/build/client/_app/immutable/nodes/18.BpVlwZ30.js.gz +0 -0
  136. package/build/client/_app/immutable/nodes/{19.S2J54AdY.js → 19.CSLP9qPo.js} +1 -1
  137. package/build/client/_app/immutable/nodes/19.CSLP9qPo.js.br +0 -0
  138. package/build/client/_app/immutable/nodes/19.CSLP9qPo.js.gz +0 -0
  139. package/build/client/_app/immutable/nodes/{2.CKVtP2Ky.js → 2.BDo-orPp.js} +1 -1
  140. package/build/client/_app/immutable/nodes/2.BDo-orPp.js.br +0 -0
  141. package/build/client/_app/immutable/nodes/2.BDo-orPp.js.gz +0 -0
  142. package/build/client/_app/immutable/nodes/{20.BCasu2g4.js → 20.vMa5OYGG.js} +6 -6
  143. package/build/client/_app/immutable/nodes/20.vMa5OYGG.js.br +0 -0
  144. package/build/client/_app/immutable/nodes/20.vMa5OYGG.js.gz +0 -0
  145. package/build/client/_app/immutable/nodes/{21.C1aTaoAB.js → 21.BXpF6SCn.js} +1 -1
  146. package/build/client/_app/immutable/nodes/21.BXpF6SCn.js.br +0 -0
  147. package/build/client/_app/immutable/nodes/21.BXpF6SCn.js.gz +0 -0
  148. package/build/client/_app/immutable/nodes/{23.DP5Be3HR.js → 23.sYDue3fB.js} +1 -1
  149. package/build/client/_app/immutable/nodes/23.sYDue3fB.js.br +0 -0
  150. package/build/client/_app/immutable/nodes/23.sYDue3fB.js.gz +0 -0
  151. package/build/client/_app/immutable/nodes/{24.BB6fXxnh.js → 24.CMNCTbEg.js} +1 -1
  152. package/build/client/_app/immutable/nodes/24.CMNCTbEg.js.br +0 -0
  153. package/build/client/_app/immutable/nodes/24.CMNCTbEg.js.gz +0 -0
  154. package/build/client/_app/immutable/nodes/25.oeBaWIUn.js.gz +0 -0
  155. package/build/client/_app/immutable/nodes/26.lPx5SjN1.js.gz +0 -0
  156. package/build/client/_app/immutable/nodes/{27.DB7PVQXo.js → 27.Cx5OgRDj.js} +1 -1
  157. package/build/client/_app/immutable/nodes/27.Cx5OgRDj.js.br +0 -0
  158. package/build/client/_app/immutable/nodes/27.Cx5OgRDj.js.gz +0 -0
  159. package/build/client/_app/immutable/nodes/{28.Cf2R7A3f.js → 28.CGYOjnep.js} +1 -1
  160. package/build/client/_app/immutable/nodes/28.CGYOjnep.js.br +0 -0
  161. package/build/client/_app/immutable/nodes/28.CGYOjnep.js.gz +0 -0
  162. package/build/client/_app/immutable/nodes/{29.CyJS5sye.js → 29.CLf8RvpY.js} +1 -1
  163. package/build/client/_app/immutable/nodes/29.CLf8RvpY.js.br +0 -0
  164. package/build/client/_app/immutable/nodes/29.CLf8RvpY.js.gz +0 -0
  165. package/build/client/_app/immutable/nodes/{3.DWyky0UV.js → 3.BlV_x8MJ.js} +1 -1
  166. package/build/client/_app/immutable/nodes/3.BlV_x8MJ.js.br +0 -0
  167. package/build/client/_app/immutable/nodes/3.BlV_x8MJ.js.gz +0 -0
  168. package/build/client/_app/immutable/nodes/{30.BFpYKBJh.js → 30.R_e5369k.js} +1 -1
  169. package/build/client/_app/immutable/nodes/30.R_e5369k.js.br +0 -0
  170. package/build/client/_app/immutable/nodes/30.R_e5369k.js.gz +0 -0
  171. package/build/client/_app/immutable/nodes/31.DKnO7o1W.js.gz +0 -0
  172. package/build/client/_app/immutable/nodes/32.D4xYDWvG.js.gz +0 -0
  173. package/build/client/_app/immutable/nodes/4.0a-qdY5B.js.gz +0 -0
  174. package/build/client/_app/immutable/nodes/{5.BzQBSRbS.js → 5.BkfXGrZY.js} +1 -1
  175. package/build/client/_app/immutable/nodes/5.BkfXGrZY.js.br +1 -0
  176. package/build/client/_app/immutable/nodes/5.BkfXGrZY.js.gz +0 -0
  177. package/build/client/_app/immutable/nodes/{6.gJ2nhxWc.js → 6.CrYuHI6-.js} +1 -1
  178. package/build/client/_app/immutable/nodes/6.CrYuHI6-.js.br +0 -0
  179. package/build/client/_app/immutable/nodes/6.CrYuHI6-.js.gz +0 -0
  180. package/build/client/_app/immutable/nodes/{7.tBTDolnc.js → 7.CMw8RqJb.js} +1 -1
  181. package/build/client/_app/immutable/nodes/7.CMw8RqJb.js.br +0 -0
  182. package/build/client/_app/immutable/nodes/7.CMw8RqJb.js.gz +0 -0
  183. package/build/client/_app/immutable/nodes/{8.BJK9n85D.js → 8.BFOXhEsE.js} +1 -1
  184. package/build/client/_app/immutable/nodes/8.BFOXhEsE.js.br +0 -0
  185. package/build/client/_app/immutable/nodes/8.BFOXhEsE.js.gz +0 -0
  186. package/build/client/_app/immutable/nodes/9.CDfx0uL-.js +1 -0
  187. package/build/client/_app/immutable/nodes/9.CDfx0uL-.js.br +0 -0
  188. package/build/client/_app/immutable/nodes/9.CDfx0uL-.js.gz +0 -0
  189. package/build/client/_app/version.json +1 -1
  190. package/build/client/_app/version.json.br +0 -0
  191. package/build/client/_app/version.json.gz +0 -0
  192. package/build/client/favicon/favicon.svg.gz +0 -0
  193. package/build/client/robots.txt.gz +0 -0
  194. package/build/server/chunks/{0-BRU03dEw.js → 0-wC8vebb2.js} +4 -4
  195. package/build/server/chunks/{0-BRU03dEw.js.map → 0-wC8vebb2.js.map} +1 -1
  196. package/build/server/chunks/{1-m_oCIIXD.js → 1-BuhU5ws5.js} +2 -2
  197. package/build/server/chunks/{1-m_oCIIXD.js.map → 1-BuhU5ws5.js.map} +1 -1
  198. package/build/server/chunks/{10-J_ZMrbXX.js → 10-8FzClb5u.js} +6 -6
  199. package/build/server/chunks/{10-J_ZMrbXX.js.map → 10-8FzClb5u.js.map} +1 -1
  200. package/build/server/chunks/{11-Dz77N9MO.js → 11-DDY_rtxo.js} +6 -6
  201. package/build/server/chunks/{11-Dz77N9MO.js.map → 11-DDY_rtxo.js.map} +1 -1
  202. package/build/server/chunks/{12-CrOqT0Q5.js → 12-C_P4jkDv.js} +2 -2
  203. package/build/server/chunks/{12-CrOqT0Q5.js.map → 12-C_P4jkDv.js.map} +1 -1
  204. package/build/server/chunks/{13-DQGOyx8W.js → 13-B5aiYDRf.js} +3 -3
  205. package/build/server/chunks/{13-DQGOyx8W.js.map → 13-B5aiYDRf.js.map} +1 -1
  206. package/build/server/chunks/{14-Dl5jyPyO.js → 14-BaOmOh6D.js} +3 -3
  207. package/build/server/chunks/{14-Dl5jyPyO.js.map → 14-BaOmOh6D.js.map} +1 -1
  208. package/build/server/chunks/{15-CNzxJkd-.js → 15-DHGAmNDS.js} +4 -4
  209. package/build/server/chunks/{15-CNzxJkd-.js.map → 15-DHGAmNDS.js.map} +1 -1
  210. package/build/server/chunks/{16-5ZcnQNjK.js → 16-CzffXXom.js} +6 -6
  211. package/build/server/chunks/{16-5ZcnQNjK.js.map → 16-CzffXXom.js.map} +1 -1
  212. package/build/server/chunks/{17-C4Zpziyd.js → 17-DZkJ_eHV.js} +2 -2
  213. package/build/server/chunks/{17-C4Zpziyd.js.map → 17-DZkJ_eHV.js.map} +1 -1
  214. package/build/server/chunks/{18-DFxW4YE_.js → 18-DeVS-pOT.js} +2 -2
  215. package/build/server/chunks/{18-DFxW4YE_.js.map → 18-DeVS-pOT.js.map} +1 -1
  216. package/build/server/chunks/{19-C8RtlFzY.js → 19-Dp3tqQ1t.js} +3 -3
  217. package/build/server/chunks/{19-C8RtlFzY.js.map → 19-Dp3tqQ1t.js.map} +1 -1
  218. package/build/server/chunks/{2-tPIqsVg3.js → 2-ByzJzwtP.js} +5 -5
  219. package/build/server/chunks/{2-tPIqsVg3.js.map → 2-ByzJzwtP.js.map} +1 -1
  220. package/build/server/chunks/{20-DLtIYsB6.js → 20-B0yVR9Gt.js} +12 -12
  221. package/build/server/chunks/{20-DLtIYsB6.js.map → 20-B0yVR9Gt.js.map} +1 -1
  222. package/build/server/chunks/{21-Bs7WlXoO.js → 21-C1DQ27EI.js} +3 -3
  223. package/build/server/chunks/{21-Bs7WlXoO.js.map → 21-C1DQ27EI.js.map} +1 -1
  224. package/build/server/chunks/{23-dTtOINB8.js → 23-Cu3Wc2EB.js} +6 -6
  225. package/build/server/chunks/{23-dTtOINB8.js.map → 23-Cu3Wc2EB.js.map} +1 -1
  226. package/build/server/chunks/{24-DFoVUKXD.js → 24-BT4UP2RT.js} +4 -4
  227. package/build/server/chunks/{24-DFoVUKXD.js.map → 24-BT4UP2RT.js.map} +1 -1
  228. package/build/server/chunks/{25-DstWRI72.js → 25-ef6c33Ul.js} +2 -2
  229. package/build/server/chunks/{25-DstWRI72.js.map → 25-ef6c33Ul.js.map} +1 -1
  230. package/build/server/chunks/{27-CpQEotb7.js → 27-2TZYrjFq.js} +4 -4
  231. package/build/server/chunks/{27-CpQEotb7.js.map → 27-2TZYrjFq.js.map} +1 -1
  232. package/build/server/chunks/{28-B-G5uvxa.js → 28-CgAgC0Z2.js} +3 -3
  233. package/build/server/chunks/{28-B-G5uvxa.js.map → 28-CgAgC0Z2.js.map} +1 -1
  234. package/build/server/chunks/{29-BFo4HkLa.js → 29-B5T9cb-n.js} +3 -3
  235. package/build/server/chunks/{29-BFo4HkLa.js.map → 29-B5T9cb-n.js.map} +1 -1
  236. package/build/server/chunks/{3-BU-Ucrf8.js → 3-DADb713A.js} +2 -2
  237. package/build/server/chunks/{3-BU-Ucrf8.js.map → 3-DADb713A.js.map} +1 -1
  238. package/build/server/chunks/{30-zdVVQ-al.js → 30-DltbcIRy.js} +3 -3
  239. package/build/server/chunks/{30-zdVVQ-al.js.map → 30-DltbcIRy.js.map} +1 -1
  240. package/build/server/chunks/{31-Cba3pMW9.js → 31-CirH19D6.js} +2 -2
  241. package/build/server/chunks/{31-Cba3pMW9.js.map → 31-CirH19D6.js.map} +1 -1
  242. package/build/server/chunks/{32-BmfoNY4G.js → 32-CZojKYOy.js} +2 -2
  243. package/build/server/chunks/{32-BmfoNY4G.js.map → 32-CZojKYOy.js.map} +1 -1
  244. package/build/server/chunks/{5-CsoWfpGS.js → 5-BPpDRjc1.js} +2 -2
  245. package/build/server/chunks/{5-CsoWfpGS.js.map → 5-BPpDRjc1.js.map} +1 -1
  246. package/build/server/chunks/{6-D7wR-syA.js → 6-BNfcWbqm.js} +3 -3
  247. package/build/server/chunks/{6-D7wR-syA.js.map → 6-BNfcWbqm.js.map} +1 -1
  248. package/build/server/chunks/{7-uEz6AFkY.js → 7-C5iTPe4g.js} +2 -2
  249. package/build/server/chunks/{7-uEz6AFkY.js.map → 7-C5iTPe4g.js.map} +1 -1
  250. package/build/server/chunks/{8-BF-aCqND.js → 8-Cw1nSIV4.js} +3 -3
  251. package/build/server/chunks/{8-BF-aCqND.js.map → 8-Cw1nSIV4.js.map} +1 -1
  252. package/build/server/chunks/{9-BSxBuZbd.js → 9-6pRErmUa.js} +4 -4
  253. package/build/server/chunks/{9-BSxBuZbd.js.map → 9-6pRErmUa.js.map} +1 -1
  254. package/build/server/chunks/{_layout.svelte-Czx3WsTK.js → _layout.svelte-xYAKGoE5.js} +4 -4
  255. package/build/server/chunks/_layout.svelte-xYAKGoE5.js.map +1 -0
  256. package/build/server/chunks/{_page.svelte-BO2coOCw.js → _page.svelte-BR8dze-7.js} +14 -14
  257. package/build/server/chunks/_page.svelte-BR8dze-7.js.map +1 -0
  258. package/build/server/chunks/{_page.svelte-KapMJV5_.js → _page.svelte-BsU27A26.js} +3 -3
  259. package/build/server/chunks/_page.svelte-BsU27A26.js.map +1 -0
  260. package/build/server/chunks/{_page.svelte-5X2iRv32.js → _page.svelte-CaOLJFdL.js} +2 -2
  261. package/build/server/chunks/_page.svelte-CaOLJFdL.js.map +1 -0
  262. package/build/server/chunks/{_page.svelte-CGuEBnqj.js → _page.svelte-DG_7CM7u.js} +5 -5
  263. package/build/server/chunks/_page.svelte-DG_7CM7u.js.map +1 -0
  264. package/build/server/chunks/{_page.svelte-CX9DKxIH.js → _page.svelte-DS9orYLw.js} +2 -2
  265. package/build/server/chunks/_page.svelte-DS9orYLw.js.map +1 -0
  266. package/build/server/chunks/{_server.ts-CmUr8pln.js → _server.ts-1HIleN3S.js} +4 -4
  267. package/build/server/chunks/{_server.ts-CmUr8pln.js.map → _server.ts-1HIleN3S.js.map} +1 -1
  268. package/build/server/chunks/{_server.ts-C-XniPo8.js → _server.ts-1nksAmT8.js} +4 -4
  269. package/build/server/chunks/{_server.ts-C-XniPo8.js.map → _server.ts-1nksAmT8.js.map} +1 -1
  270. package/build/server/chunks/{_server.ts-7hKc3tb_.js → _server.ts-AE1drj36.js} +4 -4
  271. package/build/server/chunks/{_server.ts-7hKc3tb_.js.map → _server.ts-AE1drj36.js.map} +1 -1
  272. package/build/server/chunks/{_server.ts-DBh0rJrm.js → _server.ts-B0gZCMdj.js} +4 -4
  273. package/build/server/chunks/{_server.ts-DBh0rJrm.js.map → _server.ts-B0gZCMdj.js.map} +1 -1
  274. package/build/server/chunks/{_server.ts-_NTv7i9z.js → _server.ts-BSoy1Ljl.js} +4 -4
  275. package/build/server/chunks/{_server.ts-_NTv7i9z.js.map → _server.ts-BSoy1Ljl.js.map} +1 -1
  276. package/build/server/chunks/{_server.ts-CAcgx11J.js → _server.ts-BTi2idVf.js} +4 -4
  277. package/build/server/chunks/{_server.ts-CAcgx11J.js.map → _server.ts-BTi2idVf.js.map} +1 -1
  278. package/build/server/chunks/{_server.ts-D-QkfF2o.js → _server.ts-BYlDwqEg.js} +5 -5
  279. package/build/server/chunks/{_server.ts-D-QkfF2o.js.map → _server.ts-BYlDwqEg.js.map} +1 -1
  280. package/build/server/chunks/{_server.ts-CcQbKaET.js → _server.ts-BbzbsVfr.js} +4 -4
  281. package/build/server/chunks/{_server.ts-CcQbKaET.js.map → _server.ts-BbzbsVfr.js.map} +1 -1
  282. package/build/server/chunks/{_server.ts-BLHjzdRp.js → _server.ts-BdKZ7aOG.js} +4 -4
  283. package/build/server/chunks/{_server.ts-BLHjzdRp.js.map → _server.ts-BdKZ7aOG.js.map} +1 -1
  284. package/build/server/chunks/{_server.ts-BpkR7TzP.js → _server.ts-BgsmlYb6.js} +3 -3
  285. package/build/server/chunks/{_server.ts-BpkR7TzP.js.map → _server.ts-BgsmlYb6.js.map} +1 -1
  286. package/build/server/chunks/{_server.ts-BUc1sqlR.js → _server.ts-BnN8EQwQ.js} +4 -4
  287. package/build/server/chunks/{_server.ts-BUc1sqlR.js.map → _server.ts-BnN8EQwQ.js.map} +1 -1
  288. package/build/server/chunks/{_server.ts-pDmNGXOa.js → _server.ts-ByhZiyPJ.js} +4 -4
  289. package/build/server/chunks/{_server.ts-pDmNGXOa.js.map → _server.ts-ByhZiyPJ.js.map} +1 -1
  290. package/build/server/chunks/{_server.ts-D1AD48e8.js → _server.ts-C2YLv0RS.js} +4 -4
  291. package/build/server/chunks/{_server.ts-D1AD48e8.js.map → _server.ts-C2YLv0RS.js.map} +1 -1
  292. package/build/server/chunks/{_server.ts-Ch_RLYHQ.js → _server.ts-C3Cn_AWJ.js} +4 -4
  293. package/build/server/chunks/{_server.ts-Ch_RLYHQ.js.map → _server.ts-C3Cn_AWJ.js.map} +1 -1
  294. package/build/server/chunks/{_server.ts-Z87uowZI.js → _server.ts-C9ggXEGb.js} +4 -4
  295. package/build/server/chunks/{_server.ts-Z87uowZI.js.map → _server.ts-C9ggXEGb.js.map} +1 -1
  296. package/build/server/chunks/{_server.ts-B0wiCYbB.js → _server.ts-CKHs57oZ.js} +2 -2
  297. package/build/server/chunks/{_server.ts-B0wiCYbB.js.map → _server.ts-CKHs57oZ.js.map} +1 -1
  298. package/build/server/chunks/{_server.ts-C4WRZSco.js → _server.ts-CM4aZGc-.js} +3 -3
  299. package/build/server/chunks/{_server.ts-C4WRZSco.js.map → _server.ts-CM4aZGc-.js.map} +1 -1
  300. package/build/server/chunks/{_server.ts-la-ySldK.js → _server.ts-CN851WSH.js} +4 -4
  301. package/build/server/chunks/{_server.ts-la-ySldK.js.map → _server.ts-CN851WSH.js.map} +1 -1
  302. package/build/server/chunks/{_server.ts-Dmo73WWA.js → _server.ts-CNPmzTy6.js} +4 -4
  303. package/build/server/chunks/{_server.ts-Dmo73WWA.js.map → _server.ts-CNPmzTy6.js.map} +1 -1
  304. package/build/server/chunks/{_server.ts-C0F30GT4.js → _server.ts-CZW4ge6f.js} +4 -4
  305. package/build/server/chunks/{_server.ts-C0F30GT4.js.map → _server.ts-CZW4ge6f.js.map} +1 -1
  306. package/build/server/chunks/{_server.ts-DxKERFAd.js → _server.ts-CaERLUlr.js} +3 -3
  307. package/build/server/chunks/{_server.ts-DxKERFAd.js.map → _server.ts-CaERLUlr.js.map} +1 -1
  308. package/build/server/chunks/{_server.ts-CmGWhrdf.js → _server.ts-Cb4DODkC.js} +5 -5
  309. package/build/server/chunks/{_server.ts-CmGWhrdf.js.map → _server.ts-Cb4DODkC.js.map} +1 -1
  310. package/build/server/chunks/{_server.ts-DNPb5zS6.js → _server.ts-CbQpXSqd.js} +4 -4
  311. package/build/server/chunks/{_server.ts-DNPb5zS6.js.map → _server.ts-CbQpXSqd.js.map} +1 -1
  312. package/build/server/chunks/{_server.ts-Bb3Kpo0Y.js → _server.ts-Ch4yLIuo.js} +3 -3
  313. package/build/server/chunks/{_server.ts-Bb3Kpo0Y.js.map → _server.ts-Ch4yLIuo.js.map} +1 -1
  314. package/build/server/chunks/{_server.ts-B_MVq_5r.js → _server.ts-Cjz2LZbt.js} +4 -4
  315. package/build/server/chunks/{_server.ts-B_MVq_5r.js.map → _server.ts-Cjz2LZbt.js.map} +1 -1
  316. package/build/server/chunks/{_server.ts-BJWFkEuu.js → _server.ts-CyhcRpfW.js} +5 -5
  317. package/build/server/chunks/{_server.ts-BJWFkEuu.js.map → _server.ts-CyhcRpfW.js.map} +1 -1
  318. package/build/server/chunks/{_server.ts-BemU6FO1.js → _server.ts-CzJ60KtY.js} +5 -5
  319. package/build/server/chunks/{_server.ts-BemU6FO1.js.map → _server.ts-CzJ60KtY.js.map} +1 -1
  320. package/build/server/chunks/{_server.ts-BpAINcOs.js → _server.ts-D71yVIcY.js} +5 -15
  321. package/build/server/chunks/_server.ts-D71yVIcY.js.map +1 -0
  322. package/build/server/chunks/{_server.ts-CkXnisqg.js → _server.ts-DWL7YPsQ.js} +5 -5
  323. package/build/server/chunks/{_server.ts-CkXnisqg.js.map → _server.ts-DWL7YPsQ.js.map} +1 -1
  324. package/build/server/chunks/{_server.ts-BkKg2yyC.js → _server.ts-DnpbPKKN.js} +4 -4
  325. package/build/server/chunks/{_server.ts-BkKg2yyC.js.map → _server.ts-DnpbPKKN.js.map} +1 -1
  326. package/build/server/chunks/{_server.ts-gic0t4mu.js → _server.ts-Dnqx5-qU.js} +6 -6
  327. package/build/server/chunks/{_server.ts-gic0t4mu.js.map → _server.ts-Dnqx5-qU.js.map} +1 -1
  328. package/build/server/chunks/{_server.ts-CaHe7mo6.js → _server.ts-DrYz0SSH.js} +4 -4
  329. package/build/server/chunks/{_server.ts-CaHe7mo6.js.map → _server.ts-DrYz0SSH.js.map} +1 -1
  330. package/build/server/chunks/{_server.ts-DJUYnHrj.js → _server.ts-DraBBcmz.js} +4 -4
  331. package/build/server/chunks/{_server.ts-DJUYnHrj.js.map → _server.ts-DraBBcmz.js.map} +1 -1
  332. package/build/server/chunks/{_server.ts-MOiQ4br_.js → _server.ts-I3zLnhsz.js} +4 -4
  333. package/build/server/chunks/{_server.ts-MOiQ4br_.js.map → _server.ts-I3zLnhsz.js.map} +1 -1
  334. package/build/server/chunks/{_server.ts-DXPhlUCi.js → _server.ts-gCCprE5T.js} +4 -4
  335. package/build/server/chunks/{_server.ts-DXPhlUCi.js.map → _server.ts-gCCprE5T.js.map} +1 -1
  336. package/build/server/chunks/{_server.ts-BrZXNFlK.js → _server.ts-k0TOB-E9.js} +5 -5
  337. package/build/server/chunks/{_server.ts-BrZXNFlK.js.map → _server.ts-k0TOB-E9.js.map} +1 -1
  338. package/build/server/chunks/{_server.ts-CFIgn6q6.js → _server.ts-qFzkA4h-.js} +8 -8
  339. package/build/server/chunks/{_server.ts-CFIgn6q6.js.map → _server.ts-qFzkA4h-.js.map} +1 -1
  340. package/build/server/chunks/{_server.ts-0ncRaWJ_.js → _server.ts-v9eUA-cx.js} +4 -4
  341. package/build/server/chunks/{_server.ts-0ncRaWJ_.js.map → _server.ts-v9eUA-cx.js.map} +1 -1
  342. package/build/server/chunks/{access.server-GvriCjXN.js → access.server-DVG3xnR_.js} +3 -3
  343. package/build/server/chunks/{access.server-GvriCjXN.js.map → access.server-DVG3xnR_.js.map} +1 -1
  344. package/build/server/chunks/{api-errors-Dk5z97zb.js → api-errors-DGHmIOGJ.js} +2 -2
  345. package/build/server/chunks/{api-errors-Dk5z97zb.js.map → api-errors-DGHmIOGJ.js.map} +1 -1
  346. package/build/server/chunks/{auth-bootstrap.server-CfD5CPTj.js → auth-bootstrap.server-oox9p1sN.js} +10 -3
  347. package/build/server/chunks/auth-bootstrap.server-oox9p1sN.js.map +1 -0
  348. package/build/server/chunks/{bootHealth.server-Bn7taneH.js → bootHealth.server-DQx_qsNh.js} +2 -2
  349. package/build/server/chunks/{bootHealth.server-Bn7taneH.js.map → bootHealth.server-DQx_qsNh.js.map} +1 -1
  350. package/build/server/chunks/{hooks.server-CMWyl1Gd.js → hooks.server-aaRldGQ_.js} +4 -4
  351. package/build/server/chunks/{hooks.server-CMWyl1Gd.js.map → hooks.server-aaRldGQ_.js.map} +1 -1
  352. package/build/server/chunks/{permissions.server-Co6VKW9f.js → permissions.server-qrbshNHz.js} +2 -2
  353. package/build/server/chunks/{permissions.server-Co6VKW9f.js.map → permissions.server-qrbshNHz.js.map} +1 -1
  354. package/build/server/chunks/{providers.server-C32WKtDL.js → providers.server-Duyx-08B.js} +68 -68
  355. package/build/server/chunks/providers.server-Duyx-08B.js.map +1 -0
  356. package/build/server/chunks/{resolve.server-DYsU4jL3.js → resolve.server-BwfjDyaT.js} +3 -3
  357. package/build/server/chunks/{resolve.server-DYsU4jL3.js.map → resolve.server-BwfjDyaT.js.map} +1 -1
  358. package/build/server/chunks/{resolve.server2-Co65XNMI.js → resolve.server2-DjZg4oZg.js} +3 -3
  359. package/build/server/chunks/{resolve.server2-Co65XNMI.js.map → resolve.server2-DjZg4oZg.js.map} +1 -1
  360. package/build/server/chunks/{token.server-B8XVPI0F.js → token.server-CBtuQZt0.js} +2 -2
  361. package/build/server/chunks/token.server-CBtuQZt0.js.map +1 -0
  362. package/build/server/chunks/{utils2-Sy-_rI-0.js → utils2-QuTTpZq0.js} +2 -2
  363. package/build/server/chunks/{utils2-Sy-_rI-0.js.map → utils2-QuTTpZq0.js.map} +1 -1
  364. package/build/server/index.js +2 -2
  365. package/build/server/index.js.map +1 -1
  366. package/build/server/manifest.js +70 -70
  367. package/build/server/manifest.js.map +1 -1
  368. package/package.json +7 -8
  369. package/templates/.env.example +3 -2
  370. package/templates/ecosystem.config.cjs +7 -5
  371. package/build/client/_app/immutable/assets/20.DzF5JyuX.css +0 -1
  372. package/build/client/_app/immutable/assets/20.DzF5JyuX.css.br +0 -0
  373. package/build/client/_app/immutable/assets/20.DzF5JyuX.css.gz +0 -0
  374. package/build/client/_app/immutable/chunks/4y4xLOS_.js.br +0 -0
  375. package/build/client/_app/immutable/chunks/4y4xLOS_.js.gz +0 -0
  376. package/build/client/_app/immutable/chunks/BFXFuY-o.js +0 -3
  377. package/build/client/_app/immutable/chunks/BFXFuY-o.js.br +0 -0
  378. package/build/client/_app/immutable/chunks/BFXFuY-o.js.gz +0 -0
  379. package/build/client/_app/immutable/chunks/ChSMnQMB.js.br +0 -0
  380. package/build/client/_app/immutable/chunks/ChSMnQMB.js.gz +0 -0
  381. package/build/client/_app/immutable/chunks/D7PHp8xb.js.br +0 -0
  382. package/build/client/_app/immutable/chunks/D7PHp8xb.js.gz +0 -0
  383. package/build/client/_app/immutable/chunks/DHWrMZkd.js.br +0 -0
  384. package/build/client/_app/immutable/chunks/DHWrMZkd.js.gz +0 -0
  385. package/build/client/_app/immutable/chunks/DdaJZmuM.js.br +0 -0
  386. package/build/client/_app/immutable/chunks/DdaJZmuM.js.gz +0 -0
  387. package/build/client/_app/immutable/entry/app.CY1cyDxx.js.br +0 -0
  388. package/build/client/_app/immutable/entry/app.CY1cyDxx.js.gz +0 -0
  389. package/build/client/_app/immutable/entry/start.ByTVZFMZ.js +0 -1
  390. package/build/client/_app/immutable/entry/start.ByTVZFMZ.js.br +0 -2
  391. package/build/client/_app/immutable/entry/start.ByTVZFMZ.js.gz +0 -0
  392. package/build/client/_app/immutable/nodes/0.CQbbSrko.js +0 -1
  393. package/build/client/_app/immutable/nodes/0.CQbbSrko.js.br +0 -0
  394. package/build/client/_app/immutable/nodes/0.CQbbSrko.js.gz +0 -0
  395. package/build/client/_app/immutable/nodes/1.WcE6FOcF.js.br +0 -0
  396. package/build/client/_app/immutable/nodes/1.WcE6FOcF.js.gz +0 -0
  397. package/build/client/_app/immutable/nodes/10.Bl4yPogx.js +0 -3
  398. package/build/client/_app/immutable/nodes/10.Bl4yPogx.js.br +0 -0
  399. package/build/client/_app/immutable/nodes/10.Bl4yPogx.js.gz +0 -0
  400. package/build/client/_app/immutable/nodes/11.kVvSmSNV.js.br +0 -0
  401. package/build/client/_app/immutable/nodes/11.kVvSmSNV.js.gz +0 -0
  402. package/build/client/_app/immutable/nodes/13.JyGUEsdb.js.br +0 -0
  403. package/build/client/_app/immutable/nodes/13.JyGUEsdb.js.gz +0 -0
  404. package/build/client/_app/immutable/nodes/14.BbJglRXt.js.br +0 -0
  405. package/build/client/_app/immutable/nodes/14.BbJglRXt.js.gz +0 -0
  406. package/build/client/_app/immutable/nodes/15.94-Zje0s.js +0 -13
  407. package/build/client/_app/immutable/nodes/15.94-Zje0s.js.br +0 -0
  408. package/build/client/_app/immutable/nodes/15.94-Zje0s.js.gz +0 -0
  409. package/build/client/_app/immutable/nodes/16.DRADdurD.js.br +0 -0
  410. package/build/client/_app/immutable/nodes/16.DRADdurD.js.gz +0 -0
  411. package/build/client/_app/immutable/nodes/17.DOsqdwdd.js.br +0 -0
  412. package/build/client/_app/immutable/nodes/17.DOsqdwdd.js.gz +0 -0
  413. package/build/client/_app/immutable/nodes/19.S2J54AdY.js.br +0 -0
  414. package/build/client/_app/immutable/nodes/19.S2J54AdY.js.gz +0 -0
  415. package/build/client/_app/immutable/nodes/2.CKVtP2Ky.js.br +0 -0
  416. package/build/client/_app/immutable/nodes/2.CKVtP2Ky.js.gz +0 -0
  417. package/build/client/_app/immutable/nodes/20.BCasu2g4.js.br +0 -0
  418. package/build/client/_app/immutable/nodes/20.BCasu2g4.js.gz +0 -0
  419. package/build/client/_app/immutable/nodes/21.C1aTaoAB.js.br +0 -0
  420. package/build/client/_app/immutable/nodes/21.C1aTaoAB.js.gz +0 -0
  421. package/build/client/_app/immutable/nodes/23.DP5Be3HR.js.br +0 -0
  422. package/build/client/_app/immutable/nodes/23.DP5Be3HR.js.gz +0 -0
  423. package/build/client/_app/immutable/nodes/24.BB6fXxnh.js.br +0 -0
  424. package/build/client/_app/immutable/nodes/24.BB6fXxnh.js.gz +0 -0
  425. package/build/client/_app/immutable/nodes/27.DB7PVQXo.js.br +0 -0
  426. package/build/client/_app/immutable/nodes/27.DB7PVQXo.js.gz +0 -0
  427. package/build/client/_app/immutable/nodes/28.Cf2R7A3f.js.br +0 -0
  428. package/build/client/_app/immutable/nodes/28.Cf2R7A3f.js.gz +0 -0
  429. package/build/client/_app/immutable/nodes/29.CyJS5sye.js.br +0 -0
  430. package/build/client/_app/immutable/nodes/29.CyJS5sye.js.gz +0 -0
  431. package/build/client/_app/immutable/nodes/3.DWyky0UV.js.br +0 -0
  432. package/build/client/_app/immutable/nodes/3.DWyky0UV.js.gz +0 -0
  433. package/build/client/_app/immutable/nodes/30.BFpYKBJh.js.br +0 -0
  434. package/build/client/_app/immutable/nodes/30.BFpYKBJh.js.gz +0 -0
  435. package/build/client/_app/immutable/nodes/5.BzQBSRbS.js.br +0 -0
  436. package/build/client/_app/immutable/nodes/5.BzQBSRbS.js.gz +0 -0
  437. package/build/client/_app/immutable/nodes/6.gJ2nhxWc.js.br +0 -0
  438. package/build/client/_app/immutable/nodes/6.gJ2nhxWc.js.gz +0 -0
  439. package/build/client/_app/immutable/nodes/7.tBTDolnc.js.br +0 -0
  440. package/build/client/_app/immutable/nodes/7.tBTDolnc.js.gz +0 -0
  441. package/build/client/_app/immutable/nodes/8.BJK9n85D.js.br +0 -0
  442. package/build/client/_app/immutable/nodes/8.BJK9n85D.js.gz +0 -0
  443. package/build/client/_app/immutable/nodes/9.un0j6nRP.js +0 -1
  444. package/build/client/_app/immutable/nodes/9.un0j6nRP.js.br +0 -0
  445. package/build/client/_app/immutable/nodes/9.un0j6nRP.js.gz +0 -0
  446. package/build/server/chunks/_layout.svelte-Czx3WsTK.js.map +0 -1
  447. package/build/server/chunks/_page.svelte-5X2iRv32.js.map +0 -1
  448. package/build/server/chunks/_page.svelte-BO2coOCw.js.map +0 -1
  449. package/build/server/chunks/_page.svelte-CGuEBnqj.js.map +0 -1
  450. package/build/server/chunks/_page.svelte-CX9DKxIH.js.map +0 -1
  451. package/build/server/chunks/_page.svelte-KapMJV5_.js.map +0 -1
  452. package/build/server/chunks/_server.ts-BpAINcOs.js.map +0 -1
  453. package/build/server/chunks/auth-bootstrap.server-CfD5CPTj.js.map +0 -1
  454. package/build/server/chunks/providers.server-C32WKtDL.js.map +0 -1
  455. package/build/server/chunks/token.server-B8XVPI0F.js.map +0 -1
  456. package/templates/selva.config.example.js +0 -338
@@ -1 +0,0 @@
1
- {"version":3,"file":"providers.server-C32WKtDL.js","sources":["../../../.svelte-kit/adapter-node/chunks/providers.server.js"],"sourcesContent":["import { b as private_env } from \"./shared-server.js\";\nimport { pathToFileURL } from \"node:url\";\nimport * as path from \"node:path\";\nimport { resolve } from \"node:path\";\nimport { existsSync } from \"node:fs\";\nimport { D as DEFAULT_ORG_PERMISSIONS, S as SYSTEM_CONTEXT, h as hasPermission, P as PlatformPermissionSchema } from \"./context.js\";\nimport * as crypto from \"node:crypto\";\nimport { createHmac, timingSafeEqual, randomUUID, createDecipheriv, randomBytes, createCipheriv } from \"node:crypto\";\nimport * as fs from \"node:fs/promises\";\nimport { createClient } from \"@supabase/supabase-js\";\nfunction assertSafeKey(value, label) {\n if (!value || !/^[A-Za-z0-9._-]+$/.test(value) || value === \".\" || value === \"..\") {\n throw new Error(`Unsafe ${label}: ${JSON.stringify(value)}`);\n }\n}\nconst definitionPaths = {\n version: (guid, versionNumber, ext) => {\n assertSafeKey(guid, \"guid\");\n if (!Number.isInteger(versionNumber) || versionNumber < 1) {\n throw new Error(`Unsafe versionNumber: ${versionNumber}`);\n }\n return `definitions/${guid}/versions/v${versionNumber}.${ext}`;\n },\n image: (guid) => {\n assertSafeKey(guid, \"guid\");\n return `definitions/${guid}/cover.webp`;\n },\n prefix: (guid) => {\n assertSafeKey(guid, \"guid\");\n return `definitions/${guid}/`;\n }\n};\nconst IMAGE_MAX_WIDTH = 1200;\nconst IMAGE_WEBP_QUALITY = 85;\nfunction isImageUpload(contentType, storagePath) {\n if (contentType?.startsWith(\"image/\"))\n return true;\n return /\\.(webp|png|jpe?g|gif|bmp|tif?f)$/i.test(storagePath);\n}\nfunction toWebpPath(storagePath) {\n return storagePath.replace(/\\.(png|jpe?g|gif|bmp|tif?f)$/i, \".webp\");\n}\nasync function transcodeImageIfNeeded(data, contentType, storagePath) {\n if (!isImageUpload(contentType, storagePath)) {\n return { data, contentType: contentType ?? \"application/octet-stream\", path: storagePath };\n }\n const sharp = await loadSharp();\n const compressed = await sharp(Buffer.from(data)).resize({ width: IMAGE_MAX_WIDTH, withoutEnlargement: true }).webp({ quality: IMAGE_WEBP_QUALITY }).toBuffer();\n return {\n data: new Uint8Array(compressed),\n contentType: \"image/webp\",\n path: toWebpPath(storagePath)\n };\n}\nlet cachedSharp = null;\nasync function loadSharp() {\n if (cachedSharp)\n return cachedSharp;\n try {\n const mod = await import(\"sharp\");\n cachedSharp = mod.default ?? mod;\n return cachedSharp;\n } catch (err) {\n throw new Error(\"Image transcoding requires `sharp` to be installed. Add it as a dependency in your provider package.\", { cause: err });\n }\n}\nfunction isPlatformServer(s) {\n return s.scope === \"platform\";\n}\nfunction isOrgServer(s) {\n return s.scope === \"org\";\n}\nfunction actorFrom(ctx) {\n return ctx.userId || \"system\";\n}\nclass NoopEventSink {\n async emit(_event) {\n }\n}\nconst nowIso = () => (/* @__PURE__ */ new Date()).toISOString();\nfunction auditUpdate(ctx, fallbackActor) {\n return {\n updatedAt: nowIso(),\n updatedBy: ctx.userId || fallbackActor || \"\"\n };\n}\nfunction auditSoftDelete(ctx, fallbackActor) {\n const now = nowIso();\n return {\n deletedAt: now,\n updatedAt: now,\n updatedBy: ctx.userId || fallbackActor || \"\"\n };\n}\nconst DEFAULT_PAGE_LIMIT = 50;\nconst MAX_PAGE_LIMIT = 200;\nfunction isFlagEnabled(config, flag2) {\n return Boolean(config.flags?.[flag2]);\n}\nfunction defineConfig(config) {\n return config;\n}\nclass ProviderError extends Error {\n statusCode;\n constructor(message, statusCode = 400) {\n super(message);\n this.name = \"ProviderError\";\n this.statusCode = statusCode;\n }\n}\nconst DEFAULT_MAX_AGE_MS = 8 * 60 * 60 * 1e3;\nfunction signHmacToken(secret, userId, maxAgeMs = DEFAULT_MAX_AGE_MS) {\n const expiry = Date.now() + maxAgeMs;\n const payload = Buffer.from(`${userId}:${expiry}`).toString(\"base64url\");\n const sig = createHmac(\"sha256\", secret).update(payload).digest(\"base64url\");\n return `${payload}.${sig}`;\n}\nfunction verifyHmacToken(token, secret) {\n const dot = token.lastIndexOf(\".\");\n if (dot === -1)\n return { userId: \"\", valid: false };\n const payload = token.slice(0, dot);\n const sig = token.slice(dot + 1);\n const expectedSig = createHmac(\"sha256\", secret).update(payload).digest(\"base64url\");\n const a = Buffer.from(sig);\n const b = Buffer.from(expectedSig);\n if (a.length !== b.length || !timingSafeEqual(a, b))\n return { userId: \"\", valid: false };\n const decoded = Buffer.from(payload, \"base64url\").toString();\n const colon = decoded.lastIndexOf(\":\");\n if (colon === -1)\n return { userId: \"\", valid: false };\n const userId = decoded.slice(0, colon);\n const expiry = parseInt(decoded.slice(colon + 1), 10);\n if (!Number.isFinite(expiry) || Date.now() >= expiry)\n return { userId: \"\", valid: false };\n return { userId, valid: true };\n}\nasync function readJsonFile(filePath, fallback) {\n try {\n const raw = await fs.readFile(filePath, \"utf-8\");\n return JSON.parse(raw);\n } catch (err) {\n if (err.code === \"ENOENT\")\n return fallback;\n throw err;\n }\n}\nasync function writeJsonFile(filePath, data) {\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n const tmp = `${filePath}.tmp`;\n await fs.writeFile(tmp, JSON.stringify(data, null, \"\t\"), \"utf-8\");\n await fs.rename(tmp, filePath);\n}\nconst LAST_LOGIN_DEBOUNCE_MS$1 = 6e4;\nconst PBKDF2_ITERATIONS = 1e5;\nconst PBKDF2_KEYLEN = 32;\nconst PBKDF2_DIGEST = \"sha256\";\nasync function hashPassword(password) {\n const salt = crypto.randomBytes(16).toString(\"base64url\");\n const hash = await new Promise((resolve2, reject) => crypto.pbkdf2(password, salt, PBKDF2_ITERATIONS, PBKDF2_KEYLEN, PBKDF2_DIGEST, (err, key) => err ? reject(err) : resolve2(key)));\n return `pbkdf2:${PBKDF2_DIGEST}:${PBKDF2_ITERATIONS}:${salt}:${hash.toString(\"base64url\")}`;\n}\nasync function verifyPasswordHash(password, storedHash) {\n const parts = storedHash.split(\":\");\n if (parts.length !== 5 || parts[0] !== \"pbkdf2\")\n return false;\n const [, digest, iterStr, salt, expectedHashB64] = parts;\n const iterations = parseInt(iterStr, 10);\n if (!Number.isFinite(iterations) || iterations <= 0)\n return false;\n const expected = Buffer.from(expectedHashB64, \"base64url\");\n const actual = await new Promise((resolve2, reject) => crypto.pbkdf2(password, salt, iterations, PBKDF2_KEYLEN, digest, (err, key) => err ? reject(err) : resolve2(key)));\n if (actual.length !== expected.length)\n return false;\n return crypto.timingSafeEqual(actual, expected);\n}\nconst empty$5 = () => ({ users: [] });\nfunction createLocalAuthUserStore(usersFilePath) {\n return {\n async findByEmail(email) {\n const { users } = await readJsonFile(usersFilePath, empty$5());\n return users.find((u) => u.email.toLowerCase() === email.toLowerCase()) ?? null;\n },\n async findById(id) {\n const { users } = await readJsonFile(usersFilePath, empty$5());\n return users.find((u) => u.id === id) ?? null;\n },\n async listUsers() {\n const { users } = await readJsonFile(usersFilePath, empty$5());\n return users.map(({ passwordHash: _ph, ...rest }) => rest);\n },\n async createUser(email, password) {\n const file = await readJsonFile(usersFilePath, empty$5());\n if (file.users.some((u) => u.email.toLowerCase() === email.toLowerCase())) {\n throw new ProviderError(`User with email \"${email}\" already exists`, 409);\n }\n const user = {\n id: randomUUID(),\n email,\n passwordHash: password !== null ? await hashPassword(password) : null,\n createdAt: (/* @__PURE__ */ new Date()).toISOString()\n };\n file.users.push(user);\n await writeJsonFile(usersFilePath, file);\n return user;\n },\n async setDisabled(id, disabled) {\n const file = await readJsonFile(usersFilePath, empty$5());\n const user = file.users.find((u) => u.id === id);\n if (!user)\n throw new ProviderError(`User \"${id}\" not found`, 404);\n user.disabled = disabled;\n await writeJsonFile(usersFilePath, file);\n },\n async touchLastLogin(id) {\n const file = await readJsonFile(usersFilePath, empty$5());\n const user = file.users.find((u) => u.id === id);\n if (!user)\n return;\n const now = Date.now();\n if (user.lastLoginAt) {\n const prev = Date.parse(user.lastLoginAt);\n if (Number.isFinite(prev) && now - prev < LAST_LOGIN_DEBOUNCE_MS$1)\n return;\n }\n user.lastLoginAt = new Date(now).toISOString();\n await writeJsonFile(usersFilePath, file);\n },\n async deleteUser(id) {\n const file = await readJsonFile(usersFilePath, empty$5());\n const before = file.users.length;\n file.users = file.users.filter((u) => u.id !== id);\n if (file.users.length === before)\n throw new ProviderError(`User \"${id}\" not found`, 404);\n await writeJsonFile(usersFilePath, file);\n }\n };\n}\nfunction paginate(items, opts) {\n const limit = Math.min(Math.max(1, opts?.limit ?? DEFAULT_PAGE_LIMIT), MAX_PAGE_LIMIT);\n const offset = opts?.cursor ? parseInt(opts.cursor, 10) || 0 : 0;\n const slice = items.slice(offset, offset + limit);\n const nextOffset = offset + slice.length;\n return {\n items: slice,\n nextCursor: nextOffset < items.length ? String(nextOffset) : void 0\n };\n}\nfunction applyOrder(items, opts, keyFn = (item, field) => item[field]) {\n const field = opts?.orderBy ?? \"createdAt\";\n const dir = opts?.orderDir ?? \"desc\";\n const mul = dir === \"asc\" ? 1 : -1;\n items.sort((a, b) => {\n const av = keyFn(a, field) ?? \"\";\n const bv = keyFn(b, field) ?? \"\";\n if (av < bv)\n return -1 * mul;\n if (av > bv)\n return 1 * mul;\n return 0;\n });\n return items;\n}\nconst SESSION_MAX_AGE_MS = 8 * 60 * 60 * 1e3;\nfunction toAuthUser$1(u) {\n return {\n id: u.id,\n email: u.email,\n createdAt: u.createdAt,\n lastLoginAt: u.lastLoginAt,\n disabled: u.disabled\n };\n}\nclass LocalPasswordAuth {\n users;\n mintToken;\n constructor(users, mintToken) {\n this.users = users;\n this.mintToken = mintToken;\n }\n async verifyLogin(email, password) {\n if (!this.users)\n return { kind: \"failed\", reason: \"invalid_credentials\" };\n const user = await this.users.findByEmail(email);\n if (!user)\n return { kind: \"failed\", reason: \"invalid_credentials\" };\n if (user.disabled)\n return { kind: \"failed\", reason: \"disabled\" };\n if (!user.passwordHash || !await verifyPasswordHash(password, user.passwordHash)) {\n return { kind: \"failed\", reason: \"invalid_credentials\" };\n }\n await this.users.touchLastLogin(user.id).catch(() => {\n });\n const auth = toAuthUser$1(user);\n return { kind: \"success\", user: auth, sessionToken: this.mintToken(auth) };\n }\n async createUserWithPassword(email, password) {\n if (!this.users) {\n throw new ProviderError(\"createUserWithPassword requires a users.json backend (DATA_PATH)\", 500);\n }\n return toAuthUser$1(await this.users.createUser(email, password));\n }\n async registerUser(email, password) {\n if (!this.users)\n return null;\n return toAuthUser$1(await this.users.createUser(email, password));\n }\n}\nclass LocalAuthProvider {\n hmacSecret;\n users;\n name = \"Local\";\n passwordAuth;\n constructor(config) {\n this.hmacSecret = config.hmacSecret;\n if (config.usersFilePath) {\n this.users = createLocalAuthUserStore(config.usersFilePath);\n }\n this.passwordAuth = new LocalPasswordAuth(this.users, (user) => signHmacToken(this.hmacSecret, user.id, SESSION_MAX_AGE_MS));\n }\n static fromEnv(env) {\n const hmacSecret = env.SELVA_HMAC_KEY;\n if (!hmacSecret)\n throw new Error(\"Missing required env var: SELVA_HMAC_KEY\");\n return new LocalAuthProvider({\n hmacSecret,\n usersFilePath: env.DATA_PATH ? path.join(env.DATA_PATH, \"auth-users.json\") : void 0\n });\n }\n /** Verify an HMAC session token and return the live user record. */\n async verifyToken(token) {\n const { valid, userId } = verifyHmacToken(token, this.hmacSecret);\n if (!valid)\n return null;\n if (!this.users)\n return null;\n const u = await this.users.findById(userId);\n if (!u || u.disabled)\n return null;\n await this.users.touchLastLogin(u.id).catch(() => {\n });\n return toAuthUser$1(u);\n }\n async touchLastLogin(id) {\n if (!this.users)\n return;\n await this.users.touchLastLogin(id);\n }\n async getUser(id) {\n if (!this.users)\n return null;\n const u = await this.users.findById(id);\n return u ? toAuthUser$1(u) : null;\n }\n async listUsers(opts) {\n if (!this.users)\n return null;\n const users = await this.users.listUsers();\n return paginate(users.map(toAuthUser$1), opts);\n }\n async deleteUser(id) {\n if (!this.users)\n return \"not_supported\";\n const target = await this.users.findById(id);\n if (!target)\n return \"not_found\";\n try {\n await this.users.deleteUser(id);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n async disableUser(id) {\n if (!this.users)\n return \"not_supported\";\n const target = await this.users.findById(id);\n if (!target)\n return \"not_found\";\n try {\n await this.users.setDisabled(id, true);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n}\nconst EMPTY$1 = { invites: [] };\nclass LocalInviteStore {\n events;\n filePath;\n static fromEnv(env, events = new NoopEventSink()) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalInviteStore(env.DATA_PATH, events);\n }\n constructor(dataPath, events = new NoopEventSink()) {\n this.events = events;\n this.filePath = path.join(dataPath, \"invites.json\");\n }\n async load() {\n return readJsonFile(this.filePath, EMPTY$1);\n }\n async save(file) {\n await writeJsonFile(this.filePath, file);\n }\n async create(ctx, invite) {\n const file = await this.load();\n file.invites.push(invite);\n await this.save(file);\n await this.events.emit({\n type: \"invite.created\",\n inviteId: invite.id,\n orgId: invite.orgId,\n email: invite.email,\n actorId: actorFrom(ctx)\n });\n }\n async getByTokenHash(_ctx, tokenHash) {\n const { invites } = await this.load();\n const invite = invites.find((i) => i.tokenHash === tokenHash);\n if (!invite)\n return null;\n if (invite.acceptedAt)\n return null;\n if (Date.parse(invite.expiresAt) <= Date.now())\n return null;\n return invite;\n }\n async listByOrg(_ctx, orgId, opts) {\n const { invites } = await this.load();\n const filtered = invites.filter((i) => i.orgId === orgId);\n return paginate(applyOrder(filtered, opts), opts);\n }\n async markAccepted(ctx, id, userId) {\n const file = await this.load();\n const invite = file.invites.find((i) => i.id === id);\n if (!invite || invite.acceptedAt)\n return;\n invite.acceptedAt = (/* @__PURE__ */ new Date()).toISOString();\n invite.acceptedByUserId = userId;\n await this.save(file);\n await this.events.emit({\n type: \"invite.accepted\",\n inviteId: invite.id,\n orgId: invite.orgId,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n async revoke(ctx, id) {\n const file = await this.load();\n const target = file.invites.find((i) => i.id === id && !i.acceptedAt);\n if (!target)\n return;\n file.invites = file.invites.filter((i) => i.id !== id || i.acceptedAt);\n await this.save(file);\n await this.events.emit({\n type: \"invite.revoked\",\n inviteId: id,\n orgId: target.orgId,\n actorId: actorFrom(ctx)\n });\n }\n async deleteByOrg(_ctx, orgId) {\n const file = await this.load();\n const before = file.invites.length;\n file.invites = file.invites.filter((i) => i.orgId !== orgId);\n if (file.invites.length === before)\n return;\n await this.save(file);\n }\n}\nconst ALGO = \"aes-256-gcm\";\nconst IV_BYTES = 12;\nconst TAG_BYTES = 16;\nconst PREFIX = \"enc:v1:\";\nfunction isEncryptedSecret(value) {\n return value.startsWith(PREFIX);\n}\nfunction encryptSecret(plaintext, key) {\n if (key.length !== 32) {\n throw new Error(`Secret key must be 32 bytes; got ${key.length}`);\n }\n if (isEncryptedSecret(plaintext)) {\n throw new Error(\"Refusing to encrypt a value that is already encrypted\");\n }\n const iv = randomBytes(IV_BYTES);\n const cipher = createCipheriv(ALGO, key, iv);\n const ciphertext = Buffer.concat([cipher.update(plaintext, \"utf8\"), cipher.final()]);\n const tag = cipher.getAuthTag();\n return PREFIX + Buffer.concat([iv, tag, ciphertext]).toString(\"base64\");\n}\nfunction decryptSecret(envelope, key) {\n if (key.length !== 32) {\n throw new Error(`Secret key must be 32 bytes; got ${key.length}`);\n }\n if (!isEncryptedSecret(envelope)) {\n throw new Error(\"Value is not an encrypted secret envelope\");\n }\n const buf = Buffer.from(envelope.slice(PREFIX.length), \"base64\");\n const iv = buf.subarray(0, IV_BYTES);\n const tag = buf.subarray(IV_BYTES, IV_BYTES + TAG_BYTES);\n const ciphertext = buf.subarray(IV_BYTES + TAG_BYTES);\n const decipher = createDecipheriv(ALGO, key, iv);\n decipher.setAuthTag(tag);\n return Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString(\"utf8\");\n}\nfunction decodeSecretKey(raw) {\n if (/^[0-9a-fA-F]{64}$/.test(raw))\n return Buffer.from(raw, \"hex\");\n const buf = Buffer.from(raw, \"base64\");\n if (buf.length === 32)\n return buf;\n throw new Error(`SELVA_AT_REST_KEY must be 32 bytes encoded as 64-char hex or base64. Generate one with: node -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\"`);\n}\nconst EMPTY = { servers: [], orgDefaults: {} };\nclass LocalComputeServerStore {\n configFilePath;\n secretKey;\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n if (!env.SELVA_AT_REST_KEY) {\n throw new Error(`Missing required env var: SELVA_AT_REST_KEY (32-byte hex or base64). Generate one with: node -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\"`);\n }\n return new LocalComputeServerStore(path.join(env.DATA_PATH, \"compute.config.json\"), decodeSecretKey(env.SELVA_AT_REST_KEY));\n }\n constructor(configFilePath, secretKey) {\n this.configFilePath = configFilePath;\n this.secretKey = secretKey;\n }\n async readAll() {\n const raw = await readJsonFile(this.configFilePath, EMPTY);\n return {\n servers: raw.servers ?? [],\n defaultServerId: raw.defaultServerId,\n orgDefaults: raw.orgDefaults ?? {}\n };\n }\n /**\n * Per-row tolerant decrypt. A row whose ciphertext can't be authenticated\n * under the current `SELVA_AT_REST_KEY` is returned with `apiKey: undefined`\n * and a warning logged once. The page that loaded the config keeps\n * rendering; solves against that server will fail later when Rhino.Compute\n * rejects the missing key.\n *\n * Boot-time `verifySecrets()` is the strict counterpart — call that from\n * the app entrypoint to refuse to start when this state is detected.\n *\n * Plaintext-on-disk is still hard-fail. That state is never produced by\n * the store itself (every write goes through `encryptApiKeys`), so seeing\n * it means someone hand-edited the file with a real secret in plaintext —\n * which is a security issue we should surface loudly, not paper over.\n */\n decryptApiKeys(servers) {\n return servers.map((s) => {\n if (!s.apiKey)\n return s;\n if (!isEncryptedSecret(s.apiKey)) {\n throw new Error(`compute.config.json contains an unencrypted apiKey for server \"${s.label}\" (${s.id}). Re-enter the key via /admin/compute so it is stored encrypted.`);\n }\n try {\n return { ...s, apiKey: decryptSecret(s.apiKey, this.secretKey) };\n } catch (cause) {\n console.warn(`[selva] Could not decrypt apiKey for compute server \"${s.label}\" (${s.id}). The stored ciphertext does not match the current SELVA_AT_REST_KEY. This server will be returned without an apiKey; solves against it will fail. Re-enter the key via /admin/compute, or restore the original SELVA_AT_REST_KEY. See docs/Troubleshooting.md.`, cause);\n return { ...s, apiKey: void 0 };\n }\n });\n }\n /**\n * Boot-time integrity check. Reads every server row and attempts to\n * decrypt each encrypted `apiKey`. Returns a structured report — does NOT\n * throw. The caller decides what to do (refuse boot, log + degrade, etc.).\n *\n * Use this from app startup (`hooks.server.ts`) so a key mismatch fails\n * loudly at deploy time instead of as a blank page when a user first hits\n * a route that loads compute config.\n */\n async verifySecrets() {\n const all = await this.readAll();\n const failures = [];\n let plaintextFound = false;\n for (const s of all.servers) {\n if (!s.apiKey)\n continue;\n if (!isEncryptedSecret(s.apiKey)) {\n plaintextFound = true;\n failures.push({\n serverId: s.id,\n serverLabel: s.label,\n reason: \"plaintext_on_disk\"\n });\n continue;\n }\n try {\n decryptSecret(s.apiKey, this.secretKey);\n } catch (cause) {\n failures.push({\n serverId: s.id,\n serverLabel: s.label,\n reason: \"key_mismatch\",\n cause: cause instanceof Error ? cause.message : String(cause)\n });\n }\n }\n return { ok: failures.length === 0, failures, plaintextFound };\n }\n encryptApiKeys(servers) {\n return servers.map((s) => {\n if (!s.apiKey)\n return s;\n if (isEncryptedSecret(s.apiKey))\n return s;\n return { ...s, apiKey: encryptSecret(s.apiKey, this.secretKey) };\n });\n }\n async getConfig(_ctx) {\n const all = await this.readAll();\n return {\n servers: this.decryptApiKeys(all.servers),\n defaultServerId: all.defaultServerId,\n orgDefaults: all.orgDefaults\n };\n }\n async savePlatformServers(_ctx, servers, defaultServerId) {\n const all = await this.readAll();\n const orgRows = all.servers.filter(isOrgServer);\n const platformRows = this.encryptApiKeys(servers.filter(isPlatformServer));\n await writeJsonFile(this.configFilePath, {\n servers: [...platformRows, ...orgRows],\n defaultServerId,\n orgDefaults: all.orgDefaults\n });\n }\n async saveOrgServers(_ctx, orgId, servers, defaultServerId) {\n const all = await this.readAll();\n const platformRows = all.servers.filter(isPlatformServer);\n const otherOrgRows = all.servers.filter((s) => isOrgServer(s) && s.ownerOrgId !== orgId);\n const thisOrgRows = this.encryptApiKeys(servers.filter((_s) => true).map((s) => isOrgServer(s) ? { ...s, ownerOrgId: orgId } : (\n // Coerce — caller passed something with the wrong/missing scope.\n { ...s, scope: \"org\", ownerOrgId: orgId }\n )));\n const orgDefaults = { ...all.orgDefaults ?? {} };\n if (defaultServerId === null) {\n delete orgDefaults[orgId];\n } else if (typeof defaultServerId === \"string\") {\n orgDefaults[orgId] = defaultServerId;\n }\n await writeJsonFile(this.configFilePath, {\n servers: [...platformRows, ...otherOrgRows, ...thisOrgRows],\n defaultServerId: all.defaultServerId,\n orgDefaults\n });\n }\n async setOrgDefault(_ctx, orgId, serverId) {\n const all = await this.readAll();\n const orgDefaults = { ...all.orgDefaults ?? {} };\n if (serverId === null) {\n delete orgDefaults[orgId];\n } else {\n orgDefaults[orgId] = serverId;\n }\n await writeJsonFile(this.configFilePath, { ...all, orgDefaults });\n }\n async deleteByOrg(_ctx, orgId) {\n const all = await this.readAll();\n const remaining = all.servers.filter((s) => !(isOrgServer(s) && s.ownerOrgId === orgId));\n const cleaned = remaining.map((s) => {\n if (!isPlatformServer(s))\n return s;\n if (s.sharedWith === \"all\")\n return s;\n if (!s.sharedWith.includes(orgId))\n return s;\n const next = {\n ...s,\n sharedWith: s.sharedWith.filter((id) => id !== orgId)\n };\n return next;\n });\n const orgDefaults = { ...all.orgDefaults ?? {} };\n const hadDefault = orgId in orgDefaults;\n delete orgDefaults[orgId];\n const changed = cleaned.length !== all.servers.length || hadDefault || cleaned.some((c, i) => c !== all.servers[i]);\n if (!changed)\n return;\n await writeJsonFile(this.configFilePath, {\n servers: cleaned,\n defaultServerId: all.defaultServerId,\n orgDefaults\n });\n }\n}\nconst empty$4 = () => ({ grants: [] });\nclass LocalPlatformProjectGrantStore {\n filePath;\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalPlatformProjectGrantStore(path.join(env.DATA_PATH, \"platform-project-grants.json\"));\n }\n constructor(filePath) {\n this.filePath = filePath;\n }\n async read() {\n return readJsonFile(this.filePath, empty$4());\n }\n async write(data) {\n await writeJsonFile(this.filePath, data);\n }\n async listByProject(_ctx, projectId) {\n const { grants } = await this.read();\n return grants.filter((g) => g.projectId === projectId);\n }\n async create(_ctx, grant) {\n const data = await this.read();\n if (data.grants.some((g) => g.id === grant.id)) {\n throw new ProviderError(`Grant '${grant.id}' already exists`, 409);\n }\n const duplicate = data.grants.find((g) => g.projectId === grant.projectId && g.granteeType === grant.granteeType && g.granteeId === grant.granteeId);\n if (duplicate) {\n throw new ProviderError(`A grant for this ${grant.granteeType} already exists on this project`, 409);\n }\n data.grants.push(grant);\n await this.write(data);\n }\n async delete(_ctx, id) {\n const data = await this.read();\n const idx = data.grants.findIndex((g) => g.id === id);\n if (idx === -1)\n throw new ProviderError(`Grant '${id}' not found`, 404);\n data.grants.splice(idx, 1);\n await this.write(data);\n }\n async deleteByProject(_ctx, projectId) {\n const data = await this.read();\n const before = data.grants.length;\n data.grants = data.grants.filter((g) => g.projectId !== projectId);\n if (data.grants.length !== before)\n await this.write(data);\n }\n async deleteByGranteeOrg(_ctx, orgId) {\n const data = await this.read();\n const before = data.grants.length;\n data.grants = data.grants.filter((g) => !(g.granteeType === \"org\" && g.granteeId === orgId));\n if (data.grants.length !== before)\n await this.write(data);\n }\n}\nfunction isLive$1(row) {\n return row.deletedAt == null;\n}\nclass LocalOrgStoreLoader {\n storePath;\n store = null;\n loading = null;\n constructor(dataPath) {\n this.storePath = path.join(dataPath, \"local-org.json\");\n }\n async get() {\n if (this.store)\n return this.store;\n this.loading ??= readJsonFile(this.storePath, {\n orgs: [],\n projects: [],\n orgMembers: [],\n projectMembers: []\n }).then((data) => {\n this.store = data;\n this.loading = null;\n return data;\n });\n return this.loading;\n }\n async write(store) {\n this.store = store;\n await writeJsonFile(this.storePath, store);\n }\n}\nclass LocalOrgStore {\n loader;\n events;\n invites;\n computeServer;\n grants;\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalOrgStore({\n loader: new LocalOrgStoreLoader(env.DATA_PATH),\n invites: LocalInviteStore.fromEnv(env),\n computeServer: LocalComputeServerStore.fromEnv(env),\n grants: LocalPlatformProjectGrantStore.fromEnv(env)\n });\n }\n constructor(opts) {\n this.loader = opts.loader;\n this.invites = opts.invites;\n this.computeServer = opts.computeServer;\n this.grants = opts.grants;\n this.events = opts.events ?? new NoopEventSink();\n }\n async listOrgs(_ctx, opts) {\n const { orgs } = await this.loader.get();\n return paginate(applyOrder(orgs.filter(isLive$1), opts), opts);\n }\n async getOrg(_ctx, id) {\n const { orgs } = await this.loader.get();\n const o = orgs.find((o2) => o2.id === id);\n return o && isLive$1(o) ? o : null;\n }\n async getOrgBySlug(_ctx, slug) {\n const { orgs } = await this.loader.get();\n const o = orgs.find((o2) => o2.slug === slug);\n return o && isLive$1(o) ? o : null;\n }\n async createOrg(ctx, org) {\n const store = await this.loader.get();\n if (store.orgs.some((o) => o.id === org.id && isLive$1(o))) {\n throw new ProviderError(`Org '${org.id}' already exists`, 409);\n }\n if (store.orgs.some((o) => o.slug === org.slug && isLive$1(o))) {\n throw new ProviderError(`Org slug '${org.slug}' already in use`, 409);\n }\n store.orgs.push({ ...org, deletedAt: null });\n const now = (/* @__PURE__ */ new Date()).toISOString();\n store.orgMembers.push({\n orgId: org.id,\n userId: org.ownerId,\n role: \"owner\",\n permissions: [...DEFAULT_ORG_PERMISSIONS.owner],\n joinedAt: now,\n ...auditUpdate(ctx, org.ownerId),\n deletedAt: null\n });\n await this.loader.write(store);\n await this.events.emit({ type: \"org.created\", orgId: org.id, actorId: actorFrom(ctx) });\n }\n async updateOrg(ctx, id, patch) {\n const store = await this.loader.get();\n const idx = store.orgs.findIndex((o) => o.id === id && isLive$1(o));\n if (idx === -1)\n throw new ProviderError(`Org '${id}' not found`, 404);\n if (patch.slug && patch.slug !== store.orgs[idx].slug) {\n if (store.orgs.some((o) => o.id !== id && o.slug === patch.slug && isLive$1(o))) {\n throw new ProviderError(`Org slug '${patch.slug}' already in use`, 409);\n }\n }\n store.orgs[idx] = {\n ...store.orgs[idx],\n ...patch,\n ...auditUpdate(ctx, store.orgs[idx].updatedBy ?? store.orgs[idx].ownerId)\n };\n await this.loader.write(store);\n }\n async deleteOrg(ctx, id) {\n const store = await this.loader.get();\n const idx = store.orgs.findIndex((o) => o.id === id && isLive$1(o));\n if (idx === -1)\n throw new ProviderError(`Org '${id}' not found`, 404);\n const stamp = auditSoftDelete(ctx, store.orgs[idx].updatedBy ?? store.orgs[idx].ownerId);\n store.orgs[idx] = { ...store.orgs[idx], ...stamp };\n store.orgMembers = store.orgMembers.map((m) => m.orgId === id && isLive$1(m) ? { ...m, ...stamp } : m);\n const orgProjectIds = new Set(store.projects.filter((p) => p.orgId === id && isLive$1(p)).map((p) => p.id));\n store.projects = store.projects.map((p) => p.orgId === id && isLive$1(p) ? { ...p, ...stamp } : p);\n store.projectMembers = store.projectMembers.map((m) => orgProjectIds.has(m.projectId) && isLive$1(m) ? { ...m, ...stamp } : m);\n await this.loader.write(store);\n await this.invites.deleteByOrg(ctx, id);\n await this.computeServer.deleteByOrg(ctx, id);\n for (const projectId of orgProjectIds) {\n await this.grants.deleteByProject(ctx, projectId);\n }\n await this.grants.deleteByGranteeOrg(ctx, id);\n await this.events.emit({ type: \"org.deleted\", orgId: id, actorId: actorFrom(ctx) });\n }\n async listOrgMembers(_ctx, orgId, opts) {\n const { orgMembers } = await this.loader.get();\n return paginate(orgMembers.filter((m) => m.orgId === orgId && isLive$1(m)), opts);\n }\n async getOrgMember(_ctx, orgId, userId) {\n const { orgMembers } = await this.loader.get();\n const m = orgMembers.find((m2) => m2.orgId === orgId && m2.userId === userId);\n return m && isLive$1(m) ? m : null;\n }\n async findUserMembership(_ctx, userId) {\n const store = await this.loader.get();\n const member = store.orgMembers.find((m) => m.userId === userId && isLive$1(m));\n if (!member)\n return null;\n const org = store.orgs.find((o) => o.id === member.orgId);\n if (!org || !isLive$1(org))\n return null;\n return { org, member };\n }\n async addOrgMember(ctx, member) {\n const store = await this.loader.get();\n const existing = store.orgMembers.find((m) => m.orgId === member.orgId && m.userId === member.userId);\n if (existing) {\n Object.assign(existing, member, {\n ...auditUpdate(ctx, member.userId),\n deletedAt: null\n });\n } else {\n store.orgMembers.push({ ...member, deletedAt: null });\n }\n await this.loader.write(store);\n await this.events.emit({\n type: \"org_member.added\",\n orgId: member.orgId,\n userId: member.userId,\n actorId: actorFrom(ctx)\n });\n }\n async updateOrgMemberRole(ctx, orgId, userId, role) {\n const store = await this.loader.get();\n const m = store.orgMembers.find((m2) => m2.orgId === orgId && m2.userId === userId && isLive$1(m2));\n if (!m)\n throw new ProviderError(`Org member '${userId}' not found`, 404);\n m.role = role;\n m.permissions = [...DEFAULT_ORG_PERMISSIONS[role]];\n Object.assign(m, auditUpdate(ctx, m.updatedBy));\n await this.loader.write(store);\n await this.events.emit({\n type: \"org_member.role_changed\",\n orgId,\n userId,\n role,\n actorId: actorFrom(ctx)\n });\n }\n async updateOrgMemberPermissions(ctx, orgId, userId, permissions) {\n const store = await this.loader.get();\n const m = store.orgMembers.find((m2) => m2.orgId === orgId && m2.userId === userId && isLive$1(m2));\n if (!m)\n throw new ProviderError(`Org member '${userId}' not found`, 404);\n m.permissions = [...permissions];\n Object.assign(m, auditUpdate(ctx, m.updatedBy));\n await this.loader.write(store);\n await this.events.emit({\n type: \"org_member.permissions_changed\",\n orgId,\n userId,\n permissions: [...permissions],\n actorId: actorFrom(ctx)\n });\n }\n async removeOrgMember(ctx, orgId, userId) {\n const store = await this.loader.get();\n const m = store.orgMembers.find((m2) => m2.orgId === orgId && m2.userId === userId && isLive$1(m2));\n if (!m)\n return;\n const stamp = auditSoftDelete(ctx, m.updatedBy);\n Object.assign(m, stamp);\n const projectIdsInOrg = new Set(store.projects.filter((p) => p.orgId === orgId).map((p) => p.id));\n store.projectMembers = store.projectMembers.map((pm) => pm.userId === userId && projectIdsInOrg.has(pm.projectId) && isLive$1(pm) ? { ...pm, ...stamp } : pm);\n await this.loader.write(store);\n await this.events.emit({\n type: \"org_member.removed\",\n orgId,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n}\nfunction isLive(row) {\n return row.deletedAt == null;\n}\nclass LocalProjectStore {\n loader;\n events;\n grants;\n constructor(opts) {\n this.loader = opts.loader;\n this.grants = opts.grants;\n this.events = opts.events ?? new NoopEventSink();\n }\n async listProjects(_ctx, orgId, opts) {\n const { projects } = await this.loader.get();\n return paginate(applyOrder(projects.filter((p) => p.orgId === orgId && isLive(p)), opts), opts);\n }\n async getProject(_ctx, id) {\n const { projects } = await this.loader.get();\n const p = projects.find((p2) => p2.id === id);\n return p && isLive(p) ? p : null;\n }\n async getProjectBySlug(_ctx, orgId, slug) {\n const { projects } = await this.loader.get();\n const p = projects.find((p2) => p2.orgId === orgId && p2.slug === slug);\n return p && isLive(p) ? p : null;\n }\n async createProject(ctx, project) {\n const store = await this.loader.get();\n if (!store.orgs.some((o) => o.id === project.orgId && isLive(o))) {\n throw new ProviderError(`Org '${project.orgId}' not found`, 404);\n }\n if (store.projects.some((p) => p.id === project.id && isLive(p))) {\n throw new ProviderError(`Project '${project.id}' already exists`, 409);\n }\n const nameKey = project.name.toLowerCase();\n if (store.projects.some((p) => p.orgId === project.orgId && isLive(p) && p.name.toLowerCase() === nameKey)) {\n throw new ProviderError(\"projects_org_name_unique: project name already in use\", 409);\n }\n if (store.projects.some((p) => p.orgId === project.orgId && isLive(p) && p.slug === project.slug)) {\n throw new ProviderError(\"projects_org_id_slug_key: project slug already in use\", 409);\n }\n store.projects.push({ ...project, deletedAt: null });\n store.projectMembers.push({\n projectId: project.id,\n userId: project.ownerId,\n role: \"owner\",\n joinedAt: project.createdAt,\n updatedAt: project.createdAt,\n updatedBy: project.ownerId,\n deletedAt: null\n });\n await this.loader.write(store);\n await this.events.emit({\n type: \"project.created\",\n projectId: project.id,\n orgId: project.orgId,\n actorId: actorFrom(ctx)\n });\n }\n async updateProject(ctx, id, patch) {\n const store = await this.loader.get();\n const idx = store.projects.findIndex((p) => p.id === id && isLive(p));\n if (idx === -1)\n throw new ProviderError(`Project '${id}' not found`, 404);\n const current = store.projects[idx];\n if (patch.name && patch.name.toLowerCase() !== current.name.toLowerCase()) {\n const nameKey = patch.name.toLowerCase();\n if (store.projects.some((p) => p.orgId === current.orgId && p.id !== id && isLive(p) && p.name.toLowerCase() === nameKey)) {\n throw new ProviderError(\"projects_org_name_unique: project name already in use\", 409);\n }\n }\n if (patch.slug && patch.slug !== current.slug) {\n if (store.projects.some((p) => p.orgId === current.orgId && p.slug === patch.slug && p.id !== id && isLive(p))) {\n throw new ProviderError(\"projects_org_id_slug_key: project slug already in use\", 409);\n }\n }\n store.projects[idx] = {\n ...current,\n ...patch,\n ...auditUpdate(ctx, current.updatedBy ?? current.ownerId)\n };\n await this.loader.write(store);\n }\n async deleteProject(ctx, id) {\n const store = await this.loader.get();\n const idx = store.projects.findIndex((p) => p.id === id && isLive(p));\n if (idx === -1)\n throw new ProviderError(`Project '${id}' not found`, 404);\n const stamp = auditSoftDelete(ctx, store.projects[idx].updatedBy ?? store.projects[idx].ownerId);\n store.projects[idx] = { ...store.projects[idx], ...stamp };\n store.projectMembers = store.projectMembers.map((m) => m.projectId === id && isLive(m) ? { ...m, ...stamp } : m);\n await this.loader.write(store);\n await this.grants.deleteByProject(ctx, id);\n await this.events.emit({ type: \"project.deleted\", projectId: id, actorId: actorFrom(ctx) });\n }\n async listProjectMembers(_ctx, projectId, opts) {\n const { projectMembers } = await this.loader.get();\n return paginate(projectMembers.filter((m) => m.projectId === projectId && isLive(m)), opts);\n }\n async getProjectMember(_ctx, projectId, userId) {\n const { projectMembers } = await this.loader.get();\n const m = projectMembers.find((m2) => m2.projectId === projectId && m2.userId === userId);\n return m && isLive(m) ? m : null;\n }\n async addProjectMember(ctx, member) {\n const store = await this.loader.get();\n const existing = store.projectMembers.find((m) => m.projectId === member.projectId && m.userId === member.userId);\n if (existing) {\n Object.assign(existing, member, {\n ...auditUpdate(ctx, member.userId),\n deletedAt: null\n });\n } else {\n const stamp = auditUpdate(ctx, member.userId);\n store.projectMembers.push({\n ...member,\n updatedAt: member.updatedAt ?? stamp.updatedAt,\n updatedBy: member.updatedBy ?? stamp.updatedBy,\n deletedAt: null\n });\n }\n await this.loader.write(store);\n await this.events.emit({\n type: \"project_member.added\",\n projectId: member.projectId,\n userId: member.userId,\n actorId: actorFrom(ctx)\n });\n }\n async updateProjectMemberRole(ctx, projectId, userId, role) {\n const store = await this.loader.get();\n const m = store.projectMembers.find((m2) => m2.projectId === projectId && m2.userId === userId && isLive(m2));\n if (!m)\n throw new ProviderError(`Project member '${userId}' not found`, 404);\n m.role = role;\n Object.assign(m, auditUpdate(ctx, m.updatedBy));\n await this.loader.write(store);\n await this.events.emit({\n type: \"project_member.role_changed\",\n projectId,\n userId,\n role,\n actorId: actorFrom(ctx)\n });\n }\n async removeProjectMember(ctx, projectId, userId) {\n const store = await this.loader.get();\n const m = store.projectMembers.find((m2) => m2.projectId === projectId && m2.userId === userId && isLive(m2));\n if (!m)\n return;\n Object.assign(m, auditSoftDelete(ctx, m.updatedBy));\n await this.loader.write(store);\n await this.events.emit({\n type: \"project_member.removed\",\n projectId,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n}\nconst empty$3 = () => ({ definitions: {}, definitionVersions: {} });\nclass LocalDefinitionStore {\n configPath;\n events;\n projectProvider;\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalDefinitionStore(env.DATA_PATH);\n }\n constructor(definitionsPath, projectProvider, events = new NoopEventSink()) {\n this.configPath = path.join(definitionsPath, \"definitions-config.json\");\n this.projectProvider = projectProvider;\n this.events = events;\n }\n setProjectProvider(projectProvider) {\n this.projectProvider = projectProvider;\n }\n async readConfig() {\n return readJsonFile(this.configPath, empty$3());\n }\n live(record) {\n return Boolean(record && record.deletedAt == null);\n }\n async writeConfig(config) {\n await writeJsonFile(this.configPath, config);\n }\n sortedRecords(records, opts) {\n const defaulted = {\n ...opts,\n orderBy: opts?.orderBy ?? \"name\",\n orderDir: opts?.orderDir ?? \"asc\"\n };\n return applyOrder([...records], defaulted, (r, field) => {\n if (field === \"name\")\n return r.displayName.toLowerCase();\n if (field === \"solveCount\")\n return r.solveCount ?? 0;\n return r[field];\n });\n }\n visibleRecords(records, opts) {\n const filtered = records.filter((r) => r?.displayName && this.live(r));\n if (opts?.statuses?.length) {\n const allowed = new Set(opts.statuses);\n return filtered.filter((r) => allowed.has(r.status));\n }\n return filtered.filter((r) => {\n if (r.status === \"pending\" && !opts?.includePending)\n return false;\n if (r.status === \"archived\" && !opts?.includeArchived)\n return false;\n return true;\n });\n }\n async list(_ctx, opts) {\n const config = await this.readConfig();\n const records = this.visibleRecords(Object.values(config.definitions), opts);\n return paginate(this.sortedRecords(records, opts), opts);\n }\n async listByProject(_ctx, projectId, opts) {\n const config = await this.readConfig();\n const records = this.visibleRecords(Object.values(config.definitions).filter((r) => r?.projectId === projectId), opts);\n return paginate(this.sortedRecords(records, opts), opts);\n }\n async listPublic(ctx, opts) {\n if (!this.projectProvider) {\n return this.list(ctx, opts);\n }\n const config = await this.readConfig();\n const records = Object.values(config.definitions).filter((r) => Boolean(r?.displayName && this.live(r)));\n const projectIds = Array.from(new Set(records.map((r) => r.projectId)));\n const projects = await Promise.all(projectIds.map((id) => this.projectProvider.getProject(ctx, id)));\n const publicProjectIds = new Set(projects.filter((p) => p !== null && p.visibility === \"public\" && (!opts?.orgId || p.orgId === opts.orgId)).map((p) => p.id));\n const publicRecords = this.visibleRecords(records.filter((r) => publicProjectIds.has(r.projectId)), opts);\n return paginate(this.sortedRecords(publicRecords, opts), opts);\n }\n async get(_ctx, guid) {\n const config = await this.readConfig();\n const r = config.definitions[guid];\n return this.live(r) ? r : null;\n }\n async create(ctx, record) {\n const config = await this.readConfig();\n const actor = ctx.userId || record.ownerId;\n config.definitions[record.guid] = {\n ...record,\n createdBy: record.createdBy || actor,\n updatedBy: record.updatedBy || actor,\n liveVersionId: record.liveVersionId ?? null,\n draftVersionId: record.draftVersionId ?? null,\n deletedAt: null\n };\n await this.writeConfig(config);\n await this.events.emit({\n type: \"definition.created\",\n definitionId: record.guid,\n projectId: record.projectId,\n actorId: actorFrom(ctx)\n });\n }\n async update(ctx, guid, patch) {\n const config = await this.readConfig();\n const existing = config.definitions[guid];\n if (!this.live(existing))\n throw new ProviderError(`Definition '${guid}' not found`, 404);\n const clearable = (v) => v === null ? void 0 : v;\n config.definitions[guid] = {\n ...existing,\n ...patch.displayName !== void 0 && { displayName: patch.displayName },\n ...patch.description !== void 0 && {\n description: clearable(patch.description)\n },\n ...patch.category !== void 0 && {\n category: clearable(patch.category)\n },\n ...patch.tags !== void 0 && { tags: clearable(patch.tags) },\n ...patch.coverImage !== void 0 && {\n coverImage: clearable(patch.coverImage)\n },\n ...patch.projectId !== void 0 && { projectId: patch.projectId },\n ...patch.computeServerId !== void 0 && {\n computeServerId: clearable(patch.computeServerId)\n },\n ...patch.status !== void 0 && { status: patch.status },\n ...patch.ownerId !== void 0 && { ownerId: patch.ownerId },\n ...auditUpdate(ctx, existing.updatedBy ?? existing.ownerId)\n };\n await this.writeConfig(config);\n }\n async delete(ctx, guid) {\n const config = await this.readConfig();\n const existing = config.definitions[guid];\n if (!this.live(existing))\n return;\n Object.assign(existing, auditSoftDelete(ctx, existing.updatedBy ?? existing.ownerId));\n await this.writeConfig(config);\n await this.events.emit({\n type: \"definition.deleted\",\n definitionId: guid,\n actorId: actorFrom(ctx)\n });\n }\n async incrementSolveCount(_ctx, guid) {\n const config = await this.readConfig();\n const existing = config.definitions[guid];\n if (!this.live(existing))\n return;\n existing.solveCount = (existing.solveCount ?? 0) + 1;\n existing.updatedAt = (/* @__PURE__ */ new Date()).toISOString();\n await this.writeConfig(config);\n }\n // ============================================================================\n // Versions (spec §6)\n // ============================================================================\n async createVersion(ctx, version) {\n const config = await this.readConfig();\n const parent = config.definitions[version.definitionId];\n if (!this.live(parent)) {\n throw new ProviderError(`Definition '${version.definitionId}' not found`, 404);\n }\n if (config.definitionVersions[version.id]) {\n throw new ProviderError(`Version '${version.id}' already exists`, 409);\n }\n config.definitionVersions[version.id] = { ...version };\n await this.writeConfig(config);\n await this.events.emit({\n type: \"definition_version.created\",\n versionId: version.id,\n definitionId: version.definitionId,\n actorId: actorFrom(ctx)\n });\n }\n async listVersions(_ctx, definitionId, opts) {\n const config = await this.readConfig();\n const parent = config.definitions[definitionId];\n if (!this.live(parent))\n return paginate([], opts);\n const rows = Object.values(config.definitionVersions).filter((v) => v.definitionId === definitionId).sort((a, b) => b.versionNumber - a.versionNumber);\n return paginate(rows, opts);\n }\n async getVersion(_ctx, versionId) {\n const config = await this.readConfig();\n return config.definitionVersions[versionId] ?? null;\n }\n async deleteVersion(ctx, versionId) {\n const config = await this.readConfig();\n const version = config.definitionVersions[versionId];\n if (!version)\n return;\n const parent = config.definitions[version.definitionId];\n if (parent && (parent.liveVersionId === versionId || parent.draftVersionId === versionId)) {\n throw new ProviderError(`Version '${versionId}' is referenced by liveVersionId or draftVersionId`, 409);\n }\n delete config.definitionVersions[versionId];\n await this.writeConfig(config);\n await this.events.emit({\n type: \"definition_version.deleted\",\n versionId,\n actorId: actorFrom(ctx)\n });\n }\n async setLiveVersion(ctx, definitionId, versionId) {\n await this.repoint(\"live\", ctx, definitionId, versionId);\n }\n async setDraftVersion(ctx, definitionId, versionId) {\n await this.repoint(\"draft\", ctx, definitionId, versionId);\n }\n async attachInitialVersion(ctx, definitionId, versionId) {\n const config = await this.readConfig();\n const record = config.definitions[definitionId];\n if (!this.live(record))\n throw new ProviderError(`Definition '${definitionId}' not found`, 404);\n const version = config.definitionVersions[versionId];\n if (!version || version.definitionId !== definitionId) {\n throw new ProviderError(`Version '${versionId}' not found for this definition`, 404);\n }\n record.liveVersionId = versionId;\n record.draftVersionId = versionId;\n record.status = \"draft\";\n Object.assign(record, auditUpdate(ctx, record.updatedBy ?? record.ownerId));\n await this.writeConfig(config);\n }\n async repoint(channel, ctx, definitionId, versionId) {\n const config = await this.readConfig();\n const record = config.definitions[definitionId];\n if (!this.live(record))\n throw new ProviderError(`Definition '${definitionId}' not found`, 404);\n const version = config.definitionVersions[versionId];\n if (!version || version.definitionId !== definitionId) {\n throw new ProviderError(`Version '${versionId}' not found for this definition`, 404);\n }\n if (channel === \"live\")\n record.liveVersionId = versionId;\n else\n record.draftVersionId = versionId;\n Object.assign(record, auditUpdate(ctx, record.updatedBy ?? record.ownerId));\n await this.writeConfig(config);\n if (channel === \"live\") {\n await this.events.emit({\n type: \"definition.published\",\n definitionId,\n versionId,\n actorId: actorFrom(ctx)\n });\n }\n }\n}\nconst empty$2 = () => ({ links: {} });\nclass LocalShareLinkStore {\n definitionProvider;\n events;\n configFilePath;\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalShareLinkStore({\n filePath: path.join(env.DATA_PATH, \"share-links.json\")\n });\n }\n constructor(opts) {\n this.configFilePath = opts.filePath;\n this.events = opts.events ?? new NoopEventSink();\n }\n /**\n * Wire the definition store so token resolution can check the parent\n * definition's `deletedAt` (Permissions.md §7 cascade contract). Mirrors\n * Supabase, which performs the equivalent JOIN. Optional: when unset, the\n * store falls back to the local-only revoke check; the route layer in\n * the selva app does the parent lookup as a safety net either way.\n */\n setDefinitionProvider(definitions) {\n this.definitionProvider = definitions;\n }\n async readAll() {\n return readJsonFile(this.configFilePath, empty$2());\n }\n async writeAll(data) {\n await writeJsonFile(this.configFilePath, data);\n }\n isLive(l) {\n return Boolean(l && l.revokedAt == null);\n }\n async create(ctx, link) {\n const all = await this.readAll();\n if (all.links[link.id]) {\n throw new ProviderError(`Share link '${link.id}' already exists`, 409);\n }\n all.links[link.id] = { ...link, revokedAt: null };\n await this.writeAll(all);\n await this.events.emit({\n type: \"share_link.minted\",\n linkId: link.id,\n definitionId: link.definitionId,\n actorId: actorFrom(ctx)\n });\n }\n async listByDefinition(_ctx, definitionId, opts) {\n const all = await this.readAll();\n const rows = Object.values(all.links).filter((l) => l.definitionId === definitionId && this.isLive(l)).sort((a, b) => b.createdAt.localeCompare(a.createdAt));\n return paginate(rows, opts);\n }\n async getById(_ctx, id) {\n const all = await this.readAll();\n return all.links[id] ?? null;\n }\n async getByTokenHash(_ctx, tokenHash) {\n const all = await this.readAll();\n const found = Object.values(all.links).find((l) => l.tokenHash === tokenHash);\n if (!this.isLive(found))\n return null;\n if (this.definitionProvider) {\n const parent = await this.definitionProvider.get(SYSTEM_CONTEXT, found.definitionId);\n if (!parent)\n return null;\n }\n return found;\n }\n async revoke(ctx, id) {\n const all = await this.readAll();\n const l = all.links[id];\n if (!l || !this.isLive(l))\n return;\n l.revokedAt = (/* @__PURE__ */ new Date()).toISOString();\n await this.writeAll(all);\n await this.events.emit({ type: \"share_link.revoked\", linkId: id, actorId: actorFrom(ctx) });\n }\n async tryIncrementSolveCount(_ctx, id) {\n const all = await this.readAll();\n const l = all.links[id];\n if (!l || !this.isLive(l))\n return null;\n if (l.maxSolves != null && l.solveCount >= l.maxSolves)\n return null;\n l.solveCount += 1;\n await this.writeAll(all);\n return l.solveCount;\n }\n}\nconst MAX_RECENT_RUNS$1 = 20;\nconst empty$1 = () => ({ users: [] });\nfunction emptyRow(userId) {\n return {\n userId,\n platformPermissions: [],\n starredDefinitions: [],\n recentRuns: []\n };\n}\nfunction createLocalUserDataStore(filePath) {\n async function findOrThrow(userId) {\n const file = await readJsonFile(filePath, empty$1());\n const row = file.users.find((u) => u.userId === userId);\n if (!row)\n throw new ProviderError(`User-data row \"${userId}\" not found`, 404);\n return { file, row };\n }\n return {\n async ensure(userId) {\n const file = await readJsonFile(filePath, empty$1());\n if (file.users.some((u) => u.userId === userId))\n return;\n file.users.push(emptyRow(userId));\n await writeJsonFile(filePath, file);\n },\n async findById(userId) {\n const { users } = await readJsonFile(filePath, empty$1());\n return users.find((u) => u.userId === userId) ?? null;\n },\n async listAll() {\n const { users } = await readJsonFile(filePath, empty$1());\n return users;\n },\n async updatePermissions(userId, permissions) {\n const { file, row } = await findOrThrow(userId);\n row.platformPermissions = permissions;\n await writeJsonFile(filePath, file);\n },\n async updateDisplayName(userId, displayName) {\n const { file, row } = await findOrThrow(userId);\n if (displayName === void 0) {\n delete row.displayName;\n } else {\n row.displayName = displayName;\n }\n await writeJsonFile(filePath, file);\n },\n async starDefinition(userId, definitionId) {\n const { file, row } = await findOrThrow(userId);\n if (!row.starredDefinitions.includes(definitionId)) {\n row.starredDefinitions.push(definitionId);\n await writeJsonFile(filePath, file);\n }\n },\n async unstarDefinition(userId, definitionId) {\n const { file, row } = await findOrThrow(userId);\n row.starredDefinitions = row.starredDefinitions.filter((d) => d !== definitionId);\n await writeJsonFile(filePath, file);\n },\n async recordRun(userId, run) {\n const { file, row } = await findOrThrow(userId);\n row.recentRuns = [\n run,\n ...row.recentRuns.filter((r) => r.definitionId !== run.definitionId)\n ].slice(0, MAX_RECENT_RUNS$1);\n await writeJsonFile(filePath, file);\n },\n async deleteUser(userId) {\n const file = await readJsonFile(filePath, empty$1());\n const before = file.users.length;\n file.users = file.users.filter((u) => u.userId !== userId);\n if (file.users.length === before) {\n throw new ProviderError(`User-data row \"${userId}\" not found`, 404);\n }\n await writeJsonFile(filePath, file);\n }\n };\n}\nfunction toProfile(u) {\n return {\n userId: u.userId,\n displayName: u.displayName,\n starredDefinitions: u.starredDefinitions ?? [],\n recentRuns: u.recentRuns ?? []\n };\n}\nclass LocalUserProfileProvider {\n data;\n constructor(userDataFilePath) {\n this.data = createLocalUserDataStore(userDataFilePath);\n }\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalUserProfileProvider(path.join(env.DATA_PATH, \"user-data.json\"));\n }\n async getProfile(ctx, userId) {\n assertCanAccess$1(ctx, userId);\n const u = await this.data.findById(userId);\n return u ? toProfile(u) : null;\n }\n async getProfiles(_ctx, userIds) {\n const all = await this.data.listAll();\n const wanted = new Set(userIds);\n return all.filter((u) => wanted.has(u.userId)).map(toProfile);\n }\n async updateProfile(ctx, userId, patch) {\n assertCanAccess$1(ctx, userId);\n try {\n if (patch.displayName !== void 0) {\n await this.data.updateDisplayName(userId, patch.displayName);\n }\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n async starDefinition(ctx, userId, definitionId) {\n assertCanAccess$1(ctx, userId);\n try {\n await this.data.starDefinition(userId, definitionId);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n async unstarDefinition(ctx, userId, definitionId) {\n assertCanAccess$1(ctx, userId);\n try {\n await this.data.unstarDefinition(userId, definitionId);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n async recordRun(ctx, userId, run) {\n assertCanAccess$1(ctx, userId);\n try {\n await this.data.recordRun(userId, run);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n}\nfunction assertCanAccess$1(ctx, userId) {\n if (ctx.system)\n return;\n if (ctx.userId === userId)\n return;\n if (hasPermission(ctx, \"instance_admin\"))\n return;\n throw new ProviderError(\"Forbidden: cannot access another user’s profile\", 403);\n}\nclass LocalPlatformPermissionStore {\n data;\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalPlatformPermissionStore(path.join(env.DATA_PATH, \"user-data.json\"));\n }\n constructor(userDataFilePath) {\n this.data = createLocalUserDataStore(userDataFilePath);\n }\n async getFor(ctx, userId) {\n assertCanRead$1(ctx, userId);\n const row = await this.data.findById(userId);\n return row?.platformPermissions ?? [];\n }\n async getForBatch(ctx, userIds) {\n assertCanReadBatch(ctx);\n const all = await this.data.listAll();\n const wanted = new Set(userIds);\n const out = /* @__PURE__ */ new Map();\n for (const u of all) {\n if (wanted.has(u.userId))\n out.set(u.userId, u.platformPermissions ?? []);\n }\n return out;\n }\n async set(ctx, userId, permissions) {\n assertAdmin$1(ctx);\n const target = await this.data.findById(userId);\n if (!target)\n return \"not_found\";\n const wasAdmin = target.platformPermissions.includes(\"instance_admin\");\n const willBeAdmin = permissions.includes(\"instance_admin\");\n if (wasAdmin && !willBeAdmin) {\n const others = await this.countOtherAdmins(userId);\n if (others === 0)\n return \"last_admin\";\n }\n try {\n await this.data.updatePermissions(userId, [...permissions]);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n async hasInstanceAdmin(_ctx) {\n const all = await this.data.listAll();\n return all.some((u) => u.platformPermissions.includes(\"instance_admin\"));\n }\n async countInstanceAdminsExcluding(_ctx, excludeUserId) {\n return this.countOtherAdmins(excludeUserId);\n }\n async countOtherAdmins(excludeUserId) {\n const all = await this.data.listAll();\n return all.filter((u) => u.userId !== excludeUserId && u.platformPermissions.includes(\"instance_admin\")).length;\n }\n}\nfunction assertCanRead$1(ctx, userId) {\n if (ctx.system)\n return;\n if (ctx.userId === userId)\n return;\n if (hasPermission(ctx, \"instance_admin\"))\n return;\n throw new ProviderError(\"Forbidden: cannot read another user’s permissions\", 403);\n}\nfunction assertAdmin$1(ctx) {\n if (ctx.system)\n return;\n if (hasPermission(ctx, \"instance_admin\"))\n return;\n throw new ProviderError(\"Forbidden: instance admin required\", 403);\n}\nfunction assertCanReadBatch(ctx) {\n if (ctx.system)\n return;\n if (hasPermission(ctx, \"instance_admin\"))\n return;\n if (hasPermission(ctx, \"manage_instance_users\"))\n return;\n throw new ProviderError(\"Forbidden: instance admin or manage_instance_users required\", 403);\n}\nclass LocalDataProvider {\n orgs;\n projects;\n definitions;\n computeServer;\n invites;\n shareLinks;\n userProfile;\n permissions;\n platformProjectGrants;\n userData;\n constructor(stores, userData) {\n this.orgs = stores.orgs;\n this.projects = stores.projects;\n this.definitions = stores.definitions;\n this.computeServer = stores.computeServer;\n this.invites = stores.invites;\n this.shareLinks = stores.shareLinks;\n this.userProfile = stores.userProfile;\n this.permissions = stores.permissions;\n this.platformProjectGrants = stores.platformProjectGrants;\n this.userData = userData;\n }\n /**\n * Idempotently register a user in the data layer. Called from\n * `hooks.server.ts` on every authed request — the local equivalent of\n * Supabase's `handle_new_auth_user` trigger. After this completes the\n * user has an empty row in `user-data.json` that the permissions and\n * profile stores can read and update.\n *\n * `ctx` is unused — registration runs as a system operation regardless of\n * the calling user. Argument is kept for interface symmetry with adapters\n * that need it.\n */\n async ensureUser(_ctx, userId) {\n await this.userData.ensure(userId);\n }\n /**\n * Cascade hook called after the auth provider deletes a user. Removes the\n * matching `user-data.json` row so the data layer doesn't accumulate\n * orphans. Tolerates missing rows.\n */\n async onUserDeleted(_ctx, userId) {\n try {\n await this.userData.deleteUser(userId);\n } catch {\n }\n }\n static fromEnv(env, events = new NoopEventSink()) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n const dataPath = env.DATA_PATH;\n const userDataFilePath = path.join(dataPath, \"user-data.json\");\n const loader = new LocalOrgStoreLoader(dataPath);\n const platformProjectGrants = LocalPlatformProjectGrantStore.fromEnv(env);\n const invites = LocalInviteStore.fromEnv(env, events);\n const computeServer = LocalComputeServerStore.fromEnv(env);\n const projects = new LocalProjectStore({ loader, grants: platformProjectGrants, events });\n const definitions = new LocalDefinitionStore(dataPath, void 0, events);\n const shareLinks = new LocalShareLinkStore({\n filePath: path.join(dataPath, \"share-links.json\"),\n events\n });\n const orgs = new LocalOrgStore({\n loader,\n invites,\n computeServer,\n grants: platformProjectGrants,\n events\n });\n definitions.setProjectProvider(projects);\n shareLinks.setDefinitionProvider(definitions);\n const userData = createLocalUserDataStore(userDataFilePath);\n return new LocalDataProvider({\n orgs,\n projects,\n definitions,\n computeServer,\n invites,\n shareLinks,\n userProfile: new LocalUserProfileProvider(userDataFilePath),\n permissions: new LocalPlatformPermissionStore(userDataFilePath),\n platformProjectGrants\n }, userData);\n }\n}\nclass LocalStorageProvider {\n basePath;\n publicUrlBase;\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalStorageProvider(env.DATA_PATH, \"/api/files\");\n }\n constructor(basePath, publicUrlBase = \"/api/files\") {\n this.basePath = basePath;\n this.publicUrlBase = publicUrlBase;\n }\n /**\n * Resolve a caller-provided path under basePath, rejecting anything that\n * would escape the root. Last line of defense against traversal — while\n * platform-side helpers (definitionPaths) also assert safe keys, this\n * adapter is reached by any IStorageProvider caller.\n */\n resolvePath(storagePath) {\n const base = path.resolve(this.basePath);\n const full = path.resolve(base, storagePath);\n if (full !== base && !full.startsWith(base + path.sep)) {\n throw new Error(`Path escapes base: ${storagePath}`);\n }\n return full;\n }\n async get(storagePath) {\n try {\n const buffer = await fs.readFile(this.resolvePath(storagePath));\n return new Uint8Array(buffer);\n } catch (err) {\n if (err.code === \"ENOENT\")\n return null;\n throw err;\n }\n }\n async put(storagePath, data, contentType) {\n const transcoded = await transcodeImageIfNeeded(data, contentType, storagePath);\n const fullPath = this.resolvePath(transcoded.path);\n await fs.mkdir(path.dirname(fullPath), { recursive: true });\n await fs.writeFile(fullPath, Buffer.from(transcoded.data));\n }\n async delete(storagePath) {\n try {\n await fs.unlink(this.resolvePath(storagePath));\n } catch (err) {\n if (err.code !== \"ENOENT\")\n throw err;\n }\n }\n async deletePrefix(prefix) {\n const fullPath = this.resolvePath(prefix);\n await fs.rm(fullPath, { recursive: true, force: true });\n }\n getPublicUrl(storagePath) {\n return `${this.publicUrlBase}/${storagePath}`;\n }\n}\nclass SupabaseStorageProvider {\n client;\n publicBucket;\n privateBucket;\n publicBaseUrl;\n privateUrlPrefix;\n static fromEnv(env) {\n const supabaseUrl = env.SUPABASE_URL;\n const serviceRoleKey = env.SUPABASE_SERVICE_ROLE_KEY;\n if (!supabaseUrl)\n throw new Error(\"Missing required env var: SUPABASE_URL\");\n if (!serviceRoleKey)\n throw new Error(\"Missing required env var: SUPABASE_SERVICE_ROLE_KEY\");\n return new SupabaseStorageProvider({\n supabaseUrl,\n serviceRoleKey,\n publicBucket: env.SUPABASE_PUBLIC_BUCKET,\n privateBucket: env.SUPABASE_PRIVATE_BUCKET,\n privateUrlPrefix: env.SUPABASE_PRIVATE_URL_PREFIX\n });\n }\n constructor(config) {\n this.client = createClient(config.supabaseUrl, config.serviceRoleKey, {\n auth: { persistSession: false, autoRefreshToken: false }\n });\n this.publicBucket = config.publicBucket ?? \"selva-public\";\n this.privateBucket = config.privateBucket ?? \"selva-private\";\n this.publicBaseUrl = `${config.supabaseUrl.replace(/\\/$/, \"\")}/storage/v1/object/public/${this.publicBucket}`;\n this.privateUrlPrefix = (config.privateUrlPrefix ?? \"/api/files\").replace(/\\/$/, \"\");\n }\n /**\n * Route a storage path to a bucket. Any `.gh`/`.ghx` source file is\n * private — confidentiality is determined by extension, not location, so\n * a path-scheme rename (e.g. `definition.gh` → `versions/v1.gh`) can't\n * silently move source files into the public bucket. Everything else\n * (covers, archives, thumbnails) is public.\n */\n bucketFor(storagePath) {\n return /\\.(gh|ghx)$/i.test(storagePath) ? this.privateBucket : this.publicBucket;\n }\n async get(storagePath) {\n const bucket = this.bucketFor(storagePath);\n const { data, error } = await this.client.storage.from(bucket).download(storagePath);\n if (error) {\n const msg = error.message ?? \"\";\n if (/not found/i.test(msg) || /no such key/i.test(msg))\n return null;\n throw error;\n }\n const buffer = await data.arrayBuffer();\n return new Uint8Array(buffer);\n }\n async put(storagePath, data, contentType) {\n const transcoded = await transcodeImageIfNeeded(data, contentType, storagePath);\n const bucket = this.bucketFor(transcoded.path);\n const { error } = await this.client.storage.from(bucket).upload(transcoded.path, transcoded.data, {\n contentType: transcoded.contentType,\n upsert: true\n });\n if (error)\n throw error;\n }\n async delete(storagePath) {\n const bucket = this.bucketFor(storagePath);\n const { error } = await this.client.storage.from(bucket).remove([storagePath]);\n if (error)\n throw error;\n }\n async deletePrefix(prefix) {\n await Promise.all([\n this.deletePrefixInBucket(this.publicBucket, prefix),\n this.deletePrefixInBucket(this.privateBucket, prefix)\n ]);\n }\n async deletePrefixInBucket(bucket, prefix) {\n const normalized = prefix.replace(/\\/+$/, \"\");\n const keys = await this.listAllKeys(bucket, normalized);\n if (keys.length === 0)\n return;\n for (let i = 0; i < keys.length; i += 1e3) {\n const slice = keys.slice(i, i + 1e3);\n const { error } = await this.client.storage.from(bucket).remove(slice);\n if (error)\n throw error;\n }\n }\n /**\n * Recursively list every key under a prefix. `storage-js`'s `list` API\n * only returns the immediate children of a \"folder\", so we DFS.\n */\n async listAllKeys(bucket, prefix) {\n const out = [];\n const stack = [prefix];\n while (stack.length > 0) {\n const dir = stack.pop();\n const { data, error } = await this.client.storage.from(bucket).list(dir, {\n limit: 1e3,\n sortBy: { column: \"name\", order: \"asc\" }\n });\n if (error)\n throw error;\n for (const entry of data ?? []) {\n const full = dir ? `${dir}/${entry.name}` : entry.name;\n if (entry.id === null) {\n stack.push(full);\n } else {\n out.push(full);\n }\n }\n }\n return out;\n }\n getPublicUrl(storagePath) {\n if (this.bucketFor(storagePath) === this.publicBucket) {\n return `${this.publicBaseUrl}/${storagePath}`;\n }\n return `${this.privateUrlPrefix}/${storagePath}`;\n }\n}\nfunction decodeCursor(cursor) {\n if (!cursor)\n return 0;\n const n = parseInt(cursor, 10);\n return Number.isFinite(n) && n >= 0 ? n : 0;\n}\nfunction encodeCursor(offset) {\n return String(offset);\n}\nfunction toRange(opts) {\n const limit = Math.min(Math.max(opts?.limit ?? DEFAULT_PAGE_LIMIT, 1), MAX_PAGE_LIMIT);\n const from = decodeCursor(opts?.cursor);\n return { from, to: from + limit - 1, limit };\n}\nfunction nextCursorFromRange(range, returnedCount, totalCount) {\n const consumed = range.from + returnedCount;\n if (totalCount != null) {\n return consumed < totalCount ? encodeCursor(consumed) : void 0;\n }\n return returnedCount >= range.limit ? encodeCursor(consumed) : void 0;\n}\nfunction orderColumn(orderBy) {\n switch (orderBy) {\n case \"name\":\n return \"name\";\n case \"updatedAt\":\n return \"updated_at\";\n case \"createdAt\":\n default:\n return \"created_at\";\n }\n}\nclass SupabaseOrgStore {\n clients;\n events;\n constructor(clients, events = new NoopEventSink()) {\n this.clients = clients;\n this.events = events;\n }\n async listOrgs(ctx, opts) {\n const range = toRange(opts);\n const direction = opts?.orderDir ?? \"desc\";\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"orgs\").select(\"*\", { count: \"exact\" }).is(\"deleted_at\", null).order(orderColumn(opts?.orderBy), { ascending: direction === \"asc\" }).range(range.from, range.to);\n if (error)\n throw mapError$7(error);\n const items = (data ?? []).map(rowToOrg);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getOrg(ctx, id) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"orgs\").select(\"*\").eq(\"id\", id).is(\"deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$7(error);\n return data ? rowToOrg(data) : null;\n }\n async getOrgBySlug(ctx, slug) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"orgs\").select(\"*\").eq(\"slug\", slug).is(\"deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$7(error);\n return data ? rowToOrg(data) : null;\n }\n async createOrg(ctx, org) {\n const client = this.clients.forRequest(ctx);\n const { error } = await client.from(\"orgs\").insert(orgToRow(org));\n if (error)\n throw mapError$7(error);\n const { error: memberError } = await client.from(\"org_members\").upsert({\n org_id: org.id,\n user_id: org.ownerId,\n role: \"owner\",\n permissions: [...DEFAULT_ORG_PERMISSIONS.owner],\n joined_at: (/* @__PURE__ */ new Date()).toISOString(),\n deleted_at: null\n }, { onConflict: \"org_id,user_id\" });\n if (memberError)\n throw mapError$7(memberError);\n await this.events.emit({ type: \"org.created\", orgId: org.id, actorId: actorFrom(ctx) });\n }\n async updateOrg(ctx, id, patch) {\n const row = {};\n if (patch.name !== void 0)\n row.name = patch.name;\n if (patch.slug !== void 0)\n row.slug = patch.slug;\n if (Object.keys(row).length === 0)\n return;\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { error, data } = await this.clients.forRequest(ctx).from(\"orgs\").update(row).eq(\"id\", id).is(\"deleted_at\", null).select(\"id\");\n if (error)\n throw mapError$7(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Org '${id}' not found`, 404);\n }\n async deleteOrg(ctx, id) {\n const client = this.clients.forRequest(ctx);\n const stamp = auditSoftDelete(ctx, ctx.userId);\n const stampRow = stampToRow$1(stamp);\n const { error: orgErr, data: orgData } = await client.from(\"orgs\").update(stampRow).eq(\"id\", id).is(\"deleted_at\", null).select(\"id\");\n if (orgErr)\n throw mapError$7(orgErr);\n if (!orgData || orgData.length === 0)\n throw new ProviderError(`Org '${id}' not found`, 404);\n const { error: omErr } = await client.from(\"org_members\").update(stampRow).eq(\"org_id\", id).is(\"deleted_at\", null);\n if (omErr)\n throw mapError$7(omErr);\n const { data: orgProjects, error: projFetchErr } = await client.from(\"projects\").select(\"id\").eq(\"org_id\", id).is(\"deleted_at\", null);\n if (projFetchErr)\n throw mapError$7(projFetchErr);\n const projectIds = (orgProjects ?? []).map((p) => p.id);\n const { error: projErr } = await client.from(\"projects\").update(stampRow).eq(\"org_id\", id).is(\"deleted_at\", null);\n if (projErr)\n throw mapError$7(projErr);\n if (projectIds.length > 0) {\n const { error: pmErr } = await client.from(\"project_members\").update(stampRow).in(\"project_id\", projectIds).is(\"deleted_at\", null);\n if (pmErr)\n throw mapError$7(pmErr);\n const { error: defErr } = await client.from(\"definitions\").update(stampRow).in(\"project_id\", projectIds).is(\"deleted_at\", null);\n if (defErr)\n throw mapError$7(defErr);\n }\n const { error: invErr } = await client.from(\"invites\").delete().eq(\"org_id\", id);\n if (invErr)\n throw mapError$7(invErr);\n const { error: cdErr } = await client.from(\"compute_server_org_defaults\").delete().eq(\"org_id\", id);\n if (cdErr)\n throw mapError$7(cdErr);\n const { error: shErr } = await client.from(\"compute_server_shares\").delete().eq(\"org_id\", id);\n if (shErr)\n throw mapError$7(shErr);\n const { error: csErr } = await client.from(\"compute_servers\").delete().eq(\"scope\", \"org\").eq(\"owner_org_id\", id);\n if (csErr)\n throw mapError$7(csErr);\n await this.events.emit({ type: \"org.deleted\", orgId: id, actorId: actorFrom(ctx) });\n }\n // ============================================================================\n // Org members\n // ============================================================================\n async listOrgMembers(ctx, orgId, opts) {\n const range = toRange(opts);\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"org_members\").select(\"*\", { count: \"exact\" }).eq(\"org_id\", orgId).is(\"deleted_at\", null).order(\"joined_at\", { ascending: (opts?.orderDir ?? \"desc\") === \"asc\" }).range(range.from, range.to);\n if (error)\n throw mapError$7(error);\n const items = (data ?? []).map(rowToOrgMember);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getOrgMember(ctx, orgId, userId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"org_members\").select(\"*\").eq(\"org_id\", orgId).eq(\"user_id\", userId).is(\"deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$7(error);\n return data ? rowToOrgMember(data) : null;\n }\n async findUserMembership(ctx, userId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"org_members\").select(\"*, org:orgs!inner(*)\").eq(\"user_id\", userId).is(\"deleted_at\", null).is(\"org.deleted_at\", null).order(\"joined_at\", { ascending: true }).limit(1).maybeSingle();\n if (error)\n throw mapError$7(error);\n if (!data)\n return null;\n const row = data;\n const orgRow = Array.isArray(row.org) ? row.org[0] : row.org;\n if (!orgRow)\n return null;\n const { org: _omit, ...memberRow } = row;\n return {\n org: rowToOrg(orgRow),\n member: rowToOrgMember(memberRow)\n };\n }\n async addOrgMember(ctx, member) {\n const row = {\n ...memberToRow(member),\n deleted_at: null\n };\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { error } = await this.clients.forRequest(ctx).from(\"org_members\").upsert(row, { onConflict: \"org_id,user_id\" });\n if (error)\n throw mapError$7(error);\n await this.events.emit({\n type: \"org_member.added\",\n orgId: member.orgId,\n userId: member.userId,\n actorId: actorFrom(ctx)\n });\n }\n async updateOrgMemberRole(ctx, orgId, userId, role) {\n const row = {\n role,\n permissions: [...DEFAULT_ORG_PERMISSIONS[role]]\n };\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { data, error } = await this.clients.forRequest(ctx).from(\"org_members\").update(row).eq(\"org_id\", orgId).eq(\"user_id\", userId).is(\"deleted_at\", null).select(\"user_id\");\n if (error)\n throw mapError$7(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Org member '${userId}' not found`, 404);\n await this.events.emit({\n type: \"org_member.role_changed\",\n orgId,\n userId,\n role,\n actorId: actorFrom(ctx)\n });\n }\n async updateOrgMemberPermissions(ctx, orgId, userId, permissions) {\n const row = { permissions: [...permissions] };\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { data, error } = await this.clients.forRequest(ctx).from(\"org_members\").update(row).eq(\"org_id\", orgId).eq(\"user_id\", userId).is(\"deleted_at\", null).select(\"user_id\");\n if (error)\n throw mapError$7(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Org member '${userId}' not found`, 404);\n await this.events.emit({\n type: \"org_member.permissions_changed\",\n orgId,\n userId,\n permissions: [...permissions],\n actorId: actorFrom(ctx)\n });\n }\n async removeOrgMember(ctx, orgId, userId) {\n const client = this.clients.forRequest(ctx);\n const stamp = auditSoftDelete(ctx, ctx.userId);\n const stampRow = stampToRow$1(stamp);\n const { data: orgProjects, error: projError } = await client.from(\"projects\").select(\"id\").eq(\"org_id\", orgId).is(\"deleted_at\", null);\n if (projError)\n throw mapError$7(projError);\n const projectIds = (orgProjects ?? []).map((p) => p.id);\n if (projectIds.length > 0) {\n const { error: pmError } = await client.from(\"project_members\").update(stampRow).in(\"project_id\", projectIds).eq(\"user_id\", userId).is(\"deleted_at\", null);\n if (pmError)\n throw mapError$7(pmError);\n }\n const { error } = await client.from(\"org_members\").update(stampRow).eq(\"org_id\", orgId).eq(\"user_id\", userId).is(\"deleted_at\", null);\n if (error)\n throw mapError$7(error);\n await this.events.emit({\n type: \"org_member.removed\",\n orgId,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n}\nfunction stampToRow$1(stamp) {\n const row = {\n deleted_at: stamp.deletedAt,\n updated_at: stamp.updatedAt\n };\n if (stamp.updatedBy)\n row.updated_by = stamp.updatedBy;\n return row;\n}\nfunction rowToOrg(row) {\n return {\n id: row.id,\n name: row.name,\n slug: row.slug,\n ownerId: row.owner_id,\n createdBy: row.created_by ?? row.owner_id,\n updatedBy: row.updated_by ?? row.owner_id,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n deletedAt: row.deleted_at ?? null\n };\n}\nfunction orgToRow(org) {\n return {\n id: org.id,\n name: org.name,\n slug: org.slug,\n owner_id: org.ownerId,\n created_by: org.createdBy,\n updated_by: org.updatedBy,\n created_at: org.createdAt,\n updated_at: org.updatedAt,\n deleted_at: org.deletedAt ?? null\n };\n}\nfunction rowToOrgMember(row) {\n return {\n orgId: row.org_id,\n userId: row.user_id,\n role: row.role,\n permissions: row.permissions ?? [],\n joinedAt: row.joined_at,\n updatedAt: row.updated_at ?? row.joined_at,\n updatedBy: row.updated_by ?? row.user_id,\n deletedAt: row.deleted_at ?? null\n };\n}\nfunction memberToRow(m) {\n return {\n org_id: m.orgId,\n user_id: m.userId,\n role: m.role,\n permissions: m.permissions ?? [],\n joined_at: m.joinedAt\n };\n}\nfunction mapError$7(e) {\n const pg = e;\n if (pg?.code === \"23505\") {\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n }\n if (pg?.code === \"23503\") {\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n }\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n const msg = obj.message ?? obj.details ?? obj.hint ?? \"Unknown Postgres error\";\n const err = new Error(obj.code ? `[${obj.code}] ${msg}` : msg);\n Object.assign(err, obj);\n return err;\n }\n return new Error(String(e));\n}\nclass SupabaseProjectStore {\n clients;\n events;\n constructor(clients, events = new NoopEventSink()) {\n this.clients = clients;\n this.events = events;\n }\n async listProjects(ctx, orgId, opts) {\n const range = toRange(opts);\n const direction = opts?.orderDir ?? \"desc\";\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"projects\").select(\"*\", { count: \"exact\" }).eq(\"org_id\", orgId).is(\"deleted_at\", null).order(orderColumn(opts?.orderBy), { ascending: direction === \"asc\" }).range(range.from, range.to);\n if (error)\n throw mapError$6(error);\n const items = (data ?? []).map(rowToProject);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getProject(ctx, id) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"projects\").select(\"*\").eq(\"id\", id).is(\"deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$6(error);\n return data ? rowToProject(data) : null;\n }\n async getProjectBySlug(ctx, orgId, slug) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"projects\").select(\"*\").eq(\"org_id\", orgId).eq(\"slug\", slug).is(\"deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$6(error);\n return data ? rowToProject(data) : null;\n }\n async createProject(ctx, project) {\n const client = this.clients.forRequest(ctx);\n const { error } = await client.from(\"projects\").insert(projectToRow(project));\n if (error)\n throw mapError$6(error);\n const { error: memberError } = await client.from(\"project_members\").upsert({\n project_id: project.id,\n user_id: project.ownerId,\n role: \"owner\",\n joined_at: (/* @__PURE__ */ new Date()).toISOString(),\n deleted_at: null\n }, { onConflict: \"project_id,user_id\" });\n if (memberError)\n throw mapError$6(memberError);\n await this.events.emit({\n type: \"project.created\",\n projectId: project.id,\n orgId: project.orgId,\n actorId: actorFrom(ctx)\n });\n }\n async updateProject(ctx, id, patch) {\n const row = {};\n if (patch.name !== void 0)\n row.name = patch.name;\n if (patch.slug !== void 0)\n row.slug = patch.slug;\n if (patch.description !== void 0)\n row.description = patch.description;\n if (patch.visibility !== void 0)\n row.visibility = patch.visibility;\n if (patch.autoJoinOnUpload !== void 0)\n row.auto_join_on_upload = patch.autoJoinOnUpload;\n if (Object.keys(row).length === 0)\n return;\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { data, error } = await this.clients.forRequest(ctx).from(\"projects\").update(row).eq(\"id\", id).is(\"deleted_at\", null).select(\"id\");\n if (error)\n throw mapError$6(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Project '${id}' not found`, 404);\n }\n async deleteProject(ctx, id) {\n const client = this.clients.forRequest(ctx);\n const stamp = auditSoftDelete(ctx, ctx.userId);\n const stampRow = stampToRow(stamp);\n const { data, error } = await client.from(\"projects\").update(stampRow).eq(\"id\", id).is(\"deleted_at\", null).select(\"id\");\n if (error)\n throw mapError$6(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Project '${id}' not found`, 404);\n const { error: pmErr } = await client.from(\"project_members\").update(stampRow).eq(\"project_id\", id).is(\"deleted_at\", null);\n if (pmErr)\n throw mapError$6(pmErr);\n const { error: defErr } = await client.from(\"definitions\").update(stampRow).eq(\"project_id\", id).is(\"deleted_at\", null);\n if (defErr)\n throw mapError$6(defErr);\n await this.events.emit({ type: \"project.deleted\", projectId: id, actorId: actorFrom(ctx) });\n }\n // ============================================================================\n // Project members\n // ============================================================================\n async listProjectMembers(ctx, projectId, opts) {\n const range = toRange(opts);\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"project_members\").select(\"*\", { count: \"exact\" }).eq(\"project_id\", projectId).is(\"deleted_at\", null).order(\"joined_at\", { ascending: (opts?.orderDir ?? \"desc\") === \"asc\" }).range(range.from, range.to);\n if (error)\n throw mapError$6(error);\n const items = (data ?? []).map(rowToProjectMember);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getProjectMember(ctx, projectId, userId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"project_members\").select(\"*\").eq(\"project_id\", projectId).eq(\"user_id\", userId).is(\"deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$6(error);\n return data ? rowToProjectMember(data) : null;\n }\n async addProjectMember(ctx, member) {\n const row = {\n ...projectMemberToRow(member),\n deleted_at: null\n };\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { error } = await this.clients.forRequest(ctx).from(\"project_members\").upsert(row, { onConflict: \"project_id,user_id\" });\n if (error)\n throw mapError$6(error);\n await this.events.emit({\n type: \"project_member.added\",\n projectId: member.projectId,\n userId: member.userId,\n actorId: actorFrom(ctx)\n });\n }\n async updateProjectMemberRole(ctx, projectId, userId, role) {\n const row = { role };\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { data, error } = await this.clients.forRequest(ctx).from(\"project_members\").update(row).eq(\"project_id\", projectId).eq(\"user_id\", userId).is(\"deleted_at\", null).select(\"user_id\");\n if (error)\n throw mapError$6(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Project member '${userId}' not found`, 404);\n await this.events.emit({\n type: \"project_member.role_changed\",\n projectId,\n userId,\n role,\n actorId: actorFrom(ctx)\n });\n }\n async removeProjectMember(ctx, projectId, userId) {\n const stamp = auditSoftDelete(ctx, ctx.userId);\n const { error } = await this.clients.forRequest(ctx).from(\"project_members\").update(stampToRow(stamp)).eq(\"project_id\", projectId).eq(\"user_id\", userId).is(\"deleted_at\", null);\n if (error)\n throw mapError$6(error);\n await this.events.emit({\n type: \"project_member.removed\",\n projectId,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n}\nfunction rowToProject(row) {\n return {\n id: row.id,\n orgId: row.org_id,\n name: row.name,\n slug: row.slug,\n description: row.description ?? void 0,\n visibility: row.visibility,\n ownerId: row.owner_id,\n createdBy: row.created_by ?? row.owner_id,\n updatedBy: row.updated_by ?? row.owner_id,\n autoJoinOnUpload: row.auto_join_on_upload ?? false,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n deletedAt: row.deleted_at ?? null\n };\n}\nfunction projectToRow(p) {\n return {\n id: p.id,\n org_id: p.orgId,\n name: p.name,\n slug: p.slug,\n description: p.description ?? null,\n visibility: p.visibility,\n owner_id: p.ownerId,\n created_by: p.createdBy,\n updated_by: p.updatedBy,\n auto_join_on_upload: p.autoJoinOnUpload,\n created_at: p.createdAt,\n updated_at: p.updatedAt,\n deleted_at: p.deletedAt ?? null\n };\n}\nfunction rowToProjectMember(row) {\n return {\n projectId: row.project_id,\n userId: row.user_id,\n role: row.role,\n joinedAt: row.joined_at,\n updatedAt: row.updated_at ?? row.joined_at,\n updatedBy: row.updated_by ?? row.user_id,\n deletedAt: row.deleted_at ?? null\n };\n}\nfunction projectMemberToRow(m) {\n return {\n project_id: m.projectId,\n user_id: m.userId,\n role: m.role,\n joined_at: m.joinedAt\n };\n}\nfunction stampToRow(stamp) {\n const row = {\n deleted_at: stamp.deletedAt,\n updated_at: stamp.updatedAt\n };\n if (stamp.updatedBy)\n row.updated_by = stamp.updatedBy;\n return row;\n}\nfunction mapError$6(e) {\n const pg = e;\n if (pg?.code === \"23505\")\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\")\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n const msg = obj.message ?? obj.details ?? obj.hint ?? \"Unknown Postgres error\";\n const err = new Error(obj.code ? `[${obj.code}] ${msg}` : msg);\n Object.assign(err, obj);\n return err;\n }\n return new Error(String(e));\n}\nclass SupabaseDefinitionStore {\n clients;\n events;\n constructor(clients, events = new NoopEventSink()) {\n this.clients = clients;\n this.events = events;\n }\n // ============================================================================\n // Definitions\n // ============================================================================\n async list(ctx, opts) {\n return this.runList(ctx, void 0, opts);\n }\n async listByProject(ctx, projectId, opts) {\n return this.runList(ctx, { projectId }, opts);\n }\n async listPublic(ctx, opts) {\n return this.runList(ctx, { publicOnly: true, orgId: opts?.orgId }, opts);\n }\n async runList(ctx, filter, opts) {\n const range = toRange(opts);\n const direction = opts?.orderDir ?? \"desc\";\n let query = this.clients.forRequest(ctx).from(\"definitions\").select(\"*\", { count: \"exact\" }).is(\"deleted_at\", null);\n if (filter?.projectId)\n query = query.eq(\"project_id\", filter.projectId);\n if (filter?.publicOnly) {\n query = this.clients.forRequest(ctx).from(\"definitions\").select(\"*, project:projects!inner(visibility, org_id)\", {\n count: \"exact\"\n }).is(\"deleted_at\", null).eq(\"project.visibility\", \"public\");\n if (filter.orgId)\n query = query.eq(\"project.org_id\", filter.orgId);\n if (filter.projectId)\n query = query.eq(\"project_id\", filter.projectId);\n }\n if (opts?.statuses?.length) {\n query = query.in(\"status\", opts.statuses);\n } else {\n const excluded = [];\n if (!opts?.includePending)\n excluded.push(\"pending\");\n if (!opts?.includeArchived)\n excluded.push(\"archived\");\n if (excluded.length) {\n query = query.not(\"status\", \"in\", `(${excluded.join(\",\")})`);\n }\n }\n query = query.order(definitionOrderColumn(opts?.orderBy), { ascending: direction === \"asc\" }).range(range.from, range.to);\n const { data, error, count } = await query;\n if (error)\n throw mapError$5(error);\n const items = (data ?? []).map(rowToRecord);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async get(ctx, guid) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"definitions\").select(\"*\").eq(\"guid\", guid).is(\"deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$5(error);\n return data ? rowToRecord(data) : null;\n }\n async create(ctx, record) {\n const { error } = await this.clients.forRequest(ctx).from(\"definitions\").insert(recordToRow(record));\n if (error)\n throw mapError$5(error);\n await this.events.emit({\n type: \"definition.created\",\n definitionId: record.guid,\n projectId: record.projectId,\n actorId: actorFrom(ctx)\n });\n }\n async update(ctx, guid, patch) {\n const row = patchToRow(patch);\n if (Object.keys(row).length === 0)\n return;\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { data, error } = await this.clients.forRequest(ctx).from(\"definitions\").update(row).eq(\"guid\", guid).is(\"deleted_at\", null).select(\"guid\");\n if (error)\n throw mapError$5(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Definition '${guid}' not found`, 404);\n }\n async delete(ctx, guid) {\n const stamp = auditSoftDelete(ctx, ctx.userId);\n const row = {\n deleted_at: stamp.deletedAt,\n updated_at: stamp.updatedAt\n };\n if (stamp.updatedBy)\n row.updated_by = stamp.updatedBy;\n const { error } = await this.clients.forRequest(ctx).from(\"definitions\").update(row).eq(\"guid\", guid).is(\"deleted_at\", null);\n if (error)\n throw mapError$5(error);\n await this.events.emit({\n type: \"definition.deleted\",\n definitionId: guid,\n actorId: actorFrom(ctx)\n });\n }\n async incrementSolveCount(ctx, guid) {\n const { error } = await this.clients.forRequest(ctx).rpc(\"increment_run_count\", { g: guid });\n if (error)\n throw mapError$5(error);\n }\n // ============================================================================\n // Versions (spec §6)\n // ============================================================================\n async createVersion(ctx, version) {\n const { error } = await this.clients.forRequest(ctx).from(\"definition_versions\").insert(versionToRow(version));\n if (error)\n throw mapError$5(error);\n await this.events.emit({\n type: \"definition_version.created\",\n versionId: version.id,\n definitionId: version.definitionId,\n actorId: actorFrom(ctx)\n });\n }\n async listVersions(ctx, definitionId, opts) {\n const range = toRange(opts);\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"definition_versions\").select(\"*\", { count: \"exact\" }).eq(\"definition_guid\", definitionId).order(\"version_number\", { ascending: false }).range(range.from, range.to);\n if (error)\n throw mapError$5(error);\n const items = (data ?? []).map(rowToVersion);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getVersion(ctx, versionId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"definition_versions\").select(\"*\").eq(\"id\", versionId).maybeSingle();\n if (error)\n throw mapError$5(error);\n return data ? rowToVersion(data) : null;\n }\n async deleteVersion(ctx, versionId) {\n const { error } = await this.clients.forRequest(ctx).from(\"definition_versions\").delete().eq(\"id\", versionId);\n if (error)\n throw mapError$5(error);\n await this.events.emit({\n type: \"definition_version.deleted\",\n versionId,\n actorId: actorFrom(ctx)\n });\n }\n async setLiveVersion(ctx, definitionId, versionId) {\n await this.repointChannel(ctx, definitionId, versionId, \"live_version_id\");\n await this.events.emit({\n type: \"definition.published\",\n definitionId,\n versionId,\n actorId: actorFrom(ctx)\n });\n }\n async setDraftVersion(ctx, definitionId, versionId) {\n await this.repointChannel(ctx, definitionId, versionId, \"draft_version_id\");\n }\n async attachInitialVersion(ctx, definitionId, versionId) {\n const client = this.clients.forRequest(ctx);\n const { data: version, error: vError } = await client.from(\"definition_versions\").select(\"id, definition_guid\").eq(\"id\", versionId).maybeSingle();\n if (vError)\n throw mapError$5(vError);\n if (!version || version.definition_guid !== definitionId) {\n throw new ProviderError(`Version '${versionId}' not found for this definition`, 404);\n }\n const row = {\n live_version_id: versionId,\n draft_version_id: versionId,\n status: \"draft\"\n };\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { data, error } = await client.from(\"definitions\").update(row).eq(\"guid\", definitionId).is(\"deleted_at\", null).select(\"guid\");\n if (error)\n throw mapError$5(error);\n if (!data || data.length === 0) {\n throw new ProviderError(`Definition '${definitionId}' not found`, 404);\n }\n }\n async repointChannel(ctx, definitionId, versionId, column) {\n const client = this.clients.forRequest(ctx);\n const { data: version, error: vError } = await client.from(\"definition_versions\").select(\"id, definition_guid\").eq(\"id\", versionId).maybeSingle();\n if (vError)\n throw mapError$5(vError);\n if (!version || version.definition_guid !== definitionId) {\n throw new ProviderError(`Version '${versionId}' not found for this definition`, 404);\n }\n const row = { [column]: versionId };\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { data, error } = await client.from(\"definitions\").update(row).eq(\"guid\", definitionId).is(\"deleted_at\", null).select(\"guid\");\n if (error)\n throw mapError$5(error);\n if (!data || data.length === 0) {\n throw new ProviderError(`Definition '${definitionId}' not found`, 404);\n }\n }\n}\nfunction rowToRecord(row) {\n return {\n guid: row.guid,\n projectId: row.project_id,\n ownerId: row.owner_id,\n createdBy: row.created_by ?? row.owner_id,\n updatedBy: row.updated_by ?? row.owner_id,\n liveVersionId: row.live_version_id,\n draftVersionId: row.draft_version_id,\n computeServerId: row.compute_server_id ?? void 0,\n displayName: row.display_name,\n description: row.description ?? void 0,\n category: row.category ?? void 0,\n tags: row.tags ?? void 0,\n coverImage: row.cover_image ?? void 0,\n status: row.status,\n solveCount: typeof row.run_count === \"string\" ? Number(row.run_count) : row.run_count,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n deletedAt: row.deleted_at ?? null\n };\n}\nfunction recordToRow(r) {\n const row = {\n guid: r.guid,\n project_id: r.projectId,\n owner_id: r.ownerId,\n created_by: r.createdBy,\n updated_by: r.updatedBy,\n live_version_id: r.liveVersionId,\n draft_version_id: r.draftVersionId,\n compute_server_id: r.computeServerId ?? null,\n display_name: r.displayName,\n description: r.description ?? null,\n category: r.category ?? null,\n cover_image: r.coverImage ?? null,\n status: r.status,\n run_count: r.solveCount,\n created_at: r.createdAt,\n updated_at: r.updatedAt,\n deleted_at: r.deletedAt ?? null\n };\n if (r.tags !== void 0)\n row.tags = r.tags;\n return row;\n}\nfunction patchToRow(patch) {\n const row = {};\n if (patch.displayName !== void 0)\n row.display_name = patch.displayName;\n if (patch.description !== void 0)\n row.description = patch.description;\n if (patch.category !== void 0)\n row.category = patch.category;\n if (patch.tags !== void 0)\n row.tags = patch.tags;\n if (patch.coverImage !== void 0)\n row.cover_image = patch.coverImage;\n if (patch.projectId !== void 0)\n row.project_id = patch.projectId;\n if (patch.computeServerId !== void 0)\n row.compute_server_id = patch.computeServerId;\n if (patch.status !== void 0)\n row.status = patch.status;\n if (patch.ownerId !== void 0)\n row.owner_id = patch.ownerId;\n return row;\n}\nfunction rowToVersion(row) {\n return {\n id: row.id,\n definitionId: row.definition_guid,\n versionNumber: row.version_number,\n fileExt: row.file_ext,\n fileKey: row.file_key,\n originalFilename: row.original_filename ?? void 0,\n uploadedBy: row.uploaded_by,\n uploadedAt: row.uploaded_at,\n changeNote: row.change_note ?? void 0\n };\n}\nfunction versionToRow(v) {\n const row = {\n id: v.id,\n definition_guid: v.definitionId,\n version_number: v.versionNumber,\n file_ext: v.fileExt,\n file_key: v.fileKey,\n original_filename: v.originalFilename ?? null,\n uploaded_by: v.uploadedBy,\n uploaded_at: v.uploadedAt\n };\n if (v.changeNote !== void 0)\n row.change_note = v.changeNote;\n return row;\n}\nfunction definitionOrderColumn(orderBy) {\n switch (orderBy) {\n case \"name\":\n return \"display_name\";\n case \"solveCount\":\n return \"run_count\";\n case \"updatedAt\":\n return \"updated_at\";\n case \"createdAt\":\n default:\n return \"created_at\";\n }\n}\nfunction mapError$5(e) {\n const pg = e;\n if (pg?.code === \"23505\")\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\")\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n const msg = obj.message ?? obj.details ?? obj.hint ?? \"Unknown Postgres error\";\n const err = new Error(obj.code ? `[${obj.code}] ${msg}` : msg);\n Object.assign(err, obj);\n return err;\n }\n return new Error(String(e));\n}\nclass SupabaseInviteStore {\n clients;\n events;\n constructor(clients, events = new NoopEventSink()) {\n this.clients = clients;\n this.events = events;\n }\n async create(ctx, invite) {\n const { error } = await this.clients.forRequest(ctx).from(\"invites\").insert(inviteToRow(invite));\n if (error)\n throw mapError$4(error);\n await this.events.emit({\n type: \"invite.created\",\n inviteId: invite.id,\n orgId: invite.orgId,\n email: invite.email,\n actorId: actorFrom(ctx)\n });\n }\n async getByTokenHash(ctx, tokenHash) {\n const { data, error } = await this.clients.forRequest(ctx).rpc(\"get_invite_by_token_hash\", { h: tokenHash });\n if (error)\n throw mapError$4(error);\n const row = Array.isArray(data) ? data[0] : data;\n return row ? rowToInvite(row) : null;\n }\n async listByOrg(ctx, orgId, opts) {\n const range = toRange(opts);\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"invites\").select(\"*\", { count: \"exact\" }).eq(\"org_id\", orgId).order(\"created_at\", { ascending: (opts?.orderDir ?? \"desc\") === \"asc\" }).range(range.from, range.to);\n if (error)\n throw mapError$4(error);\n const items = (data ?? []).map(rowToInvite);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async markAccepted(ctx, id, userId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"invites\").update({ accepted_at: (/* @__PURE__ */ new Date()).toISOString(), accepted_by_user_id: userId }).eq(\"id\", id).is(\"accepted_at\", null).select(\"org_id\");\n if (error)\n throw mapError$4(error);\n const row = data?.[0];\n if (!row)\n return;\n await this.events.emit({\n type: \"invite.accepted\",\n inviteId: id,\n orgId: row.org_id,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n async revoke(ctx, id) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"invites\").delete().eq(\"id\", id).is(\"accepted_at\", null).select(\"org_id\");\n if (error)\n throw mapError$4(error);\n const row = data?.[0];\n if (!row)\n return;\n await this.events.emit({\n type: \"invite.revoked\",\n inviteId: id,\n orgId: row.org_id,\n actorId: actorFrom(ctx)\n });\n }\n async deleteByOrg(ctx, orgId) {\n const { error } = await this.clients.forRequest(ctx).from(\"invites\").delete().eq(\"org_id\", orgId);\n if (error)\n throw mapError$4(error);\n }\n}\nfunction rowToInvite(row) {\n return {\n id: row.id,\n tokenHash: row.token_hash,\n email: row.email,\n orgId: row.org_id,\n orgRole: row.org_role,\n orgPermissions: row.org_permissions,\n invitedBy: row.invited_by,\n createdAt: row.created_at,\n expiresAt: row.expires_at,\n acceptedAt: row.accepted_at ?? void 0,\n acceptedByUserId: row.accepted_by_user_id ?? void 0\n };\n}\nfunction inviteToRow(i) {\n return {\n id: i.id,\n token_hash: i.tokenHash,\n email: i.email,\n org_id: i.orgId,\n org_role: i.orgRole,\n org_permissions: i.orgPermissions,\n invited_by: i.invitedBy,\n created_at: i.createdAt,\n expires_at: i.expiresAt,\n accepted_at: i.acceptedAt ?? null,\n accepted_by_user_id: i.acceptedByUserId ?? null\n };\n}\nfunction mapError$4(e) {\n const pg = e;\n if (pg?.code === \"23505\")\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\")\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n return new Error(obj.code ? `[${obj.code}] ${obj.message ?? \"\"}` : obj.message ?? String(e));\n }\n return new Error(String(e));\n}\nclass SupabaseComputeServerStore {\n clients;\n constructor(clients) {\n this.clients = clients;\n }\n async getConfig(ctx) {\n const client = this.clients.forRequest(ctx);\n const [serversRes, sharesRes, orgDefRes, platDefRes] = await Promise.all([\n client.from(\"compute_servers\").select(\"*\"),\n client.from(\"compute_server_shares\").select(\"*\"),\n client.from(\"compute_server_org_defaults\").select(\"*\"),\n client.from(\"compute_server_platform_default\").select(\"default_server_id\").eq(\"singleton\", true).maybeSingle()\n ]);\n if (serversRes.error)\n throw mapError$3(serversRes.error);\n if (sharesRes.error)\n throw mapError$3(sharesRes.error);\n if (orgDefRes.error)\n throw mapError$3(orgDefRes.error);\n if (platDefRes.error)\n throw mapError$3(platDefRes.error);\n const sharedByServer = /* @__PURE__ */ new Map();\n for (const row of sharesRes.data ?? []) {\n const list = sharedByServer.get(row.server_id) ?? [];\n list.push(row.org_id);\n sharedByServer.set(row.server_id, list);\n }\n const servers = (serversRes.data ?? []).map((row) => rowToServer(row, sharedByServer));\n const orgDefaults = {};\n for (const row of orgDefRes.data ?? []) {\n if (row.default_server_id)\n orgDefaults[row.org_id] = row.default_server_id;\n }\n return {\n servers,\n defaultServerId: platDefRes.data?.default_server_id ?? void 0,\n orgDefaults\n };\n }\n async savePlatformServers(ctx, servers, defaultServerId) {\n const client = this.clients.forRequest(ctx);\n const platformOnly = servers.filter(isPlatformServer);\n const { error: delErr } = await client.from(\"compute_servers\").delete().eq(\"scope\", \"platform\");\n if (delErr)\n throw mapError$3(delErr);\n if (platformOnly.length > 0) {\n const { error: insErr } = await client.from(\"compute_servers\").insert(platformOnly.map(serverToRow));\n if (insErr)\n throw mapError$3(insErr);\n const shareRows = platformOnly.flatMap((s) => s.sharedWith === \"all\" ? [] : s.sharedWith.map((orgId) => ({ server_id: s.id, org_id: orgId })));\n if (shareRows.length > 0) {\n const { error: shErr } = await client.from(\"compute_server_shares\").insert(shareRows);\n if (shErr)\n throw mapError$3(shErr);\n }\n }\n const { error: defErr } = await client.from(\"compute_server_platform_default\").update({ default_server_id: defaultServerId ?? null }).eq(\"singleton\", true);\n if (defErr)\n throw mapError$3(defErr);\n }\n async saveOrgServers(ctx, orgId, servers, defaultServerId) {\n const client = this.clients.forRequest(ctx);\n const orgOnly = servers.filter(isOrgServer).map((s) => ({ ...s, ownerOrgId: orgId }));\n const { error: delErr } = await client.from(\"compute_servers\").delete().eq(\"scope\", \"org\").eq(\"owner_org_id\", orgId);\n if (delErr)\n throw mapError$3(delErr);\n if (orgOnly.length > 0) {\n const { error: insErr } = await client.from(\"compute_servers\").insert(orgOnly.map(serverToRow));\n if (insErr)\n throw mapError$3(insErr);\n }\n if (defaultServerId === null) {\n const { error } = await client.from(\"compute_server_org_defaults\").delete().eq(\"org_id\", orgId);\n if (error)\n throw mapError$3(error);\n } else if (typeof defaultServerId === \"string\") {\n const { error } = await client.from(\"compute_server_org_defaults\").upsert({ org_id: orgId, default_server_id: defaultServerId });\n if (error)\n throw mapError$3(error);\n }\n }\n async setOrgDefault(ctx, orgId, serverId) {\n const client = this.clients.forRequest(ctx);\n if (serverId === null) {\n const { error: error2 } = await client.from(\"compute_server_org_defaults\").delete().eq(\"org_id\", orgId);\n if (error2)\n throw mapError$3(error2);\n return;\n }\n const { error } = await client.from(\"compute_server_org_defaults\").upsert({ org_id: orgId, default_server_id: serverId });\n if (error)\n throw mapError$3(error);\n }\n async deleteByOrg(ctx, orgId) {\n const client = this.clients.forRequest(ctx);\n const { error: defErr } = await client.from(\"compute_server_org_defaults\").delete().eq(\"org_id\", orgId);\n if (defErr)\n throw mapError$3(defErr);\n const { error: srvErr } = await client.from(\"compute_servers\").delete().eq(\"scope\", \"org\").eq(\"owner_org_id\", orgId);\n if (srvErr)\n throw mapError$3(srvErr);\n const { error: shErr } = await client.from(\"compute_server_shares\").delete().eq(\"org_id\", orgId);\n if (shErr)\n throw mapError$3(shErr);\n }\n}\nfunction rowToServer(row, sharedByServer) {\n const common = {\n id: row.id,\n label: row.label,\n serverUrl: row.server_url,\n apiKey: row.api_key ?? void 0,\n timeoutMs: row.timeout_ms ?? void 0,\n retryCount: row.retry_count ?? void 0\n };\n if (row.scope === \"platform\") {\n return {\n ...common,\n scope: \"platform\",\n sharedWith: row.shared_with_all ? \"all\" : sharedByServer.get(row.id) ?? []\n };\n }\n if (!row.owner_org_id) {\n throw new Error(`compute_servers row ${row.id} has scope='org' but null owner_org_id`);\n }\n return { ...common, scope: \"org\", ownerOrgId: row.owner_org_id };\n}\nfunction serverToRow(s) {\n const base = {\n id: s.id,\n label: s.label,\n server_url: s.serverUrl,\n api_key: s.apiKey ?? null,\n timeout_ms: s.timeoutMs ?? null,\n retry_count: s.retryCount ?? null\n };\n if (isPlatformServer(s)) {\n return {\n ...base,\n scope: \"platform\",\n owner_org_id: null,\n shared_with_all: s.sharedWith === \"all\"\n };\n }\n return {\n ...base,\n scope: \"org\",\n owner_org_id: s.ownerOrgId,\n shared_with_all: false\n };\n}\nfunction mapError$3(e) {\n const pg = e;\n if (pg?.code === \"23505\")\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\")\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n return new Error(obj.code ? `[${obj.code}] ${obj.message ?? \"\"}` : obj.message ?? String(e));\n }\n return new Error(String(e));\n}\nclass SupabaseShareLinkStore {\n clients;\n events;\n constructor(clients, events = new NoopEventSink()) {\n this.clients = clients;\n this.events = events;\n }\n async create(ctx, link) {\n const { error } = await this.clients.forRequest(ctx).from(\"share_links\").insert(linkToRow(link));\n if (error)\n throw mapError$2(error);\n await this.events.emit({\n type: \"share_link.minted\",\n linkId: link.id,\n definitionId: link.definitionId,\n actorId: actorFrom(ctx)\n });\n }\n async listByDefinition(ctx, definitionId, opts) {\n const range = toRange(opts);\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"share_links\").select(\"*\", { count: \"exact\" }).eq(\"definition_guid\", definitionId).is(\"revoked_at\", null).order(\"created_at\", { ascending: false }).range(range.from, range.to);\n if (error)\n throw mapError$2(error);\n const items = (data ?? []).map(rowToLink);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getById(ctx, id) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"share_links\").select(\"*\").eq(\"id\", id).maybeSingle();\n if (error)\n throw mapError$2(error);\n return data ? rowToLink(data) : null;\n }\n async getByTokenHash(_ctx, tokenHash) {\n const { data, error } = await this.clients.serviceClient.from(\"share_links\").select(\"*, definitions!inner(deleted_at)\").eq(\"token_hash\", tokenHash).is(\"revoked_at\", null).is(\"definitions.deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$2(error);\n return data ? rowToLink(data) : null;\n }\n async revoke(ctx, id) {\n const { error } = await this.clients.forRequest(ctx).from(\"share_links\").update({ revoked_at: (/* @__PURE__ */ new Date()).toISOString() }).eq(\"id\", id).is(\"revoked_at\", null);\n if (error)\n throw mapError$2(error);\n await this.events.emit({ type: \"share_link.revoked\", linkId: id, actorId: actorFrom(ctx) });\n }\n async tryIncrementSolveCount(_ctx, id) {\n const { data, error } = await this.clients.serviceClient.rpc(\"try_increment_share_link_solve_count\", { link_id: id });\n if (error)\n throw mapError$2(error);\n return typeof data === \"number\" ? data : null;\n }\n}\nfunction rowToLink(row) {\n return {\n id: row.id,\n definitionId: row.definition_guid,\n channel: row.channel,\n tokenHash: row.token_hash,\n name: row.name ?? void 0,\n createdBy: row.created_by,\n createdAt: row.created_at,\n expiresAt: row.expires_at,\n revokedAt: row.revoked_at,\n allowSolve: row.allow_solve,\n maxSolves: row.max_solves,\n solveCount: row.solve_count\n };\n}\nfunction linkToRow(l) {\n return {\n id: l.id,\n definition_guid: l.definitionId,\n channel: l.channel,\n token_hash: l.tokenHash,\n name: l.name ?? null,\n created_by: l.createdBy,\n created_at: l.createdAt,\n expires_at: l.expiresAt ?? null,\n revoked_at: l.revokedAt ?? null,\n allow_solve: l.allowSolve,\n max_solves: l.maxSolves ?? null,\n solve_count: l.solveCount\n };\n}\nfunction mapError$2(e) {\n const pg = e;\n if (pg?.code === \"23505\")\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\")\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n const msg = obj.message ?? obj.details ?? obj.hint ?? \"Unknown Postgres error\";\n const err = new Error(obj.code ? `[${obj.code}] ${msg}` : msg);\n Object.assign(err, obj);\n return err;\n }\n return new Error(String(e));\n}\nfunction buildClientBundle(opts) {\n const serviceClient = createClient(opts.supabaseUrl, opts.serviceRoleKey, {\n auth: { persistSession: false, autoRefreshToken: false }\n });\n const anonClient = createClient(opts.supabaseUrl, opts.anonKey, {\n auth: { persistSession: false, autoRefreshToken: false }\n });\n const perRequestCache = /* @__PURE__ */ new WeakMap();\n return {\n serviceClient,\n forRequest(ctx) {\n if (ctx.system)\n return serviceClient;\n const token = extractSessionToken(ctx.adapterContext);\n if (!token)\n return anonClient;\n const cached = perRequestCache.get(ctx);\n if (cached)\n return cached;\n const client = createClient(opts.supabaseUrl, opts.anonKey, {\n auth: { persistSession: false, autoRefreshToken: false },\n global: {\n headers: { Authorization: `Bearer ${token}` }\n }\n });\n perRequestCache.set(ctx, client);\n return client;\n }\n };\n}\nfunction extractSessionToken(adapterContext) {\n if (!adapterContext || typeof adapterContext !== \"object\")\n return void 0;\n const maybe = adapterContext.sessionToken;\n return typeof maybe === \"string\" && maybe.length > 0 ? maybe : void 0;\n}\nclass SupabaseEventSink {\n clients;\n constructor(clients) {\n this.clients = clients;\n }\n async emit(event) {\n try {\n const { error } = await this.clients.serviceClient.from(\"audit_events\").insert({\n type: event.type,\n actor_id: event.actorId,\n data: event\n });\n if (error) {\n console.error(\"[SupabaseEventSink] insert failed:\", error.message, { event });\n }\n } catch (err) {\n console.error(\"[SupabaseEventSink] unexpected error:\", err, { event });\n }\n }\n}\nconst MAX_LIMIT = 200;\nconst DEFAULT_LIMIT = 100;\nconst ISO_RE = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:?\\d{2})$/;\nconst UUID_RE = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\nclass SupabaseAuditQuery {\n clients;\n constructor(clients) {\n this.clients = clients;\n }\n async list(_ctx, filters) {\n const limit = clampLimit(filters.limit);\n let q = this.clients.serviceClient.from(\"audit_events\").select(\"id, type, actor_id, occurred_at, data\").order(\"occurred_at\", { ascending: false }).order(\"id\", { ascending: false }).limit(limit + 1);\n if (filters.types && filters.types.length > 0) {\n q = q.in(\"type\", [...filters.types]);\n }\n if (filters.actorId) {\n q = q.eq(\"actor_id\", filters.actorId);\n }\n if (filters.sinceIso) {\n q = q.gte(\"occurred_at\", filters.sinceIso);\n }\n if (filters.untilIso) {\n q = q.lte(\"occurred_at\", filters.untilIso);\n }\n if (filters.cursor) {\n const ts = filters.cursor.occurredAt;\n const id = filters.cursor.id;\n if (!ISO_RE.test(ts) || !UUID_RE.test(id)) {\n throw new Error(\"audit_events query: malformed cursor\");\n }\n q = q.or(`occurred_at.lt.${ts},and(occurred_at.eq.${ts},id.lt.${id})`);\n }\n const { data, error } = await q;\n if (error) {\n throw new Error(`audit_events query failed: ${error.message}`);\n }\n const fetched = data ?? [];\n const hasMore = fetched.length > limit;\n const page = hasMore ? fetched.slice(0, limit) : fetched;\n const last = page[page.length - 1];\n return {\n rows: page.map((r) => ({\n id: r.id,\n type: r.type,\n actorId: r.actor_id,\n occurredAt: r.occurred_at,\n data: r.data\n })),\n nextCursor: hasMore && last ? { occurredAt: last.occurred_at, id: last.id } : null\n };\n }\n}\nfunction clampLimit(requested) {\n if (!requested || requested <= 0)\n return DEFAULT_LIMIT;\n if (requested > MAX_LIMIT)\n return MAX_LIMIT;\n return Math.floor(requested);\n}\nconst MAX_RECENT_RUNS = 20;\nclass SupabaseUserProfileProvider {\n clients;\n constructor(clients) {\n this.clients = clients;\n }\n client() {\n return this.clients.serviceClient;\n }\n async getProfile(ctx, userId) {\n assertCanAccess(ctx, userId);\n const { data, error } = await this.client().from(\"user_profiles\").select(\"user_id, display_name, starred_definitions, recent_runs\").eq(\"user_id\", userId).maybeSingle();\n if (error)\n throw mapError$1(error);\n return data ? rowToProfile(data) : null;\n }\n async getProfiles(_ctx, userIds) {\n if (userIds.length === 0)\n return [];\n const { data, error } = await this.client().from(\"user_profiles\").select(\"user_id, display_name, starred_definitions, recent_runs\").in(\"user_id\", [...userIds]);\n if (error)\n throw mapError$1(error);\n return (data ?? []).map(rowToProfile);\n }\n async updateProfile(ctx, userId, patch) {\n assertCanAccess(ctx, userId);\n const row = {};\n if (patch.displayName !== void 0)\n row.display_name = patch.displayName;\n if (Object.keys(row).length === 0)\n return \"ok\";\n const { data, error } = await this.client().from(\"user_profiles\").update(row).eq(\"user_id\", userId).select(\"user_id\");\n if (error)\n throw mapError$1(error);\n return data && data.length > 0 ? \"ok\" : \"not_found\";\n }\n async starDefinition(ctx, userId, definitionId) {\n assertCanAccess(ctx, userId);\n const existing = await this.getProfile(ctx, userId);\n if (!existing)\n return \"not_found\";\n if (existing.starredDefinitions.includes(definitionId))\n return \"ok\";\n const next = [...existing.starredDefinitions, definitionId];\n const { data, error } = await this.client().from(\"user_profiles\").update({ starred_definitions: next }).eq(\"user_id\", userId).select(\"user_id\");\n if (error)\n throw mapError$1(error);\n return data && data.length > 0 ? \"ok\" : \"not_found\";\n }\n async unstarDefinition(ctx, userId, definitionId) {\n assertCanAccess(ctx, userId);\n const existing = await this.getProfile(ctx, userId);\n if (!existing)\n return \"not_found\";\n if (!existing.starredDefinitions.includes(definitionId))\n return \"ok\";\n const next = existing.starredDefinitions.filter((id) => id !== definitionId);\n const { data, error } = await this.client().from(\"user_profiles\").update({ starred_definitions: next }).eq(\"user_id\", userId).select(\"user_id\");\n if (error)\n throw mapError$1(error);\n return data && data.length > 0 ? \"ok\" : \"not_found\";\n }\n async recordRun(ctx, userId, run) {\n assertCanAccess(ctx, userId);\n const existing = await this.getProfile(ctx, userId);\n if (!existing)\n return \"not_found\";\n const filtered = existing.recentRuns.filter((r) => r.definitionId !== run.definitionId);\n const next = [run, ...filtered].slice(0, MAX_RECENT_RUNS);\n const { data, error } = await this.client().from(\"user_profiles\").update({ recent_runs: next }).eq(\"user_id\", userId).select(\"user_id\");\n if (error)\n throw mapError$1(error);\n return data && data.length > 0 ? \"ok\" : \"not_found\";\n }\n}\nfunction assertCanAccess(ctx, userId) {\n if (ctx.system)\n return;\n if (ctx.userId === userId)\n return;\n if (hasPermission(ctx, \"instance_admin\"))\n return;\n throw new ProviderError(\"Forbidden: cannot access another user’s profile\", 403);\n}\nfunction rowToProfile(row) {\n return {\n userId: row.user_id,\n displayName: row.display_name ?? void 0,\n starredDefinitions: row.starred_definitions ?? [],\n recentRuns: row.recent_runs ?? []\n };\n}\nfunction mapError$1(e) {\n const pg = e;\n if (pg?.code === \"23505\")\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\")\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n return new Error(obj.code ? `[${obj.code}] ${obj.message ?? \"\"}` : obj.message ?? String(e));\n }\n return new Error(String(e));\n}\nclass SupabasePlatformPermissionStore {\n clients;\n constructor(clients) {\n this.clients = clients;\n }\n client() {\n return this.clients.serviceClient;\n }\n async getFor(ctx, userId) {\n assertCanRead(ctx, userId);\n const { data, error } = await this.client().from(\"user_profiles\").select(\"platform_permissions\").eq(\"user_id\", userId).maybeSingle();\n if (error)\n throw mapError(error);\n return filterValid(data?.platform_permissions ?? []);\n }\n async getForBatch(ctx, userIds) {\n assertAdmin(ctx);\n const out = /* @__PURE__ */ new Map();\n if (userIds.length === 0)\n return out;\n const { data, error } = await this.client().from(\"user_profiles\").select(\"user_id, platform_permissions\").in(\"user_id\", [...userIds]);\n if (error)\n throw mapError(error);\n for (const row of data ?? []) {\n out.set(row.user_id, filterValid(row.platform_permissions ?? []));\n }\n return out;\n }\n async set(ctx, userId, permissions) {\n assertAdmin(ctx);\n const { data: existing, error: fetchError } = await this.client().from(\"user_profiles\").select(\"platform_permissions\").eq(\"user_id\", userId).maybeSingle();\n if (fetchError)\n throw mapError(fetchError);\n if (!existing)\n return \"not_found\";\n const wasAdmin = (existing.platform_permissions ?? []).includes(\"instance_admin\");\n const willBeAdmin = permissions.includes(\"instance_admin\");\n if (wasAdmin && !willBeAdmin) {\n const others = await this.countOtherEnabledAdmins(userId);\n if (others === 0)\n return \"last_admin\";\n }\n const { error } = await this.client().from(\"user_profiles\").update({ platform_permissions: [...permissions] }).eq(\"user_id\", userId);\n if (error)\n throw mapError(error);\n return \"ok\";\n }\n async hasInstanceAdmin(_ctx) {\n const { data, error } = await this.client().from(\"user_profiles\").select(\"user_id\").contains(\"platform_permissions\", [\"instance_admin\"]);\n if (error)\n throw mapError(error);\n const candidates = (data ?? []).map((r) => r.user_id);\n if (candidates.length === 0)\n return false;\n for (const id of candidates) {\n const { data: authData } = await this.clients.serviceClient.auth.admin.getUserById(id);\n if (authData.user && authData.user.user_metadata?.disabled !== true)\n return true;\n }\n return false;\n }\n async countInstanceAdminsExcluding(_ctx, excludeUserId) {\n return this.countOtherEnabledAdmins(excludeUserId);\n }\n async countOtherEnabledAdmins(excludeUserId) {\n const { data, error } = await this.client().from(\"user_profiles\").select(\"user_id\").contains(\"platform_permissions\", [\"instance_admin\"]).neq(\"user_id\", excludeUserId);\n if (error)\n throw mapError(error);\n const candidates = (data ?? []).map((r) => r.user_id);\n if (candidates.length === 0)\n return 0;\n let count = 0;\n for (const id of candidates) {\n const { data: authData } = await this.clients.serviceClient.auth.admin.getUserById(id);\n if (authData.user && authData.user.user_metadata?.disabled !== true)\n count += 1;\n }\n return count;\n }\n}\nfunction filterValid(raw) {\n return raw.filter((p) => PlatformPermissionSchema.safeParse(p).success);\n}\nfunction assertCanRead(ctx, userId) {\n if (ctx.system)\n return;\n if (ctx.userId === userId)\n return;\n if (hasPermission(ctx, \"instance_admin\"))\n return;\n throw new ProviderError(\"Forbidden: cannot read another user’s permissions\", 403);\n}\nfunction assertAdmin(ctx) {\n if (ctx.system)\n return;\n if (hasPermission(ctx, \"instance_admin\"))\n return;\n throw new ProviderError(\"Forbidden: instance admin required\", 403);\n}\nfunction mapError(e) {\n const pg = e;\n if (pg?.code === \"23505\")\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\")\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n return new Error(obj.code ? `[${obj.code}] ${obj.message ?? \"\"}` : obj.message ?? String(e));\n }\n return new Error(String(e));\n}\nconst NOT_IMPLEMENTED_MSG = \"Platform projects are not supported on this deployment yet.\";\nconst notImplementedGrantStore = {\n listByProject: async () => {\n throw new ProviderError(NOT_IMPLEMENTED_MSG, 501);\n },\n create: async () => {\n throw new ProviderError(NOT_IMPLEMENTED_MSG, 501);\n },\n delete: async () => {\n throw new ProviderError(NOT_IMPLEMENTED_MSG, 501);\n },\n deleteByProject: async () => {\n },\n deleteByGranteeOrg: async () => {\n }\n};\nclass SupabaseDataProvider {\n clients;\n orgs;\n projects;\n definitions;\n invites;\n computeServer;\n shareLinks;\n userProfile;\n permissions;\n platformProjectGrants;\n auditQuery;\n constructor(clients, events) {\n this.clients = clients;\n this.orgs = new SupabaseOrgStore(clients, events);\n this.projects = new SupabaseProjectStore(clients, events);\n this.definitions = new SupabaseDefinitionStore(clients, events);\n this.invites = new SupabaseInviteStore(clients, events);\n this.computeServer = new SupabaseComputeServerStore(clients);\n this.shareLinks = new SupabaseShareLinkStore(clients, events);\n this.userProfile = new SupabaseUserProfileProvider(clients);\n this.permissions = new SupabasePlatformPermissionStore(clients);\n this.platformProjectGrants = notImplementedGrantStore;\n this.auditQuery = new SupabaseAuditQuery(clients);\n }\n static fromEnv(env, events) {\n const supabaseUrl = env.SUPABASE_URL;\n const anonKey = env.SUPABASE_ANON_KEY;\n const serviceRoleKey = env.SUPABASE_SERVICE_ROLE_KEY;\n if (!supabaseUrl)\n throw new Error(\"Missing required env var: SUPABASE_URL\");\n if (!anonKey)\n throw new Error(\"Missing required env var: SUPABASE_ANON_KEY\");\n if (!serviceRoleKey)\n throw new Error(\"Missing required env var: SUPABASE_SERVICE_ROLE_KEY\");\n const bundle = buildClientBundle({ supabaseUrl, anonKey, serviceRoleKey });\n return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle));\n }\n static create(opts, events) {\n const bundle = buildClientBundle(opts);\n return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle));\n }\n /**\n * Build from a pre-existing `ClientBundle`. Useful for tests or advanced\n * cases that need to inject a custom event sink or share a bundle externally.\n */\n static fromBundle(bundle, events) {\n return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle));\n }\n /**\n * Expose the underlying bundle so other providers in the same package\n * (storage, user profile, auth) can share one set of clients per process.\n */\n getClientBundle() {\n return this.clients;\n }\n /**\n * No-op: `public.user_profiles` is auto-seeded by the `handle_new_auth_user`\n * trigger on every `auth.users` insert (see `0001_initial.sql`). The data\n * layer always has a row for any authenticated user without per-request work.\n */\n async ensureUser() {\n }\n /**\n * No-op: `public.user_profiles.user_id` references `auth.users(id)` with\n * `on delete cascade`. Deleting the auth user removes the profile row\n * automatically.\n */\n async onUserDeleted() {\n }\n}\nclass SupabaseAuthProvider {\n name = \"Supabase Auth\";\n passwordAuth;\n oauth;\n emailLink;\n admin;\n anon;\n anonKey;\n supabaseUrl;\n constructor(config) {\n this.supabaseUrl = config.supabaseUrl;\n this.anonKey = config.anonKey;\n this.admin = createClient(config.supabaseUrl, config.serviceRoleKey, {\n auth: { persistSession: false, autoRefreshToken: false }\n });\n this.anon = createClient(config.supabaseUrl, config.anonKey, {\n auth: { persistSession: false, autoRefreshToken: false }\n });\n this.passwordAuth = new SupabasePasswordAuth(this.admin, this.anon, (email, password) => this.signIn(email, password), config.enableSelfSignup ?? false, (user) => this.hydrate(user));\n this.oauth = new SupabaseOAuthAuth(this.anon, (user) => this.hydrate(user), config.oauthProviders ?? []);\n this.emailLink = new SupabaseEmailLinkAuth(this.anon, (user) => this.hydrate(user), config.allowEmailLinkSignup ?? true);\n }\n static fromEnv(env) {\n const supabaseUrl = env.SUPABASE_URL;\n const anonKey = env.SUPABASE_ANON_KEY;\n const serviceRoleKey = env.SUPABASE_SERVICE_ROLE_KEY;\n if (!supabaseUrl)\n throw new Error(\"Missing required env var: SUPABASE_URL\");\n if (!anonKey)\n throw new Error(\"Missing required env var: SUPABASE_ANON_KEY\");\n if (!serviceRoleKey)\n throw new Error(\"Missing required env var: SUPABASE_SERVICE_ROLE_KEY\");\n const oauthProviders = (env.SUPABASE_OAUTH_PROVIDERS ?? \"\").split(\",\").map((p) => p.trim().toLowerCase()).filter((p) => p.length > 0);\n return new SupabaseAuthProvider({\n supabaseUrl,\n anonKey,\n serviceRoleKey,\n enableSelfSignup: env.SUPABASE_ENABLE_SELF_SIGNUP === \"true\",\n oauthProviders,\n // Default true; set SUPABASE_ALLOW_EMAIL_LINK_SIGNUP=false to lock down\n // to invite-only and reject magic-link signups for new addresses.\n allowEmailLinkSignup: env.SUPABASE_ALLOW_EMAIL_LINK_SIGNUP !== \"false\"\n });\n }\n async verifyToken(token) {\n if (!token)\n return null;\n const { data, error } = await this.anon.auth.getUser(token);\n if (error || !data.user)\n return null;\n if (data.user.user_metadata?.disabled === true)\n return null;\n return this.hydrate(data.user);\n }\n async getUser(id) {\n const { data, error } = await this.admin.auth.admin.getUserById(id);\n if (error || !data.user)\n return null;\n return this.hydrate(data.user);\n }\n async listUsers(opts) {\n const perPage = opts?.limit ?? 50;\n const page = opts?.cursor ? parseInt(opts.cursor, 10) : 1;\n const { data, error } = await this.admin.auth.admin.listUsers({\n page: Number.isFinite(page) && page >= 1 ? page : 1,\n perPage\n });\n if (error)\n throw error;\n const users = data.users;\n const hydrated = users.map((u) => this.hydrate(u));\n const nextCursor = users.length >= perPage ? String(page + 1) : void 0;\n return { items: hydrated, nextCursor };\n }\n async createUser(email) {\n const { data, error } = await this.admin.auth.admin.createUser({\n email,\n email_confirm: true\n });\n if (error)\n throw error;\n if (!data.user)\n throw new Error(\"createUser returned no user\");\n return this.hydrate(data.user);\n }\n async deleteUser(id) {\n const { error } = await this.admin.auth.admin.deleteUser(id);\n if (error) {\n const e = error;\n if (e.status === 404 || /not.?found/i.test(e.message ?? \"\"))\n return \"not_found\";\n throw error;\n }\n return \"ok\";\n }\n async disableUser(id) {\n const { data: existing, error: fetchError } = await this.admin.auth.admin.getUserById(id);\n if (fetchError || !existing.user)\n return \"not_found\";\n const mergedMetadata = {\n ...existing.user.user_metadata ?? {},\n disabled: true\n };\n const { error } = await this.admin.auth.admin.updateUserById(id, {\n user_metadata: mergedMetadata\n });\n if (error) {\n const e = error;\n if (e.status === 404 || /not.?found/i.test(e.message ?? \"\"))\n return \"not_found\";\n throw error;\n }\n return \"ok\";\n }\n async touchLastLogin(id) {\n const { data, error } = await this.admin.from(\"user_profiles\").select(\"last_login_at\").eq(\"user_id\", id).maybeSingle();\n if (error)\n return;\n if (data?.last_login_at) {\n const prev = Date.parse(data.last_login_at);\n if (Number.isFinite(prev) && Date.now() - prev < 6e4)\n return;\n }\n await this.admin.from(\"user_profiles\").update({ last_login_at: (/* @__PURE__ */ new Date()).toISOString() }).eq(\"user_id\", id);\n }\n // OAuth lives on `this.oauth` (typed `IOAuthAuth`); see `SupabaseOAuthAuth`\n // below. Mirrors the `passwordAuth` capability split.\n // ============================================================================\n // Internals\n // ============================================================================\n /**\n * Sign in via GoTrue. Returns the access token string and the hydrated\n * user. Called by `SupabasePasswordAuth.verifyLogin` — kept on the\n * provider class so it has access to the hydrate helper without plumbing.\n */\n async signIn(email, password) {\n const { data, error } = await this.anon.auth.signInWithPassword({ email, password });\n if (error || !data.user || !data.session)\n return null;\n if (data.user.user_metadata?.disabled === true)\n return null;\n return { user: this.hydrate(data.user), sessionToken: data.session.access_token };\n }\n /**\n * Map a GoTrue `User` to our identity-only `AuthUser`. Platform permissions\n * live on `IPlatformPermissionStore` and profile fields (displayName,\n * starred, recentRuns) on `IUserProfileStore` — neither is in AuthUser.\n */\n hydrate(user) {\n return {\n id: user.id,\n email: user.email ?? void 0,\n createdAt: user.created_at ?? void 0,\n lastLoginAt: user.last_sign_in_at ?? void 0,\n disabled: user.user_metadata?.disabled === true,\n metadata: user.user_metadata\n };\n }\n /**\n * Expose the anon URL + key so other code (e.g. the same process's\n * storage provider or per-request client factories) can build user-scoped\n * clients without requiring a second config read.\n */\n getAnonClientConfig() {\n return { supabaseUrl: this.supabaseUrl, anonKey: this.anonKey };\n }\n}\nclass SupabasePasswordAuth {\n admin;\n anon;\n signIn;\n enableSelfSignup;\n hydrate;\n constructor(admin, anon, signIn, enableSelfSignup, hydrate) {\n this.admin = admin;\n this.anon = anon;\n this.signIn = signIn;\n this.enableSelfSignup = enableSelfSignup;\n this.hydrate = hydrate;\n }\n async verifyLogin(email, password) {\n const result = await this.signIn(email, password);\n if (!result)\n return { kind: \"failed\", reason: \"invalid_credentials\" };\n return { kind: \"success\", user: result.user, sessionToken: result.sessionToken };\n }\n async createUserWithPassword(email, password) {\n const { data, error } = await this.admin.auth.admin.createUser({\n email,\n password,\n email_confirm: true\n });\n if (error)\n throw error;\n if (!data.user)\n throw new Error(\"createUserWithPassword returned no user\");\n return this.hydrate(data.user);\n }\n async registerUser(email, password) {\n if (!this.enableSelfSignup)\n return null;\n const { data, error } = await this.anon.auth.signUp({ email, password });\n if (error || !data.user)\n return null;\n return this.hydrate(data.user);\n }\n}\nclass SupabaseOAuthAuth {\n anon;\n hydrate;\n providers;\n constructor(anon, hydrate, providers2) {\n this.anon = anon;\n this.hydrate = hydrate;\n this.providers = providers2;\n }\n listProviders() {\n return this.providers;\n }\n async getOAuthAuthorizationUrl(provider, redirectTo) {\n const { data, error } = await this.anon.auth.signInWithOAuth({\n provider,\n options: { redirectTo, skipBrowserRedirect: true }\n });\n if (error || !data.url)\n throw error ?? new Error(\"signInWithOAuth returned no URL\");\n return data.url;\n }\n async exchangeOAuthCode(code) {\n const { data, error } = await this.anon.auth.exchangeCodeForSession(code);\n if (error || !data.user || !data.session)\n return null;\n if (data.user.user_metadata?.disabled === true)\n return null;\n return {\n user: this.hydrate(data.user),\n sessionToken: data.session.access_token,\n refreshToken: data.session.refresh_token\n };\n }\n async refreshSession(refreshToken) {\n const { data, error } = await this.anon.auth.refreshSession({ refresh_token: refreshToken });\n if (error || !data.session)\n return null;\n return {\n sessionToken: data.session.access_token,\n refreshToken: data.session.refresh_token\n };\n }\n}\nclass SupabaseEmailLinkAuth {\n anon;\n hydrate;\n allowSignup;\n constructor(anon, hydrate, allowSignup) {\n this.anon = anon;\n this.hydrate = hydrate;\n this.allowSignup = allowSignup;\n }\n async sendMagicLink(email, callbackUrl) {\n const { error } = await this.anon.auth.signInWithOtp({\n email,\n options: {\n emailRedirectTo: callbackUrl,\n shouldCreateUser: this.allowSignup\n }\n });\n if (!error)\n return { ok: true };\n const status = error.status;\n const code = error.code;\n const message = error.message ?? \"\";\n if (status === 429 || /rate.?limit/i.test(message))\n return { ok: false, reason: \"rate_limited\" };\n if (code === \"otp_disabled\" || code === \"signup_disabled\" || /signup.*disabled/i.test(message)) {\n return { ok: false, reason: \"signup_disabled\" };\n }\n if (code === \"validation_failed\" || /invalid.*email|email.*invalid/i.test(message)) {\n return { ok: false, reason: \"invalid_email\" };\n }\n throw error;\n }\n async verifyMagicLink(rawCallbackUrl) {\n const params = parseCallbackParams(rawCallbackUrl);\n if (!params)\n return null;\n const { tokenHash, type } = params;\n const { data, error } = await this.anon.auth.verifyOtp({\n token_hash: tokenHash,\n type\n });\n if (error || !data.user || !data.session)\n return null;\n if (data.user.user_metadata?.disabled === true)\n return null;\n return {\n user: this.hydrate(data.user),\n sessionToken: data.session.access_token,\n refreshToken: data.session.refresh_token\n };\n }\n}\nfunction parseCallbackParams(raw) {\n let search;\n try {\n search = new URL(raw).searchParams;\n } catch {\n search = new URLSearchParams(raw.startsWith(\"?\") ? raw.slice(1) : raw);\n }\n const tokenHash = search.get(\"token_hash\");\n const type = search.get(\"type\");\n if (!tokenHash)\n return null;\n const allowed = /* @__PURE__ */ new Set([\"magiclink\", \"email\", \"signup\", \"invite\", \"recovery\"]);\n if (!type || !allowed.has(type))\n return null;\n return {\n tokenHash,\n type\n };\n}\nconst empty = () => ({ users: [] });\nconst LAST_LOGIN_DEBOUNCE_MS = 6e4;\nasync function readFile(filePath) {\n try {\n const raw = await fs.readFile(filePath, \"utf-8\");\n return JSON.parse(raw);\n } catch (err) {\n if (err.code === \"ENOENT\")\n return empty();\n throw err;\n }\n}\nasync function writeFile(filePath, data) {\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n const tmp = `${filePath}.tmp`;\n await fs.writeFile(tmp, JSON.stringify(data, null, \"\t\"), \"utf-8\");\n await fs.rename(tmp, filePath);\n}\nfunction createAllowlistStore(filePath) {\n const norm = (upn) => upn.trim().toLowerCase();\n return {\n async findByUpn(upn) {\n const { users } = await readFile(filePath);\n const key = norm(upn);\n return users.find((u) => u.upn === key) ?? null;\n },\n async findById(id) {\n const { users } = await readFile(filePath);\n return users.find((u) => u.id === id) ?? null;\n },\n async listUsers() {\n const { users } = await readFile(filePath);\n return users;\n },\n async createUser(upn) {\n const file = await readFile(filePath);\n const key = norm(upn);\n if (file.users.some((u) => u.upn === key)) {\n throw new ProviderError(`User with UPN \"${upn}\" already exists`, 409);\n }\n const entry = {\n id: randomUUID(),\n upn: key,\n createdAt: (/* @__PURE__ */ new Date()).toISOString()\n };\n file.users.push(entry);\n await writeFile(filePath, file);\n return entry;\n },\n async materializeFromHeaders(id, fields) {\n const file = await readFile(filePath);\n const user = file.users.find((u) => u.id === id);\n if (!user)\n return;\n let dirty = false;\n if (!user.email && fields.email) {\n user.email = fields.email;\n dirty = true;\n }\n if (!user.displayName && fields.displayName) {\n user.displayName = fields.displayName;\n dirty = true;\n }\n if (dirty)\n await writeFile(filePath, file);\n },\n async setDisabled(id, disabled) {\n const file = await readFile(filePath);\n const user = file.users.find((u) => u.id === id);\n if (!user)\n throw new ProviderError(`User \"${id}\" not found`, 404);\n user.disabled = disabled;\n await writeFile(filePath, file);\n },\n async touchLastLogin(id) {\n const file = await readFile(filePath);\n const user = file.users.find((u) => u.id === id);\n if (!user)\n return;\n const now = Date.now();\n if (user.lastLoginAt) {\n const prev = Date.parse(user.lastLoginAt);\n if (Number.isFinite(prev) && now - prev < LAST_LOGIN_DEBOUNCE_MS)\n return;\n }\n user.lastLoginAt = new Date(now).toISOString();\n await writeFile(filePath, file);\n },\n async deleteUser(id) {\n const file = await readFile(filePath);\n const before = file.users.length;\n file.users = file.users.filter((u) => u.id !== id);\n if (file.users.length === before)\n throw new ProviderError(`User \"${id}\" not found`, 404);\n await writeFile(filePath, file);\n }\n };\n}\nconst DEFAULT_HEADERS = {\n upn: \"SELVA-UserPrincipalName\",\n email: \"SELVA-Email\",\n displayName: \"SELVA-DisplayName\"\n};\nfunction toAuthUser(u) {\n return {\n id: u.id,\n email: u.email,\n metadata: { upn: u.upn, displayName: u.displayName },\n createdAt: u.createdAt,\n lastLoginAt: u.lastLoginAt,\n disabled: u.disabled\n };\n}\nclass HeaderProxyAuth {\n users;\n headers;\n bootstrapPolicy;\n constructor(users, headers, bootstrapPolicy) {\n this.users = users;\n this.headers = headers;\n this.bootstrapPolicy = bootstrapPolicy;\n }\n setBootstrapPolicy(policy) {\n this.bootstrapPolicy = policy ?? void 0;\n }\n async identifyFromHeaders(headers) {\n const upn = headers.get(this.headers.upn);\n if (!upn || !upn.trim())\n return null;\n const email = headers.get(this.headers.email)?.trim() || void 0;\n const displayName = headers.get(this.headers.displayName)?.trim() || void 0;\n let entry = await this.users.findByUpn(upn);\n if (!entry && this.bootstrapPolicy) {\n const allowed = await this.bootstrapPolicy({ upn, email });\n if (allowed) {\n try {\n entry = await this.users.createUser(upn);\n } catch {\n entry = await this.users.findByUpn(upn);\n }\n }\n }\n if (!entry || entry.disabled)\n return null;\n if (!entry.email && email || !entry.displayName && displayName) {\n await this.users.materializeFromHeaders(entry.id, { email, displayName }).catch(() => {\n });\n if (email && !entry.email)\n entry.email = email;\n if (displayName && !entry.displayName)\n entry.displayName = displayName;\n }\n await this.users.touchLastLogin(entry.id).catch(() => {\n });\n return toAuthUser(entry);\n }\n}\nclass HeaderAuthProvider {\n users;\n headers;\n name = \"Header (Forward Auth)\";\n proxyAuth;\n constructor(config) {\n this.users = createAllowlistStore(config.allowlistFilePath);\n this.headers = { ...DEFAULT_HEADERS, ...config.headers };\n this.proxyAuth = new HeaderProxyAuth(this.users, this.headers, config.bootstrapAllowlistPolicy);\n }\n /**\n * Late-bind a bootstrap-allowlist policy. Useful when the policy needs\n * runtime state the platform layer owns (e.g. `hasInstanceAdmin`) and\n * therefore can't be wired up at provider construction time. Pass `null`\n * to clear.\n */\n setBootstrapAllowlistPolicy(policy) {\n this.proxyAuth.setBootstrapPolicy(policy);\n }\n static fromEnv(env) {\n const dir = env.HEADER_AUTH_DATA_DIR ?? env.DATA_PATH;\n if (!dir) {\n throw new Error(\"Missing required env var: HEADER_AUTH_DATA_DIR (or DATA_PATH as fallback). This directory holds header-allowlist.json — the pre-provisioned UPN list.\");\n }\n return new HeaderAuthProvider({\n allowlistFilePath: path.join(dir, \"header-allowlist.json\"),\n headers: {\n upn: env.HEADER_AUTH_UPN_HEADER ?? DEFAULT_HEADERS.upn,\n email: env.HEADER_AUTH_EMAIL_HEADER ?? DEFAULT_HEADERS.email,\n displayName: env.HEADER_AUTH_DISPLAY_NAME_HEADER ?? DEFAULT_HEADERS.displayName\n }\n });\n }\n /**\n * No tokens are issued by this provider — identity rides on every request\n * via the trusted-proxy headers. Always returns null; the hook layer\n * falls through to `proxyAuth.identifyFromHeaders`.\n */\n async verifyToken(_token) {\n return null;\n }\n async getUser(id) {\n const u = await this.users.findById(id);\n return u ? toAuthUser(u) : null;\n }\n async listUsers(opts) {\n const all = await this.users.listUsers();\n const limit = Math.min(Math.max(1, opts?.limit ?? 25), 200);\n const offset = opts?.cursor ? parseInt(opts.cursor, 10) || 0 : 0;\n const slice = all.slice(offset, offset + limit).map(toAuthUser);\n const nextOffset = offset + slice.length;\n return {\n items: slice,\n nextCursor: nextOffset < all.length ? String(nextOffset) : void 0\n };\n }\n /**\n * Allowlist a UPN. Admin POST `/admin/api/users` with `{ email }`; the\n * email IS the UPN for M365 / Entra deployments where they match. For\n * other IdPs, document the UPN format in your README/onboarding.\n */\n async createUser(upn) {\n return toAuthUser(await this.users.createUser(upn));\n }\n async deleteUser(id) {\n const target = await this.users.findById(id);\n if (!target)\n return \"not_found\";\n try {\n await this.users.deleteUser(id);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n async disableUser(id) {\n const target = await this.users.findById(id);\n if (!target)\n return \"not_found\";\n try {\n await this.users.setDisabled(id, true);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n async touchLastLogin(id) {\n await this.users.touchLastLogin(id);\n }\n}\nfunction envBool(env, key) {\n const v = env[key]?.toLowerCase();\n return v === \"true\" || v === \"1\" || v === \"yes\";\n}\nfunction pickAuth(env) {\n const choice = (env.SELVA_AUTH_PROVIDER ?? \"local\").toLowerCase();\n switch (choice) {\n case \"local\":\n return LocalAuthProvider.fromEnv(env);\n case \"supabase\":\n return SupabaseAuthProvider.fromEnv(env);\n case \"header\":\n return HeaderAuthProvider.fromEnv(env);\n default:\n throw new Error(\n `Unknown SELVA_AUTH_PROVIDER=\"${choice}\". Expected: local | supabase | header.`\n );\n }\n}\nfunction pickData(env) {\n const choice = (env.SELVA_DATA_PROVIDER ?? \"local\").toLowerCase();\n switch (choice) {\n case \"local\":\n return LocalDataProvider.fromEnv(env);\n case \"supabase\":\n return SupabaseDataProvider.fromEnv(env);\n default:\n throw new Error(`Unknown SELVA_DATA_PROVIDER=\"${choice}\". Expected: local | supabase.`);\n }\n}\nfunction pickStorage(env) {\n const choice = (env.SELVA_STORAGE_PROVIDER ?? \"local\").toLowerCase();\n switch (choice) {\n case \"local\":\n return LocalStorageProvider.fromEnv(env);\n case \"supabase\":\n return SupabaseStorageProvider.fromEnv(env);\n default:\n throw new Error(`Unknown SELVA_STORAGE_PROVIDER=\"${choice}\". Expected: local | supabase.`);\n }\n}\nfunction pickTenancy(env) {\n const choice = (env.SELVA_TENANCY ?? \"single\").toLowerCase();\n if (choice !== \"single\" && choice !== \"multi\") {\n throw new Error(`Unknown SELVA_TENANCY=\"${choice}\". Expected: single | multi.`);\n }\n return choice;\n}\nconst bundledConfig = defineConfig((env) => ({\n tenancy: pickTenancy(env),\n flags: {\n ALLOW_CROSS_ORG_PUBLIC: envBool(env, \"SELVA_FLAG_ALLOW_CROSS_ORG_PUBLIC\"),\n ALLOW_ORG_COMPUTE_OVERRIDE: envBool(env, \"SELVA_FLAG_ALLOW_ORG_COMPUTE_OVERRIDE\"),\n ALLOW_ORG_CREATION: envBool(env, \"SELVA_FLAG_ALLOW_ORG_CREATION\"),\n ENABLE_SHARING: envBool(env, \"SELVA_FLAG_ENABLE_SHARING\")\n },\n branding: {\n name: env.SELVA_BRAND_NAME,\n copyrightName: env.SELVA_BRAND_COPYRIGHT_NAME,\n tagline: env.SELVA_BRAND_TAGLINE,\n description: env.SELVA_BRAND_DESCRIPTION\n },\n auth: pickAuth(env),\n data: pickData(env),\n storage: pickStorage(env)\n}));\nclass DefinitionService {\n constructor(data, storage) {\n this.data = data;\n this.storage = storage;\n }\n data;\n storage;\n async create(ctx, input, file) {\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const actor = ctx.userId || input.ownerId;\n const record = {\n guid: input.guid,\n projectId: input.projectId,\n ownerId: input.ownerId,\n createdBy: actor,\n updatedBy: actor,\n displayName: input.displayName,\n description: input.description,\n category: input.category,\n tags: input.tags,\n coverImage: input.coverImage,\n computeServerId: input.computeServerId,\n status: \"pending\",\n solveCount: 0,\n liveVersionId: null,\n draftVersionId: null,\n createdAt: now,\n updatedAt: now,\n deletedAt: null\n };\n await this.data.definitions.create(ctx, record);\n const versionId = randomUUID();\n const fileKey = definitionPaths.version(input.guid, 1, input.fileExt);\n await this.storage.put(fileKey, file, \"application/octet-stream\");\n const version = {\n id: versionId,\n definitionId: input.guid,\n versionNumber: 1,\n fileExt: input.fileExt,\n fileKey,\n originalFilename: input.originalFilename,\n uploadedBy: actor,\n uploadedAt: now\n };\n await this.data.definitions.createVersion(ctx, version);\n await this.data.definitions.attachInitialVersion(ctx, input.guid, versionId);\n return {\n record: { ...record, status: \"draft\", liveVersionId: versionId, draftVersionId: versionId },\n version\n };\n }\n /**\n * Upload a new version of an existing definition. Writes the blob, inserts\n * the version row, and advances the draft pointer. `live` is unchanged —\n * use `publish` to promote.\n */\n async uploadVersion(ctx, guid, file, ext, originalName, changeNote) {\n const existing = await this.data.definitions.get(ctx, guid);\n if (!existing) throw new ProviderError(`Definition not found: ${guid}`, 404);\n const versions = await this.data.definitions.listVersions(ctx, guid, { limit: 1 });\n const next = (versions.items[0]?.versionNumber ?? 0) + 1;\n const versionId = randomUUID();\n const fileKey = definitionPaths.version(guid, next, ext);\n await this.storage.put(fileKey, file, \"application/octet-stream\");\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const actor = ctx.userId || existing.ownerId;\n const version = {\n id: versionId,\n definitionId: guid,\n versionNumber: next,\n fileExt: ext,\n fileKey,\n originalFilename: originalName,\n uploadedBy: actor,\n uploadedAt: now,\n changeNote: changeNote?.trim() || void 0\n };\n await this.data.definitions.createVersion(ctx, version);\n await this.data.definitions.setDraftVersion(ctx, guid, versionId);\n return version;\n }\n /**\n * Advance the live channel. If `versionId` is omitted, promotes the\n * current draft. Pass an arbitrary version id to roll forward/back —\n * spec §6 makes rollback a first-class operation.\n */\n async publish(ctx, guid, versionId) {\n const existing = await this.data.definitions.get(ctx, guid);\n if (!existing) throw new ProviderError(`Definition not found: ${guid}`, 404);\n const target = versionId ?? existing.draftVersionId;\n if (!target) throw new ProviderError(\"No version to publish\", 400);\n const version = await this.data.definitions.getVersion(ctx, target);\n if (!version || version.definitionId !== guid) {\n throw new ProviderError(`Version '${target}' not found for this definition`, 404);\n }\n await this.data.definitions.setLiveVersion(ctx, guid, target);\n if (existing.status === \"draft\" || existing.status === \"pending\") {\n await this.data.definitions.update(ctx, guid, { status: \"published\" });\n }\n return version;\n }\n async deleteVersion(ctx, guid, versionId) {\n const version = await this.data.definitions.getVersion(ctx, versionId);\n if (!version || version.definitionId !== guid) {\n throw new ProviderError(`Version '${versionId}' not found for this definition`, 404);\n }\n await this.data.definitions.deleteVersion(ctx, versionId);\n await this.storage.delete(version.fileKey);\n }\n async updateMeta(ctx, guid, patch) {\n await this.data.definitions.update(ctx, guid, patch);\n }\n async saveCoverImage(ctx, guid, imageData) {\n const path2 = definitionPaths.image(guid);\n await this.storage.put(path2, imageData, \"image/webp\");\n const url = this.storage.getPublicUrl(path2);\n await this.data.definitions.update(ctx, guid, { coverImage: url });\n return url;\n }\n async delete(ctx, guid) {\n await this.data.definitions.delete(ctx, guid);\n await this.storage.deletePrefix(definitionPaths.prefix(guid));\n }\n}\nasync function loadRawConfig() {\n const override = private_env.SELVA_CONFIG_PATH;\n if (!override) {\n return bundledConfig;\n }\n const abs = resolve(process.cwd(), override);\n if (!existsSync(abs)) {\n throw new Error(`SELVA_CONFIG_PATH=${override} resolved to ${abs} which does not exist.`);\n }\n const mod = await import(\n /* @vite-ignore */\n pathToFileURL(abs).href\n );\n return mod.default;\n}\nconst _raw = await loadRawConfig();\nconst providers = typeof _raw === \"function\" ? _raw(private_env) : _raw;\nconst tenancy = providers.tenancy ?? \"single\";\nconsole.log(\n `[selva] providers wired: auth=${providers.auth.name} data=${providers.data.constructor.name} storage=${providers.storage.constructor.name} tenancy=${tenancy}` + (private_env.SELVA_CONFIG_PATH ? ` config=${private_env.SELVA_CONFIG_PATH}` : \"\")\n);\nconst _brand = providers.branding ?? {};\nconst _name = _brand.name?.trim() || \"Selva\";\nconst branding = {\n name: _name,\n copyrightName: _brand.copyrightName?.trim() || _name,\n tagline: _brand.tagline?.trim() || \"Turn Grasshopper definitions into tools anyone can use.\",\n description: _brand.description?.trim() || `Build and deploy interactive web applications powered by Grasshopper definitions with ${_name}.`\n};\nproviders.flags ?? {};\nfunction flag(name) {\n return isFlagEnabled(providers, name);\n}\nconst definitionService = new DefinitionService(providers.data, providers.storage);\nfunction getAuthProvider() {\n return providers.auth;\n}\nfunction getStorageProvider() {\n return providers.storage;\n}\nfunction getDataProvider() {\n return providers.data;\n}\nfunction getOrganizationProvider() {\n return providers.data.orgs;\n}\nfunction getProjectProvider() {\n return providers.data.projects;\n}\nfunction getDefinitionMeta() {\n return providers.data.definitions;\n}\nfunction getComputeServerConfigStore() {\n return providers.data.computeServer;\n}\nfunction getUserProfileStore() {\n return providers.data.userProfile;\n}\nfunction getInviteStore() {\n return providers.data.invites;\n}\nfunction getPermissionStore() {\n return providers.data.permissions;\n}\nfunction getPlatformProjectGrantStore() {\n return providers.data.platformProjectGrants;\n}\nfunction getAuditQuery() {\n return providers.data.auditQuery ?? null;\n}\nexport {\n LocalComputeServerStore as L,\n MAX_PAGE_LIMIT as M,\n ProviderError as P,\n getOrganizationProvider as a,\n getProjectProvider as b,\n getPlatformProjectGrantStore as c,\n getUserProfileStore as d,\n getAuthProvider as e,\n getPermissionStore as f,\n getComputeServerConfigStore as g,\n getDataProvider as h,\n getStorageProvider as i,\n definitionService as j,\n getDefinitionMeta as k,\n definitionPaths as l,\n flag as m,\n getInviteStore as n,\n isPlatformServer as o,\n providers as p,\n isOrgServer as q,\n branding as r,\n getAuditQuery as s,\n tenancy as t\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAUA,SAAS,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE;AACrC,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE;AACrF,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChE,EAAE;AACF;AACK,MAAC,eAAe,GAAG;AACxB,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,KAAK;AACzC,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC;AAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE;AAC/D,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC,CAAC;AAC/D,IAAI;AACJ,IAAI,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAClE,EAAE,CAAC;AACH,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK;AACnB,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC;AAC/B,IAAI,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC;AAC3C,EAAE,CAAC;AACH,EAAE,MAAM,EAAE,CAAC,IAAI,KAAK;AACpB,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC;AAC/B,IAAI,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;AACjC,EAAE;AACF;AACA,MAAM,eAAe,GAAG,IAAI;AAC5B,MAAM,kBAAkB,GAAG,EAAE;AAC7B,SAAS,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE;AACjD,EAAE,IAAI,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC;AACvC,IAAI,OAAO,IAAI;AACf,EAAE,OAAO,oCAAoC,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/D;AACA,SAAS,UAAU,CAAC,WAAW,EAAE;AACjC,EAAE,OAAO,WAAW,CAAC,OAAO,CAAC,+BAA+B,EAAE,OAAO,CAAC;AACtE;AACA,eAAe,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;AACtE,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE;AAChD,IAAI,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,IAAI,0BAA0B,EAAE,IAAI,EAAE,WAAW,EAAE;AAC9F,EAAE;AACF,EAAE,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE;AACjC,EAAE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC,QAAQ,EAAE;AACjK,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,IAAI,UAAU,CAAC,UAAU,CAAC;AACpC,IAAI,WAAW,EAAE,YAAY;AAC7B,IAAI,IAAI,EAAE,UAAU,CAAC,WAAW;AAChC,GAAG;AACH;AACA,IAAI,WAAW,GAAG,IAAI;AACtB,eAAe,SAAS,GAAG;AAC3B,EAAE,IAAI,WAAW;AACjB,IAAI,OAAO,WAAW;AACtB,EAAE,IAAI;AACN,IAAI,MAAM,GAAG,GAAG,MAAM,OAAO,OAAO,CAAC;AACrC,IAAI,WAAW,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG;AACpC,IAAI,OAAO,WAAW;AACtB,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,MAAM,IAAI,KAAK,CAAC,sGAAsG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC3I,EAAE;AACF;AACA,SAAS,gBAAgB,CAAC,CAAC,EAAE;AAC7B,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU;AAC/B;AACA,SAAS,WAAW,CAAC,CAAC,EAAE;AACxB,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK;AAC1B;AACA,SAAS,SAAS,CAAC,GAAG,EAAE;AACxB,EAAE,OAAO,GAAG,CAAC,MAAM,IAAI,QAAQ;AAC/B;AACA,MAAM,aAAa,CAAC;AACpB,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE;AACrB,EAAE;AACF;AACA,MAAM,MAAM,GAAG,MAAM,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AAC/D,SAAS,WAAW,CAAC,GAAG,EAAE,aAAa,EAAE;AACzC,EAAE,OAAO;AACT,IAAI,SAAS,EAAE,MAAM,EAAE;AACvB,IAAI,SAAS,EAAE,GAAG,CAAC,MAAM,IAAI,aAAa,IAAI;AAC9C,GAAG;AACH;AACA,SAAS,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE;AAC7C,EAAE,MAAM,GAAG,GAAG,MAAM,EAAE;AACtB,EAAE,OAAO;AACT,IAAI,SAAS,EAAE,GAAG;AAClB,IAAI,SAAS,EAAE,GAAG;AAClB,IAAI,SAAS,EAAE,GAAG,CAAC,MAAM,IAAI,aAAa,IAAI;AAC9C,GAAG;AACH;AACA,MAAM,kBAAkB,GAAG,EAAE;AACxB,MAAC,cAAc,GAAG;AACvB,SAAS,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE;AACtC,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AACvC;AACA,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,EAAE,OAAO,MAAM;AACf;AACA,MAAM,aAAa,SAAS,KAAK,CAAC;AAClC,EAAE,UAAU;AACZ,EAAE,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,GAAG,EAAE;AACzC,IAAI,KAAK,CAAC,OAAO,CAAC;AAClB,IAAI,IAAI,CAAC,IAAI,GAAG,eAAe;AAC/B,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU;AAChC,EAAE;AACF;AACA,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG;AAC5C,SAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,kBAAkB,EAAE;AACtE,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ;AACtC,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC1E,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;AAC9E,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5B;AACA,SAAS,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE;AACxC,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;AACpC,EAAE,IAAI,GAAG,KAAK,EAAE;AAChB,IAAI,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,EAAE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;AACrC,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAClC,EAAE,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;AACtF,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;AACpC,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;AACrD,IAAI,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE;AAC9D,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC;AACxC,EAAE,IAAI,KAAK,KAAK,EAAE;AAClB,IAAI,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;AACxC,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AACvD,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,MAAM;AACtD,IAAI,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;AAChC;AACA,eAAe,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE;AAChD,EAAE,IAAI;AACN,IAAI,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;AACpD,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1B,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;AAC7B,MAAM,OAAO,QAAQ;AACrB,IAAI,MAAM,GAAG;AACb,EAAE;AACF;AACA,eAAe,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE;AAC7C,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7D,EAAE,MAAM,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC;AAC/B,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;AACnE,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC;AAChC;AACA,MAAM,wBAAwB,GAAG,GAAG;AACpC,MAAM,iBAAiB,GAAG,GAAG;AAC7B,MAAM,aAAa,GAAG,EAAE;AACxB,MAAM,aAAa,GAAG,QAAQ;AAC9B,eAAe,YAAY,CAAC,QAAQ,EAAE;AACtC,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC3D,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACvL,EAAE,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7F;AACA,eAAe,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE;AACxD,EAAE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AACrC,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;AACjD,IAAI,OAAO,KAAK;AAChB,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,GAAG,KAAK;AAC1D,EAAE,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;AAC1C,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC;AACrD,IAAI,OAAO,KAAK;AAChB,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC;AAC5D,EAAE,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3K,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;AACvC,IAAI,OAAO,KAAK;AAChB,EAAE,OAAO,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC;AACjD;AACA,MAAM,OAAO,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACrC,SAAS,wBAAwB,CAAC,aAAa,EAAE;AACjD,EAAE,OAAO;AACT,IAAI,MAAM,WAAW,CAAC,KAAK,EAAE;AAC7B,MAAM,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;AACpE,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI;AACrF,IAAI,CAAC;AACL,IAAI,MAAM,QAAQ,CAAC,EAAE,EAAE;AACvB,MAAM,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;AACpE,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI;AACnD,IAAI,CAAC;AACL,IAAI,MAAM,SAAS,GAAG;AACtB,MAAM,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;AACpE,MAAM,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC;AAChE,IAAI,CAAC;AACL,IAAI,MAAM,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE;AACtC,MAAM,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;AAC/D,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE;AACjF,QAAQ,MAAM,IAAI,aAAa,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;AACjF,MAAM;AACN,MAAM,MAAM,IAAI,GAAG;AACnB,QAAQ,EAAE,EAAE,UAAU,EAAE;AACxB,QAAQ,KAAK;AACb,QAAQ,YAAY,EAAE,QAAQ,KAAK,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI;AAC7E,QAAQ,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW;AAC3D,OAAO;AACP,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,MAAM,MAAM,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC;AAC9C,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC;AACL,IAAI,MAAM,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE;AACpC,MAAM,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;AAC/D,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACtD,MAAM,IAAI,CAAC,IAAI;AACf,QAAQ,MAAM,IAAI,aAAa,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC9D,MAAM,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC9B,MAAM,MAAM,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC;AAC9C,IAAI,CAAC;AACL,IAAI,MAAM,cAAc,CAAC,EAAE,EAAE;AAC7B,MAAM,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;AAC/D,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACtD,MAAM,IAAI,CAAC,IAAI;AACf,QAAQ;AACR,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AAC5B,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AAC5B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;AACjD,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,wBAAwB;AAC1E,UAAU;AACV,MAAM;AACN,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;AACpD,MAAM,MAAM,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC;AAC9C,IAAI,CAAC;AACL,IAAI,MAAM,UAAU,CAAC,EAAE,EAAE;AACzB,MAAM,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;AAC/D,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;AACtC,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACxD,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM;AACtC,QAAQ,MAAM,IAAI,aAAa,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC9D,MAAM,MAAM,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC;AAC9C,IAAI;AACJ,GAAG;AACH;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE;AAC/B,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,kBAAkB,CAAC,EAAE,cAAc,CAAC;AACxF,EAAE,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AAClE,EAAE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;AACnD,EAAE,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM;AAC1C,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG;AACjE,GAAG;AACH;AACA,SAAS,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE;AACvE,EAAE,MAAM,KAAK,GAAG,IAAI,EAAE,OAAO,IAAI,WAAW;AAC5C,EAAE,MAAM,GAAG,GAAG,IAAI,EAAE,QAAQ,IAAI,MAAM;AACtC,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,KAAK,GAAG,CAAC,GAAG,EAAE;AACpC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AACvB,IAAI,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE;AACpC,IAAI,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE;AACpC,IAAI,IAAI,EAAE,GAAG,EAAE;AACf,MAAM,OAAO,EAAE,GAAG,GAAG;AACrB,IAAI,IAAI,EAAE,GAAG,EAAE;AACf,MAAM,OAAO,CAAC,GAAG,GAAG;AACpB,IAAI,OAAO,CAAC;AACZ,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,KAAK;AACd;AACA,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG;AAC5C,SAAS,YAAY,CAAC,CAAC,EAAE;AACzB,EAAE,OAAO;AACT,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE;AACZ,IAAI,KAAK,EAAE,CAAC,CAAC,KAAK;AAClB,IAAI,SAAS,EAAE,CAAC,CAAC,SAAS;AAC1B,IAAI,WAAW,EAAE,CAAC,CAAC,WAAW;AAC9B,IAAI,QAAQ,EAAE,CAAC,CAAC;AAChB,GAAG;AACH;AACA,MAAM,iBAAiB,CAAC;AACxB,EAAE,KAAK;AACP,EAAE,SAAS;AACX,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE;AAChC,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS;AAC9B,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE;AACrC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;AACnB,MAAM,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE;AAC9D,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;AACpD,IAAI,IAAI,CAAC,IAAI;AACb,MAAM,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE;AAC9D,IAAI,IAAI,IAAI,CAAC,QAAQ;AACrB,MAAM,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE;AACnD,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;AACtF,MAAM,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE;AAC9D,IAAI;AACJ,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM;AACzD,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;AACnC,IAAI,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AAC9E,EAAE;AACF,EAAE,MAAM,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAChD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACrB,MAAM,MAAM,IAAI,aAAa,CAAC,kEAAkE,EAAE,GAAG,CAAC;AACtG,IAAI;AACJ,IAAI,OAAO,YAAY,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACrE,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE;AACtC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;AACnB,MAAM,OAAO,IAAI;AACjB,IAAI,OAAO,YAAY,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACrE,EAAE;AACF;AACA,MAAM,iBAAiB,CAAC;AACxB,EAAE,UAAU;AACZ,EAAE,KAAK;AACP,EAAE,IAAI,GAAG,OAAO;AAChB,EAAE,YAAY;AACd,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU;AACvC,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE;AAC9B,MAAM,IAAI,CAAC,KAAK,GAAG,wBAAwB,CAAC,MAAM,CAAC,aAAa,CAAC;AACjE,IAAI;AACJ,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;AAChI,EAAE;AACF,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE;AACtB,IAAI,MAAM,UAAU,GAAG,GAAG,CAAC,cAAc;AACzC,IAAI,IAAI,CAAC,UAAU;AACnB,MAAM,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;AACjE,IAAI,OAAO,IAAI,iBAAiB,CAAC;AACjC,MAAM,UAAU;AAChB,MAAM,aAAa,EAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,iBAAiB,CAAC,GAAG;AACnF,KAAK,CAAC;AACN,EAAE;AACF;AACA,EAAE,MAAM,WAAW,CAAC,KAAK,EAAE;AAC3B,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AACrE,IAAI,IAAI,CAAC,KAAK;AACd,MAAM,OAAO,IAAI;AACjB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;AACnB,MAAM,OAAO,IAAI;AACjB,IAAI,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC/C,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ;AACxB,MAAM,OAAO,IAAI;AACjB,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM;AACtD,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,YAAY,CAAC,CAAC,CAAC;AAC1B,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,EAAE,EAAE;AAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;AACnB,MAAM;AACN,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;AACvC,EAAE;AACF,EAAE,MAAM,OAAO,CAAC,EAAE,EAAE;AACpB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;AACnB,MAAM,OAAO,IAAI;AACjB,IAAI,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC3C,IAAI,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;AACrC,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,IAAI,EAAE;AACxB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;AACnB,MAAM,OAAO,IAAI;AACjB,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAC9C,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;AAClD,EAAE;AACF,EAAE,MAAM,UAAU,CAAC,EAAE,EAAE;AACvB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;AACnB,MAAM,OAAO,eAAe;AAC5B,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AAChD,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,OAAO,WAAW;AACxB,IAAI,IAAI;AACR,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;AACrC,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG;AAChE,QAAQ,OAAO,WAAW;AAC1B,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,EAAE,EAAE;AACxB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;AACnB,MAAM,OAAO,eAAe;AAC5B,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AAChD,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,OAAO,WAAW;AACxB,IAAI,IAAI;AACR,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC;AAC5C,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG;AAChE,QAAQ,OAAO,WAAW;AAC1B,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,EAAE;AACF;AACA,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;AAC/B,MAAM,gBAAgB,CAAC;AACvB,EAAE,MAAM;AACR,EAAE,QAAQ;AACV,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,aAAa,EAAE,EAAE;AACpD,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS;AACtB,MAAM,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;AAC5D,IAAI,OAAO,IAAI,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;AACtD,EAAE;AACF,EAAE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,aAAa,EAAE,EAAE;AACtD,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;AACxB,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AACvD,EAAE;AACF,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC/C,EAAE;AACF,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE;AACnB,IAAI,MAAM,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC5C,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE;AAC5B,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AAClC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7B,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,gBAAgB;AAC5B,MAAM,QAAQ,EAAE,MAAM,CAAC,EAAE;AACzB,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK;AACzB,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK;AACzB,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AACxC,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AACzC,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;AACjE,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,OAAO,IAAI;AACjB,IAAI,IAAI,MAAM,CAAC,UAAU;AACzB,MAAM,OAAO,IAAI;AACjB,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE;AAClD,MAAM,OAAO,IAAI;AACjB,IAAI,OAAO,MAAM;AACjB,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;AACrC,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AACzC,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;AAC7D,IAAI,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACrD,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE;AACtC,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AAClC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACxD,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU;AACpC,MAAM;AACN,IAAI,MAAM,CAAC,UAAU,GAAG,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AAClE,IAAI,MAAM,CAAC,gBAAgB,GAAG,MAAM;AACpC,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,iBAAiB;AAC7B,MAAM,QAAQ,EAAE,MAAM,CAAC,EAAE;AACzB,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK;AACzB,MAAM,MAAM;AACZ,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE;AACxB,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AAClC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;AACzE,IAAI,IAAI,CAAC,MAAM;AACf,MAAM;AACN,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC;AAC1E,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,gBAAgB;AAC5B,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK;AACzB,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AACjC,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AAClC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;AACtC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;AAChE,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM;AACtC,MAAM;AACN,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,EAAE;AACF;AACA,MAAM,IAAI,GAAG,aAAa;AAC1B,MAAM,QAAQ,GAAG,EAAE;AACnB,MAAM,SAAS,GAAG,EAAE;AACpB,MAAM,MAAM,GAAG,SAAS;AACxB,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,EAAE,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;AACjC;AACA,SAAS,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE;AACvC,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;AACzB,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,iCAAiC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACrE,EAAE;AACF,EAAE,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE;AACpC,IAAI,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC;AAC5E,EAAE;AACF,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC;AAClC,EAAE,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;AAC9C,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACtF,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE;AACjC,EAAE,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACzE;AACA,SAAS,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE;AACtC,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;AACzB,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,iCAAiC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACrE,EAAE;AACF,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE;AACpC,IAAI,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;AAChE,EAAE;AACF,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;AAClE,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC;AACtC,EAAE,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;AAC1D,EAAE,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;AACvD,EAAE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;AAClD,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;AAC1B,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxF;AACA,SAAS,eAAe,CAAC,GAAG,EAAE;AAC9B,EAAE,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;AAClC,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC;AACxC,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;AACvB,IAAI,OAAO,GAAG;AACd,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,gKAAgK,CAAC,CAAC;AACrL;AACA,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;AAC9C,MAAM,uBAAuB,CAAC;AAC9B,EAAE,cAAc;AAChB,EAAE,SAAS;AACX,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE;AACtB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS;AACtB,MAAM,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;AAC5D,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE;AAChC,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,gKAAgK,CAAC,CAAC;AACzL,IAAI;AACJ,IAAI,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC/H,EAAE;AACF,EAAE,WAAW,CAAC,cAAc,EAAE,SAAS,EAAE;AACzC,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc;AACxC,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS;AAC9B,EAAE;AACF,EAAE,MAAM,OAAO,GAAG;AAClB,IAAI,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;AAC9D,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;AAChC,MAAM,eAAe,EAAE,GAAG,CAAC,eAAe;AAC1C,MAAM,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI;AACtC,KAAK;AACL,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,CAAC,OAAO,EAAE;AAC1B,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AAC9B,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM;AACnB,QAAQ,OAAO,CAAC;AAChB,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AACxC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,+DAA+D,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,iEAAiE,CAAC,CAAC;AAC/K,MAAM;AACN,MAAM,IAAI;AACV,QAAQ,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;AACxE,MAAM,CAAC,CAAC,OAAO,KAAK,EAAE;AACtB,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,qDAAqD,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,gQAAgQ,CAAC,EAAE,KAAK,CAAC;AACxW,QAAQ,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;AACvC,MAAM;AACN,IAAI,CAAC,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,aAAa,GAAG;AACxB,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACpC,IAAI,MAAM,QAAQ,GAAG,EAAE;AACvB,IAAI,IAAI,cAAc,GAAG,KAAK;AAC9B,IAAI,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE;AACjC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM;AACnB,QAAQ;AACR,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AACxC,QAAQ,cAAc,GAAG,IAAI;AAC7B,QAAQ,QAAQ,CAAC,IAAI,CAAC;AACtB,UAAU,QAAQ,EAAE,CAAC,CAAC,EAAE;AACxB,UAAU,WAAW,EAAE,CAAC,CAAC,KAAK;AAC9B,UAAU,MAAM,EAAE;AAClB,SAAS,CAAC;AACV,QAAQ;AACR,MAAM;AACN,MAAM,IAAI;AACV,QAAQ,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;AAC/C,MAAM,CAAC,CAAC,OAAO,KAAK,EAAE;AACtB,QAAQ,QAAQ,CAAC,IAAI,CAAC;AACtB,UAAU,QAAQ,EAAE,CAAC,CAAC,EAAE;AACxB,UAAU,WAAW,EAAE,CAAC,CAAC,KAAK;AAC9B,UAAU,MAAM,EAAE,cAAc;AAChC,UAAU,KAAK,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK;AACtE,SAAS,CAAC;AACV,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE;AAClE,EAAE;AACF,EAAE,cAAc,CAAC,OAAO,EAAE;AAC1B,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AAC9B,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM;AACnB,QAAQ,OAAO,CAAC;AAChB,MAAM,IAAI,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC;AACrC,QAAQ,OAAO,CAAC;AAChB,MAAM,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;AACtE,IAAI,CAAC,CAAC;AACN,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,IAAI,EAAE;AACxB,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACpC,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/C,MAAM,eAAe,EAAE,GAAG,CAAC,eAAe;AAC1C,MAAM,WAAW,EAAE,GAAG,CAAC;AACvB,KAAK;AACL,EAAE;AACF,EAAE,MAAM,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE;AAC5D,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACpC,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;AACnD,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC9E,IAAI,MAAM,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE;AAC7C,MAAM,OAAO,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;AAC5C,MAAM,eAAe;AACrB,MAAM,WAAW,EAAE,GAAG,CAAC;AACvB,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE;AAC9D,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACpC,IAAI,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;AAC7D,IAAI,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC;AAC5F,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE;AAChI;AACA,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK;AAC7C,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,WAAW,GAAG,EAAE,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE;AACpD,IAAI,IAAI,eAAe,KAAK,IAAI,EAAE;AAClC,MAAM,OAAO,WAAW,CAAC,KAAK,CAAC;AAC/B,IAAI,CAAC,MAAM,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;AACpD,MAAM,WAAW,CAAC,KAAK,CAAC,GAAG,eAAe;AAC1C,IAAI;AACJ,IAAI,MAAM,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE;AAC7C,MAAM,OAAO,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,YAAY,EAAE,GAAG,WAAW,CAAC;AACjE,MAAM,eAAe,EAAE,GAAG,CAAC,eAAe;AAC1C,MAAM;AACN,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC7C,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACpC,IAAI,MAAM,WAAW,GAAG,EAAE,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE;AACpD,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE;AAC3B,MAAM,OAAO,WAAW,CAAC,KAAK,CAAC;AAC/B,IAAI,CAAC,MAAM;AACX,MAAM,WAAW,CAAC,KAAK,CAAC,GAAG,QAAQ;AACnC,IAAI;AACJ,IAAI,MAAM,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,CAAC;AACrE,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AACjC,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACpC,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC;AAC5F,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACzC,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC9B,QAAQ,OAAO,CAAC;AAChB,MAAM,IAAI,CAAC,CAAC,UAAU,KAAK,KAAK;AAChC,QAAQ,OAAO,CAAC;AAChB,MAAM,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;AACvC,QAAQ,OAAO,CAAC;AAChB,MAAM,MAAM,IAAI,GAAG;AACnB,QAAQ,GAAG,CAAC;AACZ,QAAQ,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK;AAC5D,OAAO;AACP,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,WAAW,GAAG,EAAE,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE;AACpD,IAAI,MAAM,UAAU,GAAG,KAAK,IAAI,WAAW;AAC3C,IAAI,OAAO,WAAW,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvH,IAAI,IAAI,CAAC,OAAO;AAChB,MAAM;AACN,IAAI,MAAM,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE;AAC7C,MAAM,OAAO,EAAE,OAAO;AACtB,MAAM,eAAe,EAAE,GAAG,CAAC,eAAe;AAC1C,MAAM;AACN,KAAK,CAAC;AACN,EAAE;AACF;AACA,MAAM,OAAO,GAAG,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACtC,MAAM,8BAA8B,CAAC;AACrC,EAAE,QAAQ;AACV,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE;AACtB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS;AACtB,MAAM,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;AAC5D,IAAI,OAAO,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC;AACvG,EAAE;AACF,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC5B,EAAE;AACF,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;AACjD,EAAE;AACF,EAAE,MAAM,KAAK,CAAC,IAAI,EAAE;AACpB,IAAI,MAAM,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC5C,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE;AACvC,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;AAC1D,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;AAC5B,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AAClC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE;AACpD,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;AACxE,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;AACxJ,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC,+BAA+B,CAAC,EAAE,GAAG,CAAC;AAC1G,IAAI;AACJ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC1B,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE;AACzB,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AAClC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACzD,IAAI,IAAI,GAAG,KAAK,EAAE;AAClB,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC7D,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9B,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC1B,EAAE;AACF,EAAE,MAAM,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE;AACzC,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AAClC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AACrC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;AACtE,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM;AACrC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC5B,EAAE;AACF,EAAE,MAAM,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE;AACxC,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AAClC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AACrC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,KAAK,KAAK,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC;AAChG,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM;AACrC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC5B,EAAE;AACF;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,EAAE,OAAO,GAAG,CAAC,SAAS,IAAI,IAAI;AAC9B;AACA,MAAM,mBAAmB,CAAC;AAC1B,EAAE,SAAS;AACX,EAAE,KAAK,GAAG,IAAI;AACd,EAAE,OAAO,GAAG,IAAI;AAChB,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAC1D,EAAE;AACF,EAAE,MAAM,GAAG,GAAG;AACd,IAAI,IAAI,IAAI,CAAC,KAAK;AAClB,MAAM,OAAO,IAAI,CAAC,KAAK;AACvB,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE;AAClD,MAAM,IAAI,EAAE,EAAE;AACd,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,UAAU,EAAE,EAAE;AACpB,MAAM,cAAc,EAAE;AACtB,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;AACtB,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI;AACvB,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI;AACzB,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,IAAI,CAAC,OAAO;AACvB,EAAE;AACF,EAAE,MAAM,KAAK,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,IAAI,MAAM,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;AAC9C,EAAE;AACF;AACA,MAAM,aAAa,CAAC;AACpB,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,aAAa;AACf,EAAE,MAAM;AACR,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE;AACtB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS;AACtB,MAAM,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;AAC5D,IAAI,OAAO,IAAI,aAAa,CAAC;AAC7B,MAAM,MAAM,EAAE,IAAI,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC;AACpD,MAAM,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC;AAC5C,MAAM,aAAa,EAAE,uBAAuB,CAAC,OAAO,CAAC,GAAG,CAAC;AACzD,MAAM,MAAM,EAAE,8BAA8B,CAAC,OAAO,CAAC,GAAG;AACxD,KAAK,CAAC;AACN,EAAE;AACF,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAC7B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AAC/B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,aAAa,EAAE;AACpD,EAAE;AACF,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE;AAC7B,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AAC5C,IAAI,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAClE,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE;AACzB,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AAC5C,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7C,IAAI,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;AACtC,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE;AACjC,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AAC5C,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;AACjD,IAAI,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;AACtC,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE;AAC5B,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACzC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AAChE,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;AACpE,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AACpE,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;AAC3E,IAAI;AACJ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAChD,IAAI,MAAM,GAAG,GAAG,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AAC1D,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1B,MAAM,KAAK,EAAE,GAAG,CAAC,EAAE;AACnB,MAAM,MAAM,EAAE,GAAG,CAAC,OAAO;AACzB,MAAM,IAAI,EAAE,OAAO;AACnB,MAAM,WAAW,EAAE,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC;AACrD,MAAM,QAAQ,EAAE,GAAG;AACnB,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;AACtC,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3F,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE;AAClC,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACzC,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvE,IAAI,IAAI,GAAG,KAAK,EAAE;AAClB,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC3D,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAC3D,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AACvF,QAAQ,MAAM,IAAI,aAAa,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;AAC/E,MAAM;AACN,IAAI;AACJ,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;AACtB,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACxB,MAAM,GAAG,KAAK;AACd,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO;AAC9E,KAAK;AACL,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE;AAC3B,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACzC,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvE,IAAI,IAAI,GAAG,KAAK,EAAE;AAClB,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC3D,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AAC5F,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE;AACtD,IAAI,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;AAC1G,IAAI,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/G,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;AACtG,IAAI,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;AAClI,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC;AAC3C,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC;AACjD,IAAI,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE;AAC3C,MAAM,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC;AACvD,IAAI;AACJ,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,EAAE,CAAC;AACjD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AACvF,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;AAC1C,IAAI,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AAClD,IAAI,OAAO,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AACrF,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1C,IAAI,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AAClD,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC;AACjF,IAAI,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;AACtC,EAAE;AACF,EAAE,MAAM,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE;AACzC,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACzC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnF,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,OAAO,IAAI;AACjB,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC;AAC7D,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC9B,MAAM,OAAO,IAAI;AACjB,IAAI,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE;AAC1B,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE;AAClC,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACzC,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC;AACzG,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;AACtC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;AAC1C,QAAQ,SAAS,EAAE;AACnB,OAAO,CAAC;AACR,IAAI,CAAC,MAAM;AACX,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC3D,IAAI;AACJ,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,kBAAkB;AAC9B,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK;AACzB,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM;AAC3B,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;AACtD,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACzC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvG,IAAI,IAAI,CAAC,CAAC;AACV,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AACtE,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI;AACjB,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;AACnD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,yBAAyB;AACrC,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,IAAI;AACV,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,0BAA0B,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE;AACpE,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACzC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvG,IAAI,IAAI,CAAC,CAAC;AACV,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AACtE,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,GAAG,WAAW,CAAC;AACpC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;AACnD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,gCAAgC;AAC5C,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC;AACnC,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;AAC5C,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACzC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvG,IAAI,IAAI,CAAC,CAAC;AACV,MAAM;AACN,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC;AACnD,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC;AAC3B,IAAI,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACrG,IAAI,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,KAAK,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC;AACjK,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,oBAAoB;AAChC,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF;AACA,SAAS,MAAM,CAAC,GAAG,EAAE;AACrB,EAAE,OAAO,GAAG,CAAC,SAAS,IAAI,IAAI;AAC9B;AACA,MAAM,iBAAiB,CAAC;AACxB,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,aAAa,EAAE;AACpD,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;AACxC,IAAI,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AAChD,IAAI,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACnG,EAAE;AACF,EAAE,MAAM,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE;AAC7B,IAAI,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AAChD,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AACjD,IAAI,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;AACpC,EAAE;AACF,EAAE,MAAM,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;AAC5C,IAAI,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AAChD,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;AAC3E,IAAI,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;AACpC,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE;AACpC,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACzC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACtE,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AACtE,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACtE,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;AAC5E,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;AAC9C,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,EAAE;AAChH,MAAM,MAAM,IAAI,aAAa,CAAC,uDAAuD,EAAE,GAAG,CAAC;AAC3F,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE;AACvG,MAAM,MAAM,IAAI,aAAa,CAAC,uDAAuD,EAAE,GAAG,CAAC;AAC3F,IAAI;AACJ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACxD,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;AAC9B,MAAM,SAAS,EAAE,OAAO,CAAC,EAAE;AAC3B,MAAM,MAAM,EAAE,OAAO,CAAC,OAAO;AAC7B,MAAM,IAAI,EAAE,OAAO;AACnB,MAAM,QAAQ,EAAE,OAAO,CAAC,SAAS;AACjC,MAAM,SAAS,EAAE,OAAO,CAAC,SAAS;AAClC,MAAM,SAAS,EAAE,OAAO,CAAC,OAAO;AAChC,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,iBAAiB;AAC7B,MAAM,SAAS,EAAE,OAAO,CAAC,EAAE;AAC3B,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK;AAC1B,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE;AACtC,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACzC,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACzE,IAAI,IAAI,GAAG,KAAK,EAAE;AAClB,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC/D,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AACvC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AAC/E,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;AAC9C,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,EAAE;AACjI,QAAQ,MAAM,IAAI,aAAa,CAAC,uDAAuD,EAAE,GAAG,CAAC;AAC7F,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;AACnD,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACtH,QAAQ,MAAM,IAAI,aAAa,CAAC,uDAAuD,EAAE,GAAG,CAAC;AAC7F,MAAM;AACN,IAAI;AACJ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG;AAC1B,MAAM,GAAG,OAAO;AAChB,MAAM,GAAG,KAAK;AACd,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO;AAC9D,KAAK;AACL,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE;AAC/B,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACzC,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACzE,IAAI,IAAI,GAAG,KAAK,EAAE;AAClB,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC/D,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AACpG,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE;AAC9D,IAAI,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;AACpH,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,CAAC;AAC9C,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/F,EAAE;AACF,EAAE,MAAM,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;AAClD,IAAI,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACtD,IAAI,OAAO,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AAC/F,EAAE;AACF,EAAE,MAAM,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE;AAClD,IAAI,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACtD,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC;AAC7F,IAAI,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;AACpC,EAAE;AACF,EAAE,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE;AACtC,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACzC,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC;AACrH,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;AACtC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;AAC1C,QAAQ,SAAS,EAAE;AACnB,OAAO,CAAC;AACR,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;AACnD,MAAM,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;AAChC,QAAQ,GAAG,MAAM;AACjB,QAAQ,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS;AACtD,QAAQ,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS;AACtD,QAAQ,SAAS,EAAE;AACnB,OAAO,CAAC;AACR,IAAI;AACJ,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,sBAAsB;AAClC,MAAM,SAAS,EAAE,MAAM,CAAC,SAAS;AACjC,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM;AAC3B,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,uBAAuB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;AAC9D,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACzC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;AACjH,IAAI,IAAI,CAAC,CAAC;AACV,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC1E,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI;AACjB,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;AACnD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,6BAA6B;AACzC,MAAM,SAAS;AACf,MAAM,MAAM;AACZ,MAAM,IAAI;AACV,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE;AACpD,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACzC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;AACjH,IAAI,IAAI,CAAC,CAAC;AACV,MAAM;AACN,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;AACvD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,wBAAwB;AACpC,MAAM,SAAS;AACf,MAAM,MAAM;AACZ,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF;AACA,MAAM,OAAO,GAAG,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;AACnE,MAAM,oBAAoB,CAAC;AAC3B,EAAE,UAAU;AACZ,EAAE,MAAM;AACR,EAAE,eAAe;AACjB,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE;AACtB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS;AACtB,MAAM,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;AAC5D,IAAI,OAAO,IAAI,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC;AAClD,EAAE;AACF,EAAE,WAAW,CAAC,eAAe,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,aAAa,EAAE,EAAE;AAC9E,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,yBAAyB,CAAC;AAC3E,IAAI,IAAI,CAAC,eAAe,GAAG,eAAe;AAC1C,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;AACxB,EAAE;AACF,EAAE,kBAAkB,CAAC,eAAe,EAAE;AACtC,IAAI,IAAI,CAAC,eAAe,GAAG,eAAe;AAC1C,EAAE;AACF,EAAE,MAAM,UAAU,GAAG;AACrB,IAAI,OAAO,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;AACnD,EAAE;AACF,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;AACtD,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE;AAC5B,IAAI,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;AAChD,EAAE;AACF,EAAE,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE;AAC/B,IAAI,MAAM,SAAS,GAAG;AACtB,MAAM,GAAG,IAAI;AACb,MAAM,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,MAAM;AACtC,MAAM,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI;AAClC,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK;AAC7D,MAAM,IAAI,KAAK,KAAK,MAAM;AAC1B,QAAQ,OAAO,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE;AAC1C,MAAM,IAAI,KAAK,KAAK,YAAY;AAChC,QAAQ,OAAO,CAAC,CAAC,UAAU,IAAI,CAAC;AAChC,MAAM,OAAO,CAAC,CAAC,KAAK,CAAC;AACrB,IAAI,CAAC,CAAC;AACN,EAAE;AACF,EAAE,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE;AAChC,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1E,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;AAChC,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5C,MAAM,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1D,IAAI;AACJ,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;AAClC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,EAAE,cAAc;AACzD,QAAQ,OAAO,KAAK;AACpB,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,IAAI,EAAE,eAAe;AAC3D,QAAQ,OAAO,KAAK;AACpB,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,CAAC;AACN,EAAE;AACF,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;AACzB,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAC1C,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;AAChF,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAC5D,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;AAC7C,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAC1C,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,KAAK,SAAS,CAAC,EAAE,IAAI,CAAC;AAC1H,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAC5D,EAAE;AACF,EAAE,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE;AAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC/B,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;AACjC,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAC1C,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5G,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3E,IAAI,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACxG,IAAI,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,KAAK,QAAQ,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAClK,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;AAC7G,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAClE,EAAE;AACF,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAC1C,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;AACtC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;AAClC,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE;AAC5B,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAC1C,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO;AAC9C,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;AACtC,MAAM,GAAG,MAAM;AACf,MAAM,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK;AAC1C,MAAM,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK;AAC1C,MAAM,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI;AACjD,MAAM,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;AACnD,MAAM,SAAS,EAAE;AACjB,KAAK;AACL,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAClC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,oBAAoB;AAChC,MAAM,YAAY,EAAE,MAAM,CAAC,IAAI;AAC/B,MAAM,SAAS,EAAE,MAAM,CAAC,SAAS;AACjC,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AACjC,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAC1C,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;AAC7C,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AACpE,IAAI,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,CAAC;AACpD,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG;AAC/B,MAAM,GAAG,QAAQ;AACjB,MAAM,GAAG,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;AAC3E,MAAM,GAAG,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI;AACzC,QAAQ,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,WAAW;AAChD,OAAO;AACP,MAAM,GAAG,KAAK,CAAC,QAAQ,KAAK,MAAM,IAAI;AACtC,QAAQ,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,QAAQ;AAC1C,OAAO;AACP,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACjE,MAAM,GAAG,KAAK,CAAC,UAAU,KAAK,MAAM,IAAI;AACxC,QAAQ,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,UAAU;AAC9C,OAAO;AACP,MAAM,GAAG,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;AACrE,MAAM,GAAG,KAAK,CAAC,eAAe,KAAK,MAAM,IAAI;AAC7C,QAAQ,eAAe,EAAE,SAAS,CAAC,KAAK,CAAC,eAAe;AACxD,OAAO;AACP,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;AAC5D,MAAM,GAAG,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;AAC/D,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,OAAO;AAChE,KAAK;AACL,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAClC,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE;AAC1B,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAC1C,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;AAC7C,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,MAAM;AACN,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;AACzF,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAClC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,oBAAoB;AAChC,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE;AACxC,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAC1C,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;AAC7C,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,MAAM;AACN,IAAI,QAAQ,CAAC,UAAU,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC;AACxD,IAAI,QAAQ,CAAC,SAAS,GAAG,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACnE,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAClC,EAAE;AACF;AACA;AACA;AACA,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE;AACpC,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAC1C,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC;AAC3D,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC5B,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AACpF,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AAC/C,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;AAC5E,IAAI;AACJ,IAAI,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE;AAC1D,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAClC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,4BAA4B;AACxC,MAAM,SAAS,EAAE,OAAO,CAAC,EAAE;AAC3B,MAAM,YAAY,EAAE,OAAO,CAAC,YAAY;AACxC,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;AAC/C,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAC1C,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC;AACnD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,MAAM,OAAO,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;AAC/B,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;AAC1J,IAAI,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;AAC/B,EAAE;AACF,EAAE,MAAM,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE;AACpC,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAC1C,IAAI,OAAO,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,IAAI;AACvD,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE;AACtC,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAC1C,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC;AACxD,IAAI,IAAI,CAAC,OAAO;AAChB,MAAM;AACN,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC;AAC3D,IAAI,IAAI,MAAM,KAAK,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,CAAC,EAAE;AAC/F,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,kDAAkD,CAAC,EAAE,GAAG,CAAC;AAC7G,IAAI;AACJ,IAAI,OAAO,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC;AAC/C,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAClC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,4BAA4B;AACxC,MAAM,SAAS;AACf,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE;AACrD,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,CAAC;AAC5D,EAAE;AACF,EAAE,MAAM,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE;AACtD,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,CAAC;AAC7D,EAAE;AACF,EAAE,MAAM,oBAAoB,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE;AAC3D,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAC1C,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC;AACnD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC5E,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC;AACxD,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,YAAY,EAAE;AAC3D,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,+BAA+B,CAAC,EAAE,GAAG,CAAC;AAC1F,IAAI;AACJ,IAAI,MAAM,CAAC,aAAa,GAAG,SAAS;AACpC,IAAI,MAAM,CAAC,cAAc,GAAG,SAAS;AACrC,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO;AAC3B,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/E,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAClC,EAAE;AACF,EAAE,MAAM,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE;AACvD,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAC1C,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC;AACnD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC5E,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC;AACxD,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,YAAY,EAAE;AAC3D,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,+BAA+B,CAAC,EAAE,GAAG,CAAC;AAC1F,IAAI;AACJ,IAAI,IAAI,OAAO,KAAK,MAAM;AAC1B,MAAM,MAAM,CAAC,aAAa,GAAG,SAAS;AACtC;AACA,MAAM,MAAM,CAAC,cAAc,GAAG,SAAS;AACvC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/E,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAClC,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE;AAC5B,MAAM,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7B,QAAQ,IAAI,EAAE,sBAAsB;AACpC,QAAQ,YAAY;AACpB,QAAQ,SAAS;AACjB,QAAQ,OAAO,EAAE,SAAS,CAAC,GAAG;AAC9B,OAAO,CAAC;AACR,IAAI;AACJ,EAAE;AACF;AACA,MAAM,OAAO,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACrC,MAAM,mBAAmB,CAAC;AAC1B,EAAE,kBAAkB;AACpB,EAAE,MAAM;AACR,EAAE,cAAc;AAChB,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE;AACtB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS;AACtB,MAAM,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;AAC5D,IAAI,OAAO,IAAI,mBAAmB,CAAC;AACnC,MAAM,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB;AAC3D,KAAK,CAAC;AACN,EAAE;AACF,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ;AACvC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,aAAa,EAAE;AACpD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,qBAAqB,CAAC,WAAW,EAAE;AACrC,IAAI,IAAI,CAAC,kBAAkB,GAAG,WAAW;AACzC,EAAE;AACF,EAAE,MAAM,OAAO,GAAG;AAClB,IAAI,OAAO,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC;AACvD,EAAE;AACF,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;AACvB,IAAI,MAAM,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;AAClD,EAAE;AACF,EAAE,MAAM,CAAC,CAAC,EAAE;AACZ,IAAI,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC;AAC5C,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE;AAC1B,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACpC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAC5B,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;AAC5E,IAAI;AACJ,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;AACrD,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC5B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,mBAAmB;AAC/B,MAAM,MAAM,EAAE,IAAI,CAAC,EAAE;AACrB,MAAM,YAAY,EAAE,IAAI,CAAC,YAAY;AACrC,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;AACnD,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACpC,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACjK,IAAI,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;AAC/B,EAAE;AACF,EAAE,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE;AAC1B,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACpC,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI;AAChC,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AACxC,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACpC,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;AACjF,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3B,MAAM,OAAO,IAAI;AACjB,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACjC,MAAM,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC;AAC1F,MAAM,IAAI,CAAC,MAAM;AACjB,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE;AACxB,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACpC,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7B,MAAM;AACN,IAAI,CAAC,CAAC,SAAS,GAAG,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AAC5D,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC5B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/F,EAAE;AACF,EAAE,MAAM,sBAAsB,CAAC,IAAI,EAAE,EAAE,EAAE;AACzC,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACpC,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7B,MAAM,OAAO,IAAI;AACjB,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS;AAC1D,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC;AACrB,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC5B,IAAI,OAAO,CAAC,CAAC,UAAU;AACvB,EAAE;AACF;AACA,MAAM,iBAAiB,GAAG,EAAE;AAC5B,MAAM,OAAO,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACrC,SAAS,QAAQ,CAAC,MAAM,EAAE;AAC1B,EAAE,OAAO;AACT,IAAI,MAAM;AACV,IAAI,mBAAmB,EAAE,EAAE;AAC3B,IAAI,kBAAkB,EAAE,EAAE;AAC1B,IAAI,UAAU,EAAE;AAChB,GAAG;AACH;AACA,SAAS,wBAAwB,CAAC,QAAQ,EAAE;AAC5C,EAAE,eAAe,WAAW,CAAC,MAAM,EAAE;AACrC,IAAI,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;AACxD,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;AAC3D,IAAI,IAAI,CAAC,GAAG;AACZ,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AACzE,IAAI,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE;AACxB,EAAE;AACF,EAAE,OAAO;AACT,IAAI,MAAM,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC1D,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;AACrD,QAAQ;AACR,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvC,MAAM,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC;AACzC,IAAI,CAAC;AACL,IAAI,MAAM,QAAQ,CAAC,MAAM,EAAE;AAC3B,MAAM,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/D,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,IAAI;AAC3D,IAAI,CAAC;AACL,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/D,MAAM,OAAO,KAAK;AAClB,IAAI,CAAC;AACL,IAAI,MAAM,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE;AACjD,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC;AACrD,MAAM,GAAG,CAAC,mBAAmB,GAAG,WAAW;AAC3C,MAAM,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC;AACzC,IAAI,CAAC;AACL,IAAI,MAAM,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE;AACjD,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC;AACrD,MAAM,IAAI,WAAW,KAAK,MAAM,EAAE;AAClC,QAAQ,OAAO,GAAG,CAAC,WAAW;AAC9B,MAAM,CAAC,MAAM;AACb,QAAQ,GAAG,CAAC,WAAW,GAAG,WAAW;AACrC,MAAM;AACN,MAAM,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC;AACzC,IAAI,CAAC;AACL,IAAI,MAAM,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE;AAC/C,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC;AACrD,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AAC1D,QAAQ,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC;AACjD,QAAQ,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC3C,MAAM;AACN,IAAI,CAAC;AACL,IAAI,MAAM,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE;AACjD,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC;AACrD,MAAM,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,YAAY,CAAC;AACvF,MAAM,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC;AACzC,IAAI,CAAC;AACL,IAAI,MAAM,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE;AACjC,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC;AACrD,MAAM,GAAG,CAAC,UAAU,GAAG;AACvB,QAAQ,GAAG;AACX,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,GAAG,CAAC,YAAY;AAC3E,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC;AACnC,MAAM,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC;AACzC,IAAI,CAAC;AACL,IAAI,MAAM,UAAU,CAAC,MAAM,EAAE;AAC7B,MAAM,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC1D,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;AACtC,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;AAChE,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;AACxC,QAAQ,MAAM,IAAI,aAAa,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC3E,MAAM;AACN,MAAM,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC;AACzC,IAAI;AACJ,GAAG;AACH;AACA,SAAS,SAAS,CAAC,CAAC,EAAE;AACtB,EAAE,OAAO;AACT,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM;AACpB,IAAI,WAAW,EAAE,CAAC,CAAC,WAAW;AAC9B,IAAI,kBAAkB,EAAE,CAAC,CAAC,kBAAkB,IAAI,EAAE;AAClD,IAAI,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI;AAChC,GAAG;AACH;AACA,MAAM,wBAAwB,CAAC;AAC/B,EAAE,IAAI;AACN,EAAE,WAAW,CAAC,gBAAgB,EAAE;AAChC,IAAI,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC,gBAAgB,CAAC;AAC1D,EAAE;AACF,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE;AACtB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS;AACtB,MAAM,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;AAC5D,IAAI,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AACnF,EAAE;AACF,EAAE,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE;AAChC,IAAI,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;AAClC,IAAI,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC9C,IAAI,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;AAClC,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE;AACnC,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACzC,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AACnC,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AACjE,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;AAC1C,IAAI,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;AAClC,IAAI,IAAI;AACR,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,EAAE;AACxC,QAAQ,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC;AACpE,MAAM;AACN,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG;AAChE,QAAQ,OAAO,WAAW;AAC1B,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE;AAClD,IAAI,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;AAClC,IAAI,IAAI;AACR,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC;AAC1D,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG;AAChE,QAAQ,OAAO,WAAW;AAC1B,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE;AACpD,IAAI,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;AAClC,IAAI,IAAI;AACR,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC;AAC5D,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG;AAChE,QAAQ,OAAO,WAAW;AAC1B,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;AACpC,IAAI,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;AAClC,IAAI,IAAI;AACR,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;AAC5C,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG;AAChE,QAAQ,OAAO,WAAW;AAC1B,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,EAAE;AACF;AACA,SAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE;AACxC,EAAE,IAAI,GAAG,CAAC,MAAM;AAChB,IAAI;AACJ,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;AAC3B,IAAI;AACJ,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAC1C,IAAI;AACJ,EAAE,MAAM,IAAI,aAAa,CAAC,iDAAiD,EAAE,GAAG,CAAC;AACjF;AACA,MAAM,4BAA4B,CAAC;AACnC,EAAE,IAAI;AACN,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE;AACtB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS;AACtB,MAAM,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;AAC5D,IAAI,OAAO,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AACvF,EAAE;AACF,EAAE,WAAW,CAAC,gBAAgB,EAAE;AAChC,IAAI,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC,gBAAgB,CAAC;AAC1D,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE;AAC5B,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC;AAChC,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChD,IAAI,OAAO,GAAG,EAAE,mBAAmB,IAAI,EAAE;AACzC,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE;AAClC,IAAI,kBAAkB,CAAC,GAAG,CAAC;AAC3B,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACzC,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AACnC,IAAI,MAAM,GAAG,mBAAmB,IAAI,GAAG,EAAE;AACzC,IAAI,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;AACzB,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9B,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,mBAAmB,IAAI,EAAE,CAAC;AACtD,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;AACtC,IAAI,aAAa,CAAC,GAAG,CAAC;AACtB,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACnD,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,OAAO,WAAW;AACxB,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AAC1E,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AAC9D,IAAI,IAAI,QAAQ,IAAI,CAAC,WAAW,EAAE;AAClC,MAAM,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACxD,MAAM,IAAI,MAAM,KAAK,CAAC;AACtB,QAAQ,OAAO,YAAY;AAC3B,IAAI;AACJ,IAAI,IAAI;AACR,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;AACjE,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG;AAChE,QAAQ,OAAO,WAAW;AAC1B,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,gBAAgB,CAAC,IAAI,EAAE;AAC/B,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACzC,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAC5E,EAAE;AACF,EAAE,MAAM,4BAA4B,CAAC,IAAI,EAAE,aAAa,EAAE;AAC1D,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;AAC/C,EAAE;AACF,EAAE,MAAM,gBAAgB,CAAC,aAAa,EAAE;AACxC,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACzC,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM;AACnH,EAAE;AACF;AACA,SAAS,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE;AACtC,EAAE,IAAI,GAAG,CAAC,MAAM;AAChB,IAAI;AACJ,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;AAC3B,IAAI;AACJ,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAC1C,IAAI;AACJ,EAAE,MAAM,IAAI,aAAa,CAAC,mDAAmD,EAAE,GAAG,CAAC;AACnF;AACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,EAAE,IAAI,GAAG,CAAC,MAAM;AAChB,IAAI;AACJ,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAC1C,IAAI;AACJ,EAAE,MAAM,IAAI,aAAa,CAAC,oCAAoC,EAAE,GAAG,CAAC;AACpE;AACA,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACjC,EAAE,IAAI,GAAG,CAAC,MAAM;AAChB,IAAI;AACJ,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAC1C,IAAI;AACJ,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,uBAAuB,CAAC;AACjD,IAAI;AACJ,EAAE,MAAM,IAAI,aAAa,CAAC,6DAA6D,EAAE,GAAG,CAAC;AAC7F;AACA,MAAM,iBAAiB,CAAC;AACxB,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,WAAW;AACb,EAAE,aAAa;AACf,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,WAAW;AACb,EAAE,WAAW;AACb,EAAE,qBAAqB;AACvB,EAAE,QAAQ;AACV,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE;AAChC,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;AAC3B,IAAI,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;AACnC,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW;AACzC,IAAI,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa;AAC7C,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;AACjC,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU;AACvC,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW;AACzC,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW;AACzC,IAAI,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB;AAC7D,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC5B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE;AACjC,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;AACtC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;AACpC,IAAI,IAAI;AACR,MAAM,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;AAC5C,IAAI,CAAC,CAAC,MAAM;AACZ,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,aAAa,EAAE,EAAE;AACpD,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS;AACtB,MAAM,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;AAC5D,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS;AAClC,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAClE,IAAI,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,QAAQ,CAAC;AACpD,IAAI,MAAM,qBAAqB,GAAG,8BAA8B,CAAC,OAAO,CAAC,GAAG,CAAC;AAC7E,IAAI,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;AACzD,IAAI,MAAM,aAAa,GAAG,uBAAuB,CAAC,OAAO,CAAC,GAAG,CAAC;AAC9D,IAAI,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC;AAC7F,IAAI,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;AAC1E,IAAI,MAAM,UAAU,GAAG,IAAI,mBAAmB,CAAC;AAC/C,MAAM,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AACvD,MAAM;AACN,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC;AACnC,MAAM,MAAM;AACZ,MAAM,OAAO;AACb,MAAM,aAAa;AACnB,MAAM,MAAM,EAAE,qBAAqB;AACnC,MAAM;AACN,KAAK,CAAC;AACN,IAAI,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAC5C,IAAI,UAAU,CAAC,qBAAqB,CAAC,WAAW,CAAC;AACjD,IAAI,MAAM,QAAQ,GAAG,wBAAwB,CAAC,gBAAgB,CAAC;AAC/D,IAAI,OAAO,IAAI,iBAAiB,CAAC;AACjC,MAAM,IAAI;AACV,MAAM,QAAQ;AACd,MAAM,WAAW;AACjB,MAAM,aAAa;AACnB,MAAM,OAAO;AACb,MAAM,UAAU;AAChB,MAAM,WAAW,EAAE,IAAI,wBAAwB,CAAC,gBAAgB,CAAC;AACjE,MAAM,WAAW,EAAE,IAAI,4BAA4B,CAAC,gBAAgB,CAAC;AACrE,MAAM;AACN,KAAK,EAAE,QAAQ,CAAC;AAChB,EAAE;AACF;AACA,MAAM,oBAAoB,CAAC;AAC3B,EAAE,QAAQ;AACV,EAAE,aAAa;AACf,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE;AACtB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS;AACtB,MAAM,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;AAC5D,IAAI,OAAO,IAAI,oBAAoB,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC;AAChE,EAAE;AACF,EAAE,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,YAAY,EAAE;AACtD,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC5B,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa;AACtC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,WAAW,EAAE;AAC3B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5C,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC;AAChD,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5D,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC,CAAC;AAC1D,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,MAAM,GAAG,CAAC,WAAW,EAAE;AACzB,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AACrE,MAAM,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC;AACnC,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;AAC/B,QAAQ,OAAO,IAAI;AACnB,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;AAC5C,IAAI,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC;AACnF,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;AACtD,IAAI,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC/D,IAAI,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9D,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,WAAW,EAAE;AAC5B,IAAI,IAAI;AACR,MAAM,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AACpD,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;AAC/B,QAAQ,MAAM,GAAG;AACjB,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,MAAM,EAAE;AAC7B,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC7C,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC3D,EAAE;AACF,EAAE,YAAY,CAAC,WAAW,EAAE;AAC5B,IAAI,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACjD,EAAE;AACF;AACA,MAAM,uBAAuB,CAAC;AAC9B,EAAE,MAAM;AACR,EAAE,YAAY;AACd,EAAE,aAAa;AACf,EAAE,aAAa;AACf,EAAE,gBAAgB;AAClB,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE;AACtB,IAAI,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY;AACxC,IAAI,MAAM,cAAc,GAAG,GAAG,CAAC,yBAAyB;AACxD,IAAI,IAAI,CAAC,WAAW;AACpB,MAAM,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AAC/D,IAAI,IAAI,CAAC,cAAc;AACvB,MAAM,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;AAC5E,IAAI,OAAO,IAAI,uBAAuB,CAAC;AACvC,MAAM,WAAW;AACjB,MAAM,cAAc;AACpB,MAAM,YAAY,EAAE,GAAG,CAAC,sBAAsB;AAC9C,MAAM,aAAa,EAAE,GAAG,CAAC,uBAAuB;AAChD,MAAM,gBAAgB,EAAE,GAAG,CAAC;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,EAAE;AAC1E,MAAM,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK;AAC5D,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,cAAc;AAC7D,IAAI,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,eAAe;AAChE,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,0BAA0B,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACjH,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACxF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,CAAC,WAAW,EAAE;AACzB,IAAI,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY;AACpF,EAAE;AACF,EAAE,MAAM,GAAG,CAAC,WAAW,EAAE;AACzB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC9C,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;AACxF,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE;AACrC,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5D,QAAQ,OAAO,IAAI;AACnB,MAAM,MAAM,KAAK;AACjB,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AAC3C,IAAI,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC;AACjC,EAAE;AACF,EAAE,MAAM,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;AAC5C,IAAI,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC;AACnF,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;AAClD,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE;AACtG,MAAM,WAAW,EAAE,UAAU,CAAC,WAAW;AACzC,MAAM,MAAM,EAAE;AACd,KAAK,CAAC;AACN,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,KAAK;AACjB,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,WAAW,EAAE;AAC5B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC9C,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;AAClF,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,KAAK;AACjB,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,MAAM,EAAE;AAC7B,IAAI,MAAM,OAAO,CAAC,GAAG,CAAC;AACtB,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;AAC1D,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM;AAC1D,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE;AAC7C,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AACjD,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC;AAC3D,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACzB,MAAM;AACN,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,GAAG,EAAE;AAC/C,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAC1C,MAAM,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5E,MAAM,IAAI,KAAK;AACf,QAAQ,MAAM,KAAK;AACnB,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE;AACpC,IAAI,MAAM,GAAG,GAAG,EAAE;AAClB,IAAI,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC;AAC1B,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE;AAC7B,MAAM,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;AAC/E,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;AAC9C,OAAO,CAAC;AACR,MAAM,IAAI,KAAK;AACf,QAAQ,MAAM,KAAK;AACnB,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE;AACtC,QAAQ,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI;AAC9D,QAAQ,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE;AAC/B,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAQ,CAAC,MAAM;AACf,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,YAAY,CAAC,WAAW,EAAE;AAC5B,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE;AAC3D,MAAM,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACnD,IAAI;AACJ,IAAI,OAAO,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACpD,EAAE;AACF;AACA,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,EAAE,IAAI,CAAC,MAAM;AACb,IAAI,OAAO,CAAC;AACZ,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;AAChC,EAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7C;AACA,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB;AACA,SAAS,OAAO,CAAC,IAAI,EAAE;AACvB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,kBAAkB,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC;AACxF,EAAE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;AACzC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE;AAC9C;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE;AAC/D,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,GAAG,aAAa;AAC7C,EAAE,IAAI,UAAU,IAAI,IAAI,EAAE;AAC1B,IAAI,OAAO,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,MAAM;AAClE,EAAE;AACF,EAAE,OAAO,aAAa,IAAI,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,MAAM;AACvE;AACA,SAAS,WAAW,CAAC,OAAO,EAAE;AAC9B,EAAE,QAAQ,OAAO;AACjB,IAAI,KAAK,MAAM;AACf,MAAM,OAAO,MAAM;AACnB,IAAI,KAAK,WAAW;AACpB,MAAM,OAAO,YAAY;AACzB,IAAI,KAAK,WAAW;AACpB,IAAI;AACJ,MAAM,OAAO,YAAY;AACzB;AACA;AACA,MAAM,gBAAgB,CAAC;AACvB,EAAE,OAAO;AACT,EAAE,MAAM;AACR,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,aAAa,EAAE,EAAE;AACrD,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;AACxB,EAAE;AACF,EAAE,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;AAC5B,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;AAC/B,IAAI,MAAM,SAAS,GAAG,IAAI,EAAE,QAAQ,IAAI,MAAM;AAC9C,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,KAAK,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;AAC3O,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC;AAC5C,IAAI,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AACjF,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE;AACxB,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE;AACzI,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI;AACvC,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;AAChC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE;AAC7I,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI;AACvC,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE;AAC5B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/C,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrE,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;AAC3E,MAAM,MAAM,EAAE,GAAG,CAAC,EAAE;AACpB,MAAM,OAAO,EAAE,GAAG,CAAC,OAAO;AAC1B,MAAM,IAAI,EAAE,OAAO;AACnB,MAAM,WAAW,EAAE,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC;AACrD,MAAM,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AAC3D,MAAM,UAAU,EAAE;AAClB,KAAK,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;AACxC,IAAI,IAAI,WAAW;AACnB,MAAM,MAAM,UAAU,CAAC,WAAW,CAAC;AACnC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3F,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE;AAClC,IAAI,MAAM,GAAG,GAAG,EAAE;AAClB,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;AAC7B,MAAM,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AAC3B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;AAC7B,MAAM,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AAC3B,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC;AACrC,MAAM;AACN,IAAI,IAAI,GAAG,CAAC,MAAM;AAClB,MAAM,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM;AACjC,IAAI,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACxI,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAClC,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC3D,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE;AAC3B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/C,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC;AAClD,IAAI,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC;AACxC,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACxI,IAAI,IAAI,MAAM;AACd,MAAM,MAAM,UAAU,CAAC,MAAM,CAAC;AAC9B,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AACxC,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC3D,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;AACtH,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;AACzI,IAAI,IAAI,YAAY;AACpB,MAAM,MAAM,UAAU,CAAC,YAAY,CAAC;AACpC,IAAI,MAAM,UAAU,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AAC3D,IAAI,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;AACrH,IAAI,IAAI,OAAO;AACf,MAAM,MAAM,UAAU,CAAC,OAAO,CAAC;AAC/B,IAAI,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,MAAM,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;AACxI,MAAM,IAAI,KAAK;AACf,QAAQ,MAAM,UAAU,CAAC,KAAK,CAAC;AAC/B,MAAM,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;AACrI,MAAM,IAAI,MAAM;AAChB,QAAQ,MAAM,UAAU,CAAC,MAAM,CAAC;AAChC,IAAI;AACJ,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;AACpF,IAAI,IAAI,MAAM;AACd,MAAM,MAAM,UAAU,CAAC,MAAM,CAAC;AAC9B,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvG,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;AACjG,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC;AACpH,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AACvF,EAAE;AACF;AACA;AACA;AACA,EAAE,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;AACzC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;AAC/B,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,IAAI,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;AACxQ,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,cAAc,CAAC;AAClD,IAAI,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AACjF,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;AACzC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE;AAC7K,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;AAC7C,EAAE;AACF,EAAE,MAAM,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE;AACxC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACxP,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,IAAI,CAAC,IAAI;AACb,MAAM,OAAO,IAAI;AACjB,IAAI,MAAM,GAAG,GAAG,IAAI;AACpB,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG;AAChE,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,OAAO,IAAI;AACjB,IAAI,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,GAAG,GAAG;AAC5C,IAAI,OAAO;AACX,MAAM,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC;AAC3B,MAAM,MAAM,EAAE,cAAc,CAAC,SAAS;AACtC,KAAK;AACL,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE;AAClC,IAAI,MAAM,GAAG,GAAG;AAChB,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;AAC5B,MAAM,UAAU,EAAE;AAClB,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,MAAM;AAClB,MAAM,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM;AACjC,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;AAC1H,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,kBAAkB;AAC9B,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK;AACzB,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM;AAC3B,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;AACtD,IAAI,MAAM,GAAG,GAAG;AAChB,MAAM,IAAI;AACV,MAAM,WAAW,EAAE,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,MAAM;AAClB,MAAM,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM;AACjC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AACjL,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAClC,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AACtE,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,yBAAyB;AACrC,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,IAAI;AACV,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,0BAA0B,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE;AACpE,IAAI,MAAM,GAAG,GAAG,EAAE,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE;AACjD,IAAI,IAAI,GAAG,CAAC,MAAM;AAClB,MAAM,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM;AACjC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AACjL,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAClC,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AACtE,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,gCAAgC;AAC5C,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC;AACnC,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;AAC5C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/C,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC;AAClD,IAAI,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC;AACxC,IAAI,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;AACzI,IAAI,IAAI,SAAS;AACjB,MAAM,MAAM,UAAU,CAAC,SAAS,CAAC;AACjC,IAAI,MAAM,UAAU,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AAC3D,IAAI,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,MAAM,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;AAChK,MAAM,IAAI,OAAO;AACjB,QAAQ,MAAM,UAAU,CAAC,OAAO,CAAC;AACjC,IAAI;AACJ,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;AACxI,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,oBAAoB;AAChC,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF;AACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,EAAE,MAAM,GAAG,GAAG;AACd,IAAI,UAAU,EAAE,KAAK,CAAC,SAAS;AAC/B,IAAI,UAAU,EAAE,KAAK,CAAC;AACtB,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,SAAS;AACrB,IAAI,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS;AACpC,EAAE,OAAO,GAAG;AACZ;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,EAAE,OAAO;AACT,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE;AACd,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI;AAClB,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI;AAClB,IAAI,OAAO,EAAE,GAAG,CAAC,QAAQ;AACzB,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,QAAQ;AAC7C,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,QAAQ;AAC7C,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI;AACjC,GAAG;AACH;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,EAAE,OAAO;AACT,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE;AACd,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI;AAClB,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI;AAClB,IAAI,QAAQ,EAAE,GAAG,CAAC,OAAO;AACzB,IAAI,UAAU,EAAE,GAAG,CAAC,SAAS;AAC7B,IAAI,UAAU,EAAE,GAAG,CAAC,SAAS;AAC7B,IAAI,UAAU,EAAE,GAAG,CAAC,SAAS;AAC7B,IAAI,UAAU,EAAE,GAAG,CAAC,SAAS;AAC7B,IAAI,UAAU,EAAE,GAAG,CAAC,SAAS,IAAI;AACjC,GAAG;AACH;AACA,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,GAAG,CAAC,MAAM;AACrB,IAAI,MAAM,EAAE,GAAG,CAAC,OAAO;AACvB,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI;AAClB,IAAI,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;AACtC,IAAI,QAAQ,EAAE,GAAG,CAAC,SAAS;AAC3B,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,SAAS;AAC9C,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,OAAO;AAC5C,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI;AACjC,GAAG;AACH;AACA,SAAS,WAAW,CAAC,CAAC,EAAE;AACxB,EAAE,OAAO;AACT,IAAI,MAAM,EAAE,CAAC,CAAC,KAAK;AACnB,IAAI,OAAO,EAAE,CAAC,CAAC,MAAM;AACrB,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI;AAChB,IAAI,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;AACpC,IAAI,SAAS,EAAE,CAAC,CAAC;AACjB,GAAG;AACH;AACA,SAAS,UAAU,CAAC,CAAC,EAAE;AACvB,EAAE,MAAM,EAAE,GAAG,CAAC;AACd,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO,EAAE;AAC5B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,kBAAkB,EAAE,GAAG,CAAC;AACnE,EAAE;AACF,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO,EAAE;AAC5B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,uBAAuB,EAAE,GAAG,CAAC;AACxE,EAAE;AACF,EAAE,IAAI,CAAC,YAAY,KAAK;AACxB,IAAI,OAAO,CAAC;AACZ,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAClC,IAAI,MAAM,GAAG,GAAG,CAAC;AACjB,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,wBAAwB;AAClF,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAClE,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;AAC3B,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B;AACA,MAAM,oBAAoB,CAAC;AAC3B,EAAE,OAAO;AACT,EAAE,MAAM;AACR,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,aAAa,EAAE,EAAE;AACrD,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;AACxB,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;AACvC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;AAC/B,IAAI,MAAM,SAAS,GAAG,IAAI,EAAE,QAAQ,IAAI,MAAM;AAC9C,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,KAAK,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;AACnQ,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC;AAChD,IAAI,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AACjF,EAAE;AACF,EAAE,MAAM,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE;AAC5B,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE;AAC7I,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI;AAC3C,EAAE;AACF,EAAE,MAAM,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;AAC3C,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE;AACrK,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI;AAC3C,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE;AACpC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/C,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACjF,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC;AAC/E,MAAM,UAAU,EAAE,OAAO,CAAC,EAAE;AAC5B,MAAM,OAAO,EAAE,OAAO,CAAC,OAAO;AAC9B,MAAM,IAAI,EAAE,OAAO;AACnB,MAAM,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AAC3D,MAAM,UAAU,EAAE;AAClB,KAAK,EAAE,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC;AAC5C,IAAI,IAAI,WAAW;AACnB,MAAM,MAAM,UAAU,CAAC,WAAW,CAAC;AACnC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,iBAAiB;AAC7B,MAAM,SAAS,EAAE,OAAO,CAAC,EAAE;AAC3B,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK;AAC1B,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE;AACtC,IAAI,MAAM,GAAG,GAAG,EAAE;AAClB,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;AAC7B,MAAM,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AAC3B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;AAC7B,MAAM,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AAC3B,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM;AACpC,MAAM,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;AACzC,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM;AACnC,MAAM,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU;AACvC,IAAI,IAAI,KAAK,CAAC,gBAAgB,KAAK,MAAM;AACzC,MAAM,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,gBAAgB;AACtD,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC;AACrC,MAAM;AACN,IAAI,IAAI,GAAG,CAAC,MAAM;AAClB,MAAM,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM;AACjC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAC5I,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAClC,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC/D,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE;AAC/B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/C,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC;AAClD,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;AACtC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3H,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAClC,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC/D,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;AAC9H,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;AAC3H,IAAI,IAAI,MAAM;AACd,MAAM,MAAM,UAAU,CAAC,MAAM,CAAC;AAC9B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/F,EAAE;AACF;AACA;AACA;AACA,EAAE,MAAM,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;AACjD,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;AAC/B,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,IAAI,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;AACpR,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,kBAAkB,CAAC;AACtD,IAAI,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AACjF,EAAE;AACF,EAAE,MAAM,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE;AACjD,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE;AACzL,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI;AACjD,EAAE;AACF,EAAE,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE;AACtC,IAAI,MAAM,GAAG,GAAG;AAChB,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC;AACnC,MAAM,UAAU,EAAE;AAClB,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,MAAM;AAClB,MAAM,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM;AACjC,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC;AAClI,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,sBAAsB;AAClC,MAAM,SAAS,EAAE,MAAM,CAAC,SAAS;AACjC,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM;AAC3B,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,uBAAuB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;AAC9D,IAAI,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE;AACxB,IAAI,IAAI,GAAG,CAAC,MAAM;AAClB,MAAM,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM;AACjC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AAC7L,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAClC,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC1E,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,6BAA6B;AACzC,MAAM,SAAS;AACf,MAAM,MAAM;AACZ,MAAM,IAAI;AACV,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE;AACpD,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC;AAClD,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;AACnL,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,wBAAwB;AACpC,MAAM,SAAS;AACf,MAAM,MAAM;AACZ,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF;AACA,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,EAAE,OAAO;AACT,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE;AACd,IAAI,KAAK,EAAE,GAAG,CAAC,MAAM;AACrB,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI;AAClB,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI;AAClB,IAAI,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,MAAM;AAC1C,IAAI,UAAU,EAAE,GAAG,CAAC,UAAU;AAC9B,IAAI,OAAO,EAAE,GAAG,CAAC,QAAQ;AACzB,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,QAAQ;AAC7C,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,QAAQ;AAC7C,IAAI,gBAAgB,EAAE,GAAG,CAAC,mBAAmB,IAAI,KAAK;AACtD,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI;AACjC,GAAG;AACH;AACA,SAAS,YAAY,CAAC,CAAC,EAAE;AACzB,EAAE,OAAO;AACT,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE;AACZ,IAAI,MAAM,EAAE,CAAC,CAAC,KAAK;AACnB,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI;AAChB,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI;AAChB,IAAI,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;AACtC,IAAI,UAAU,EAAE,CAAC,CAAC,UAAU;AAC5B,IAAI,QAAQ,EAAE,CAAC,CAAC,OAAO;AACvB,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,mBAAmB,EAAE,CAAC,CAAC,gBAAgB;AAC3C,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS,IAAI;AAC/B,GAAG;AACH;AACA,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACjC,EAAE,OAAO;AACT,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,MAAM,EAAE,GAAG,CAAC,OAAO;AACvB,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI;AAClB,IAAI,QAAQ,EAAE,GAAG,CAAC,SAAS;AAC3B,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,SAAS;AAC9C,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,OAAO;AAC5C,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI;AACjC,GAAG;AACH;AACA,SAAS,kBAAkB,CAAC,CAAC,EAAE;AAC/B,EAAE,OAAO;AACT,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,OAAO,EAAE,CAAC,CAAC,MAAM;AACrB,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI;AAChB,IAAI,SAAS,EAAE,CAAC,CAAC;AACjB,GAAG;AACH;AACA,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,EAAE,MAAM,GAAG,GAAG;AACd,IAAI,UAAU,EAAE,KAAK,CAAC,SAAS;AAC/B,IAAI,UAAU,EAAE,KAAK,CAAC;AACtB,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,SAAS;AACrB,IAAI,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS;AACpC,EAAE,OAAO,GAAG;AACZ;AACA,SAAS,UAAU,CAAC,CAAC,EAAE;AACvB,EAAE,MAAM,EAAE,GAAG,CAAC;AACd,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO;AAC1B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,kBAAkB,EAAE,GAAG,CAAC;AACnE,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO;AAC1B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,uBAAuB,EAAE,GAAG,CAAC;AACxE,EAAE,IAAI,CAAC,YAAY,KAAK;AACxB,IAAI,OAAO,CAAC;AACZ,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAClC,IAAI,MAAM,GAAG,GAAG,CAAC;AACjB,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,wBAAwB;AAClF,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAClE,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;AAC3B,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B;AACA,MAAM,uBAAuB,CAAC;AAC9B,EAAE,OAAO;AACT,EAAE,MAAM;AACR,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,aAAa,EAAE,EAAE;AACrD,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;AACxB,EAAE;AACF;AACA;AACA;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;AACxB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;AAC1C,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;AAC5C,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC;AACjD,EAAE;AACF,EAAE,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE;AAC9B,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC;AAC5E,EAAE;AACF,EAAE,MAAM,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;AACnC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;AAC/B,IAAI,MAAM,SAAS,GAAG,IAAI,EAAE,QAAQ,IAAI,MAAM;AAC9C,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;AACvH,IAAI,IAAI,MAAM,EAAE,SAAS;AACzB,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC;AACtD,IAAI,IAAI,MAAM,EAAE,UAAU,EAAE;AAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,+CAA+C,EAAE;AACvH,QAAQ,KAAK,EAAE;AACf,OAAO,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,oBAAoB,EAAE,QAAQ,CAAC;AAClE,MAAM,IAAI,MAAM,CAAC,KAAK;AACtB,QAAQ,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC;AACxD,MAAM,IAAI,MAAM,CAAC,SAAS;AAC1B,QAAQ,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC;AACxD,IAAI;AACJ,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;AAChC,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC/C,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,QAAQ,GAAG,EAAE;AACzB,MAAM,IAAI,CAAC,IAAI,EAAE,cAAc;AAC/B,QAAQ,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AAChC,MAAM,IAAI,CAAC,IAAI,EAAE,eAAe;AAChC,QAAQ,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;AACjC,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE;AAC3B,QAAQ,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,MAAM;AACN,IAAI;AACJ,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,KAAK,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7H,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK;AAC9C,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC;AAC/C,IAAI,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AACjF,EAAE;AACF,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE;AACvB,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE;AACpJ,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI;AAC1C,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE;AAC5B,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACxG,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,oBAAoB;AAChC,MAAM,YAAY,EAAE,MAAM,CAAC,IAAI;AAC/B,MAAM,SAAS,EAAE,MAAM,CAAC,SAAS;AACjC,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AACjC,IAAI,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC;AACjC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC;AACrC,MAAM;AACN,IAAI,IAAI,GAAG,CAAC,MAAM;AAClB,MAAM,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM;AACjC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACrJ,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAClC,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AACpE,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE;AAC1B,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC;AAClD,IAAI,MAAM,GAAG,GAAG;AAChB,MAAM,UAAU,EAAE,KAAK,CAAC,SAAS;AACjC,MAAM,UAAU,EAAE,KAAK,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,SAAS;AACvB,MAAM,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS;AACtC,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;AAChI,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,oBAAoB;AAChC,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE;AACvC,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,qBAAqB,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAChG,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,EAAE;AACF;AACA;AACA;AACA,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE;AACpC,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAClH,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,4BAA4B;AACxC,MAAM,SAAS,EAAE,OAAO,CAAC,EAAE;AAC3B,MAAM,YAAY,EAAE,OAAO,CAAC,YAAY;AACxC,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE;AAC9C,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;AAC/B,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;AAC/O,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC;AAChD,IAAI,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AACjF,EAAE;AACF,EAAE,MAAM,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE;AACnC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,WAAW,EAAE;AACxI,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI;AAC3C,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE;AACtC,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;AACjH,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,4BAA4B;AACxC,MAAM,SAAS;AACf,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE;AACrD,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,CAAC;AAC9E,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,sBAAsB;AAClC,MAAM,YAAY;AAClB,MAAM,SAAS;AACf,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE;AACtD,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,CAAC;AAC/E,EAAE;AACF,EAAE,MAAM,oBAAoB,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE;AAC3D,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/C,IAAI,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,WAAW,EAAE;AACrJ,IAAI,IAAI,MAAM;AACd,MAAM,MAAM,UAAU,CAAC,MAAM,CAAC;AAC9B,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,eAAe,KAAK,YAAY,EAAE;AAC9D,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,+BAA+B,CAAC,EAAE,GAAG,CAAC;AAC1F,IAAI;AACJ,IAAI,MAAM,GAAG,GAAG;AAChB,MAAM,eAAe,EAAE,SAAS;AAChC,MAAM,gBAAgB,EAAE,SAAS;AACjC,MAAM,MAAM,EAAE;AACd,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,MAAM;AAClB,MAAM,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM;AACjC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACvI,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC5E,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE;AAC7D,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/C,IAAI,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,WAAW,EAAE;AACrJ,IAAI,IAAI,MAAM;AACd,MAAM,MAAM,UAAU,CAAC,MAAM,CAAC;AAC9B,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,eAAe,KAAK,YAAY,EAAE;AAC9D,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,+BAA+B,CAAC,EAAE,GAAG,CAAC;AAC1F,IAAI;AACJ,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,GAAG,SAAS,EAAE;AACvC,IAAI,IAAI,GAAG,CAAC,MAAM;AAClB,MAAM,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM;AACjC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACvI,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC5E,IAAI;AACJ,EAAE;AACF;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI;AAClB,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,OAAO,EAAE,GAAG,CAAC,QAAQ;AACzB,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,QAAQ;AAC7C,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,QAAQ;AAC7C,IAAI,aAAa,EAAE,GAAG,CAAC,eAAe;AACtC,IAAI,cAAc,EAAE,GAAG,CAAC,gBAAgB;AACxC,IAAI,eAAe,EAAE,GAAG,CAAC,iBAAiB,IAAI,MAAM;AACpD,IAAI,WAAW,EAAE,GAAG,CAAC,YAAY;AACjC,IAAI,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,MAAM;AAC1C,IAAI,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,MAAM;AACpC,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,MAAM;AAC5B,IAAI,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,MAAM;AACzC,IAAI,MAAM,EAAE,GAAG,CAAC,MAAM;AACtB,IAAI,UAAU,EAAE,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS;AACzF,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI;AACjC,GAAG;AACH;AACA,SAAS,WAAW,CAAC,CAAC,EAAE;AACxB,EAAE,MAAM,GAAG,GAAG;AACd,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI;AAChB,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,QAAQ,EAAE,CAAC,CAAC,OAAO;AACvB,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,eAAe,EAAE,CAAC,CAAC,aAAa;AACpC,IAAI,gBAAgB,EAAE,CAAC,CAAC,cAAc;AACtC,IAAI,iBAAiB,EAAE,CAAC,CAAC,eAAe,IAAI,IAAI;AAChD,IAAI,YAAY,EAAE,CAAC,CAAC,WAAW;AAC/B,IAAI,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;AACtC,IAAI,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;AAChC,IAAI,WAAW,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;AACrC,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM;AACpB,IAAI,SAAS,EAAE,CAAC,CAAC,UAAU;AAC3B,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS,IAAI;AAC/B,GAAG;AACH,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;AACvB,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI;AACrB,EAAE,OAAO,GAAG;AACZ;AACA,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,EAAE,MAAM,GAAG,GAAG,EAAE;AAChB,EAAE,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM;AAClC,IAAI,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW;AACxC,EAAE,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM;AAClC,IAAI,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;AACvC,EAAE,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM;AAC/B,IAAI,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ;AACjC,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;AAC3B,IAAI,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AACzB,EAAE,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM;AACjC,IAAI,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU;AACtC,EAAE,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM;AAChC,IAAI,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS;AACpC,EAAE,IAAI,KAAK,CAAC,eAAe,KAAK,MAAM;AACtC,IAAI,GAAG,CAAC,iBAAiB,GAAG,KAAK,CAAC,eAAe;AACjD,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;AAC7B,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;AAC7B,EAAE,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM;AAC9B,IAAI,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO;AAChC,EAAE,OAAO,GAAG;AACZ;AACA,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,EAAE,OAAO;AACT,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE;AACd,IAAI,YAAY,EAAE,GAAG,CAAC,eAAe;AACrC,IAAI,aAAa,EAAE,GAAG,CAAC,cAAc;AACrC,IAAI,OAAO,EAAE,GAAG,CAAC,QAAQ;AACzB,IAAI,OAAO,EAAE,GAAG,CAAC,QAAQ;AACzB,IAAI,gBAAgB,EAAE,GAAG,CAAC,iBAAiB,IAAI,MAAM;AACrD,IAAI,UAAU,EAAE,GAAG,CAAC,WAAW;AAC/B,IAAI,UAAU,EAAE,GAAG,CAAC,WAAW;AAC/B,IAAI,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI;AACnC,GAAG;AACH;AACA,SAAS,YAAY,CAAC,CAAC,EAAE;AACzB,EAAE,MAAM,GAAG,GAAG;AACd,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE;AACZ,IAAI,eAAe,EAAE,CAAC,CAAC,YAAY;AACnC,IAAI,cAAc,EAAE,CAAC,CAAC,aAAa;AACnC,IAAI,QAAQ,EAAE,CAAC,CAAC,OAAO;AACvB,IAAI,QAAQ,EAAE,CAAC,CAAC,OAAO;AACvB,IAAI,iBAAiB,EAAE,CAAC,CAAC,gBAAgB,IAAI,IAAI;AACjD,IAAI,WAAW,EAAE,CAAC,CAAC,UAAU;AAC7B,IAAI,WAAW,EAAE,CAAC,CAAC;AACnB,GAAG;AACH,EAAE,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM;AAC7B,IAAI,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,UAAU;AAClC,EAAE,OAAO,GAAG;AACZ;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE;AACxC,EAAE,QAAQ,OAAO;AACjB,IAAI,KAAK,MAAM;AACf,MAAM,OAAO,cAAc;AAC3B,IAAI,KAAK,YAAY;AACrB,MAAM,OAAO,WAAW;AACxB,IAAI,KAAK,WAAW;AACpB,MAAM,OAAO,YAAY;AACzB,IAAI,KAAK,WAAW;AACpB,IAAI;AACJ,MAAM,OAAO,YAAY;AACzB;AACA;AACA,SAAS,UAAU,CAAC,CAAC,EAAE;AACvB,EAAE,MAAM,EAAE,GAAG,CAAC;AACd,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO;AAC1B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,kBAAkB,EAAE,GAAG,CAAC;AACnE,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO;AAC1B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,uBAAuB,EAAE,GAAG,CAAC;AACxE,EAAE,IAAI,CAAC,YAAY,KAAK;AACxB,IAAI,OAAO,CAAC;AACZ,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAClC,IAAI,MAAM,GAAG,GAAG,CAAC;AACjB,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,wBAAwB;AAClF,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAClE,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;AAC3B,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B;AACA,MAAM,mBAAmB,CAAC;AAC1B,EAAE,OAAO;AACT,EAAE,MAAM;AACR,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,aAAa,EAAE,EAAE;AACrD,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;AACxB,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE;AAC5B,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACpG,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,gBAAgB;AAC5B,MAAM,QAAQ,EAAE,MAAM,CAAC,EAAE;AACzB,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK;AACzB,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK;AACzB,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE;AACvC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,0BAA0B,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;AAChH,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;AACpD,IAAI,OAAO,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI;AACxC,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;AACpC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;AAC/B,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,IAAI,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;AAC9O,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC;AAC/C,IAAI,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AACjF,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE;AACtC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AACrO,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,GAAG;AACZ,MAAM;AACN,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,iBAAiB;AAC7B,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,KAAK,EAAE,GAAG,CAAC,MAAM;AACvB,MAAM,MAAM;AACZ,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE;AACxB,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC7I,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,GAAG;AACZ,MAAM;AACN,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,gBAAgB;AAC5B,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,KAAK,EAAE,GAAG,CAAC,MAAM;AACvB,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;AAChC,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrG,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,EAAE;AACF;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,OAAO;AACT,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE;AACd,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,KAAK,EAAE,GAAG,CAAC,KAAK;AACpB,IAAI,KAAK,EAAE,GAAG,CAAC,MAAM;AACrB,IAAI,OAAO,EAAE,GAAG,CAAC,QAAQ;AACzB,IAAI,cAAc,EAAE,GAAG,CAAC,eAAe;AACvC,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,MAAM;AACzC,IAAI,gBAAgB,EAAE,GAAG,CAAC,mBAAmB,IAAI;AACjD,GAAG;AACH;AACA,SAAS,WAAW,CAAC,CAAC,EAAE;AACxB,EAAE,OAAO;AACT,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE;AACZ,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,KAAK,EAAE,CAAC,CAAC,KAAK;AAClB,IAAI,MAAM,EAAE,CAAC,CAAC,KAAK;AACnB,IAAI,QAAQ,EAAE,CAAC,CAAC,OAAO;AACvB,IAAI,eAAe,EAAE,CAAC,CAAC,cAAc;AACrC,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,WAAW,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;AACrC,IAAI,mBAAmB,EAAE,CAAC,CAAC,gBAAgB,IAAI;AAC/C,GAAG;AACH;AACA,SAAS,UAAU,CAAC,CAAC,EAAE;AACvB,EAAE,MAAM,EAAE,GAAG,CAAC;AACd,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO;AAC1B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,kBAAkB,EAAE,GAAG,CAAC;AACnE,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO;AAC1B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,uBAAuB,EAAE,GAAG,CAAC;AACxE,EAAE,IAAI,CAAC,YAAY,KAAK;AACxB,IAAI,OAAO,CAAC;AACZ,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAClC,IAAI,MAAM,GAAG,GAAG,CAAC;AACjB,IAAI,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAChG,EAAE;AACF,EAAE,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B;AACA,MAAM,0BAA0B,CAAC;AACjC,EAAE,OAAO;AACT,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,GAAG,EAAE;AACvB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/C,IAAI,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AAC7E,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AAChD,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AACtD,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AAC5D,MAAM,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,WAAW;AAClH,KAAK,CAAC;AACN,IAAI,IAAI,UAAU,CAAC,KAAK;AACxB,MAAM,MAAM,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;AACxC,IAAI,IAAI,SAAS,CAAC,KAAK;AACvB,MAAM,MAAM,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AACvC,IAAI,IAAI,SAAS,CAAC,KAAK;AACvB,MAAM,MAAM,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AACvC,IAAI,IAAI,UAAU,CAAC,KAAK;AACxB,MAAM,MAAM,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;AACxC,IAAI,MAAM,cAAc,mBAAmB,IAAI,GAAG,EAAE;AACpD,IAAI,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,IAAI,EAAE,EAAE;AAC5C,MAAM,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;AAC1D,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3B,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC;AAC7C,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;AAC1F,IAAI,MAAM,WAAW,GAAG,EAAE;AAC1B,IAAI,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,IAAI,EAAE,EAAE;AAC5C,MAAM,IAAI,GAAG,CAAC,iBAAiB;AAC/B,QAAQ,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,iBAAiB;AACvD,IAAI;AACJ,IAAI,OAAO;AACX,MAAM,OAAO;AACb,MAAM,eAAe,EAAE,UAAU,CAAC,IAAI,EAAE,iBAAiB,IAAI,MAAM;AACnE,MAAM;AACN,KAAK;AACL,EAAE;AACF,EAAE,MAAM,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE;AAC3D,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/C,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACzD,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;AACnG,IAAI,IAAI,MAAM;AACd,MAAM,MAAM,UAAU,CAAC,MAAM,CAAC;AAC9B,IAAI,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,MAAM,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC1G,MAAM,IAAI,MAAM;AAChB,QAAQ,MAAM,UAAU,CAAC,MAAM,CAAC;AAChC,MAAM,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACpJ,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,QAAQ,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AAC7F,QAAQ,IAAI,KAAK;AACjB,UAAU,MAAM,UAAU,CAAC,KAAK,CAAC;AACjC,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,eAAe,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC;AAC/J,IAAI,IAAI,MAAM;AACd,MAAM,MAAM,UAAU,CAAC,MAAM,CAAC;AAC9B,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE;AAC7D,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/C,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AACzF,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC;AACxH,IAAI,IAAI,MAAM;AACd,MAAM,MAAM,UAAU,CAAC,MAAM,CAAC;AAC9B,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACrG,MAAM,IAAI,MAAM;AAChB,QAAQ,MAAM,UAAU,CAAC,MAAM,CAAC;AAChC,IAAI;AACJ,IAAI,IAAI,eAAe,KAAK,IAAI,EAAE;AAClC,MAAM,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrG,MAAM,IAAI,KAAK;AACf,QAAQ,MAAM,UAAU,CAAC,KAAK,CAAC;AAC/B,IAAI,CAAC,MAAM,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;AACpD,MAAM,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC;AACtI,MAAM,IAAI,KAAK;AACf,QAAQ,MAAM,UAAU,CAAC,KAAK,CAAC;AAC/B,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC5C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/C,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE;AAC3B,MAAM,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC7G,MAAM,IAAI,MAAM;AAChB,QAAQ,MAAM,UAAU,CAAC,MAAM,CAAC;AAChC,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;AAC7H,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;AAChC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/C,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC3G,IAAI,IAAI,MAAM;AACd,MAAM,MAAM,UAAU,CAAC,MAAM,CAAC;AAC9B,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC;AACxH,IAAI,IAAI,MAAM;AACd,MAAM,MAAM,UAAU,CAAC,MAAM,CAAC;AAC9B,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;AACpG,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,EAAE;AACF;AACA,SAAS,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE;AAC1C,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE;AACd,IAAI,KAAK,EAAE,GAAG,CAAC,KAAK;AACpB,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM;AACjC,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,MAAM;AACvC,IAAI,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI;AACnC,GAAG;AACH,EAAE,IAAI,GAAG,CAAC,KAAK,KAAK,UAAU,EAAE;AAChC,IAAI,OAAO;AACX,MAAM,GAAG,MAAM;AACf,MAAM,KAAK,EAAE,UAAU;AACvB,MAAM,UAAU,EAAE,GAAG,CAAC,eAAe,GAAG,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI;AAC9E,KAAK;AACL,EAAE;AACF,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,GAAG,CAAC,EAAE,CAAC,sCAAsC,CAAC,CAAC;AAC1F,EAAE;AACF,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,YAAY,EAAE;AAClE;AACA,SAAS,WAAW,CAAC,CAAC,EAAE;AACxB,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE;AACZ,IAAI,KAAK,EAAE,CAAC,CAAC,KAAK;AAClB,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,OAAO,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI;AAC7B,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;AACnC,IAAI,WAAW,EAAE,CAAC,CAAC,UAAU,IAAI;AACjC,GAAG;AACH,EAAE,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE;AAC3B,IAAI,OAAO;AACX,MAAM,GAAG,IAAI;AACb,MAAM,KAAK,EAAE,UAAU;AACvB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,eAAe,EAAE,CAAC,CAAC,UAAU,KAAK;AACxC,KAAK;AACL,EAAE;AACF,EAAE,OAAO;AACT,IAAI,GAAG,IAAI;AACX,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,YAAY,EAAE,CAAC,CAAC,UAAU;AAC9B,IAAI,eAAe,EAAE;AACrB,GAAG;AACH;AACA,SAAS,UAAU,CAAC,CAAC,EAAE;AACvB,EAAE,MAAM,EAAE,GAAG,CAAC;AACd,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO;AAC1B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,kBAAkB,EAAE,GAAG,CAAC;AACnE,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO;AAC1B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,uBAAuB,EAAE,GAAG,CAAC;AACxE,EAAE,IAAI,CAAC,YAAY,KAAK;AACxB,IAAI,OAAO,CAAC;AACZ,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAClC,IAAI,MAAM,GAAG,GAAG,CAAC;AACjB,IAAI,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAChG,EAAE;AACF,EAAE,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B;AACA,MAAM,sBAAsB,CAAC;AAC7B,EAAE,OAAO;AACT,EAAE,MAAM;AACR,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,aAAa,EAAE,EAAE;AACrD,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;AACxB,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE;AAC1B,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACpG,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,EAAE,mBAAmB;AAC/B,MAAM,MAAM,EAAE,IAAI,CAAC,EAAE;AACrB,MAAM,YAAY,EAAE,IAAI,CAAC,YAAY;AACrC,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG;AAC5B,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE;AAClD,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;AAC/B,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;AAC1P,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC;AAC7C,IAAI,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AACjF,EAAE;AACF,EAAE,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE;AACzB,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AACzH,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI;AACxC,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AACxC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE;AAC/N,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI;AACxC,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE;AACxB,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;AACnL,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/F,EAAE;AACF,EAAE,MAAM,sBAAsB,CAAC,IAAI,EAAE,EAAE,EAAE;AACzC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,sCAAsC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACzH,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI;AACjD,EAAE;AACF;AACA,SAAS,SAAS,CAAC,GAAG,EAAE;AACxB,EAAE,OAAO;AACT,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE;AACd,IAAI,YAAY,EAAE,GAAG,CAAC,eAAe;AACrC,IAAI,OAAO,EAAE,GAAG,CAAC,OAAO;AACxB,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,MAAM;AAC5B,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,UAAU,EAAE,GAAG,CAAC,WAAW;AAC/B,IAAI,SAAS,EAAE,GAAG,CAAC,UAAU;AAC7B,IAAI,UAAU,EAAE,GAAG,CAAC;AACpB,GAAG;AACH;AACA,SAAS,SAAS,CAAC,CAAC,EAAE;AACtB,EAAE,OAAO;AACT,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE;AACZ,IAAI,eAAe,EAAE,CAAC,CAAC,YAAY;AACnC,IAAI,OAAO,EAAE,CAAC,CAAC,OAAO;AACtB,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;AACxB,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS;AAC3B,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;AACnC,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;AACnC,IAAI,WAAW,EAAE,CAAC,CAAC,UAAU;AAC7B,IAAI,UAAU,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;AACnC,IAAI,WAAW,EAAE,CAAC,CAAC;AACnB,GAAG;AACH;AACA,SAAS,UAAU,CAAC,CAAC,EAAE;AACvB,EAAE,MAAM,EAAE,GAAG,CAAC;AACd,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO;AAC1B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,kBAAkB,EAAE,GAAG,CAAC;AACnE,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO;AAC1B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,uBAAuB,EAAE,GAAG,CAAC;AACxE,EAAE,IAAI,CAAC,YAAY,KAAK;AACxB,IAAI,OAAO,CAAC;AACZ,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAClC,IAAI,MAAM,GAAG,GAAG,CAAC;AACjB,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,wBAAwB;AAClF,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAClE,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;AAC3B,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B;AACA,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACjC,EAAE,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;AAC5E,IAAI,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK;AAC1D,GAAG,CAAC;AACJ,EAAE,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE;AAClE,IAAI,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK;AAC1D,GAAG,CAAC;AACJ,EAAE,MAAM,eAAe,mBAAmB,IAAI,OAAO,EAAE;AACvD,EAAE,OAAO;AACT,IAAI,aAAa;AACjB,IAAI,UAAU,CAAC,GAAG,EAAE;AACpB,MAAM,IAAI,GAAG,CAAC,MAAM;AACpB,QAAQ,OAAO,aAAa;AAC5B,MAAM,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC;AAC3D,MAAM,IAAI,CAAC,KAAK;AAChB,QAAQ,OAAO,UAAU;AACzB,MAAM,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7C,MAAM,IAAI,MAAM;AAChB,QAAQ,OAAO,MAAM;AACrB,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE;AAClE,QAAQ,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE;AAChE,QAAQ,MAAM,EAAE;AAChB,UAAU,OAAO,EAAE,EAAE,aAAa,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACrD;AACA,OAAO,CAAC;AACR,MAAM,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AACtC,MAAM,OAAO,MAAM;AACnB,IAAI;AACJ,GAAG;AACH;AACA,SAAS,mBAAmB,CAAC,cAAc,EAAE;AAC7C,EAAE,IAAI,CAAC,cAAc,IAAI,OAAO,cAAc,KAAK,QAAQ;AAC3D,IAAI,OAAO,MAAM;AACjB,EAAE,MAAM,KAAK,GAAG,cAAc,CAAC,YAAY;AAC3C,EAAE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,MAAM;AACvE;AACA,MAAM,iBAAiB,CAAC;AACxB,EAAE,OAAO;AACT,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,EAAE;AACF,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE;AACpB,IAAI,IAAI;AACR,MAAM,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;AACrF,QAAQ,IAAI,EAAE,KAAK,CAAC,IAAI;AACxB,QAAQ,QAAQ,EAAE,KAAK,CAAC,OAAO;AAC/B,QAAQ,IAAI,EAAE;AACd,OAAO,CAAC;AACR,MAAM,IAAI,KAAK,EAAE;AACjB,QAAQ,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC;AACrF,MAAM;AACN,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC;AAC5E,IAAI;AACJ,EAAE;AACF;AACA,MAAM,SAAS,GAAG,GAAG;AACrB,MAAM,aAAa,GAAG,GAAG;AACzB,MAAM,MAAM,GAAG,uEAAuE;AACtF,MAAM,OAAO,GAAG,+EAA+E;AAC/F,MAAM,kBAAkB,CAAC;AACzB,EAAE,OAAO;AACT,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,EAAE;AACF,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;AAC5B,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3C,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AACzM,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACnD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1C,IAAI;AACJ,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;AACzB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC;AAC3C,IAAI;AACJ,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC;AAChD,IAAI;AACJ,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC;AAChD,IAAI;AACJ,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE;AACxB,MAAM,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU;AAC1C,MAAM,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE;AAClC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AACjD,QAAQ,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AAC/D,MAAM;AACN,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,oBAAoB,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5E,IAAI;AACJ,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;AACnC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,2BAA2B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE;AAC9B,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK;AAC1C,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO;AAC5D,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACtC,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAC7B,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE;AAChB,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI;AACpB,QAAQ,OAAO,EAAE,CAAC,CAAC,QAAQ;AAC3B,QAAQ,UAAU,EAAE,CAAC,CAAC,WAAW;AACjC,QAAQ,IAAI,EAAE,CAAC,CAAC;AAChB,OAAO,CAAC,CAAC;AACT,MAAM,UAAU,EAAE,OAAO,IAAI,IAAI,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG;AACpF,KAAK;AACL,EAAE;AACF;AACA,SAAS,UAAU,CAAC,SAAS,EAAE;AAC/B,EAAE,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,CAAC;AAClC,IAAI,OAAO,aAAa;AACxB,EAAE,IAAI,SAAS,GAAG,SAAS;AAC3B,IAAI,OAAO,SAAS;AACpB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AAC9B;AACA,MAAM,eAAe,GAAG,EAAE;AAC1B,MAAM,2BAA2B,CAAC;AAClC,EAAE,OAAO;AACT,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,EAAE;AACF,EAAE,MAAM,GAAG;AACX,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa;AACrC,EAAE;AACF,EAAE,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE;AAChC,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC;AAChC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE;AAC3K,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI;AAC3C,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE;AACnC,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAC5B,MAAM,OAAO,EAAE;AACf,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;AACnK,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC;AACzC,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;AAC1C,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC;AAChC,IAAI,MAAM,GAAG,GAAG,EAAE;AAClB,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM;AACpC,MAAM,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW;AAC1C,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC;AACrC,MAAM,OAAO,IAAI;AACjB,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AACzH,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,WAAW;AACvD,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE;AAClD,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC;AAChC,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;AACvD,IAAI,IAAI,CAAC,QAAQ;AACjB,MAAM,OAAO,WAAW;AACxB,IAAI,IAAI,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC1D,MAAM,OAAO,IAAI;AACjB,IAAI,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,kBAAkB,EAAE,YAAY,CAAC;AAC/D,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AACnJ,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,WAAW;AACvD,EAAE;AACF,EAAE,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE;AACpD,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC;AAChC,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;AACvD,IAAI,IAAI,CAAC,QAAQ;AACjB,MAAM,OAAO,WAAW;AACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC3D,MAAM,OAAO,IAAI;AACjB,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,YAAY,CAAC;AAChF,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AACnJ,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,WAAW;AACvD,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;AACpC,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC;AAChC,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;AACvD,IAAI,IAAI,CAAC,QAAQ;AACjB,MAAM,OAAO,WAAW;AACxB,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,GAAG,CAAC,YAAY,CAAC;AAC3F,IAAI,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC;AAC7D,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AAC3I,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,WAAW;AACvD,EAAE;AACF;AACA,SAAS,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE;AACtC,EAAE,IAAI,GAAG,CAAC,MAAM;AAChB,IAAI;AACJ,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;AAC3B,IAAI;AACJ,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAC1C,IAAI;AACJ,EAAE,MAAM,IAAI,aAAa,CAAC,iDAAiD,EAAE,GAAG,CAAC;AACjF;AACA,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,EAAE,OAAO;AACT,IAAI,MAAM,EAAE,GAAG,CAAC,OAAO;AACvB,IAAI,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,MAAM;AAC3C,IAAI,kBAAkB,EAAE,GAAG,CAAC,mBAAmB,IAAI,EAAE;AACrD,IAAI,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI;AACnC,GAAG;AACH;AACA,SAAS,UAAU,CAAC,CAAC,EAAE;AACvB,EAAE,MAAM,EAAE,GAAG,CAAC;AACd,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO;AAC1B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,kBAAkB,EAAE,GAAG,CAAC;AACnE,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO;AAC1B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,uBAAuB,EAAE,GAAG,CAAC;AACxE,EAAE,IAAI,CAAC,YAAY,KAAK;AACxB,IAAI,OAAO,CAAC;AACZ,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAClC,IAAI,MAAM,GAAG,GAAG,CAAC;AACjB,IAAI,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAChG,EAAE;AACF,EAAE,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B;AACA,MAAM,+BAA+B,CAAC;AACtC,EAAE,OAAO;AACT,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,EAAE;AACF,EAAE,MAAM,GAAG;AACX,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa;AACrC,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE;AAC5B,IAAI,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC;AAC9B,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE;AACxI,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,QAAQ,CAAC,KAAK,CAAC;AAC3B,IAAI,OAAO,WAAW,CAAC,IAAI,EAAE,oBAAoB,IAAI,EAAE,CAAC;AACxD,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE;AAClC,IAAI,WAAW,CAAC,GAAG,CAAC;AACpB,IAAI,MAAM,GAAG,mBAAmB,IAAI,GAAG,EAAE;AACzC,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAC5B,MAAM,OAAO,GAAG;AAChB,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;AACzI,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,QAAQ,CAAC,KAAK,CAAC;AAC3B,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE;AAClC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;AACvE,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;AACtC,IAAI,WAAW,CAAC,GAAG,CAAC;AACpB,IAAI,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE;AAC9J,IAAI,IAAI,UAAU;AAClB,MAAM,MAAM,QAAQ,CAAC,UAAU,CAAC;AAChC,IAAI,IAAI,CAAC,QAAQ;AACjB,MAAM,OAAO,WAAW;AACxB,IAAI,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,oBAAoB,IAAI,EAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACrF,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AAC9D,IAAI,IAAI,QAAQ,IAAI,CAAC,WAAW,EAAE;AAClC,MAAM,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;AAC/D,MAAM,IAAI,MAAM,KAAK,CAAC;AACtB,QAAQ,OAAO,YAAY;AAC3B,IAAI;AACJ,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,oBAAoB,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;AACxI,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,QAAQ,CAAC,KAAK,CAAC;AAC3B,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,MAAM,gBAAgB,CAAC,IAAI,EAAE;AAC/B,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAC5I,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,QAAQ,CAAC,KAAK,CAAC;AAC3B,IAAI,MAAM,UAAU,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AACzD,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;AAC/B,MAAM,OAAO,KAAK;AAClB,IAAI,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE;AACjC,MAAM,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;AAC5F,MAAM,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,KAAK,IAAI;AACzE,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,MAAM,4BAA4B,CAAC,IAAI,EAAE,aAAa,EAAE;AAC1D,IAAI,OAAO,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC;AACtD,EAAE;AACF,EAAE,MAAM,uBAAuB,CAAC,aAAa,EAAE;AAC/C,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC;AAC1K,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,QAAQ,CAAC,KAAK,CAAC;AAC3B,IAAI,MAAM,UAAU,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AACzD,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;AAC/B,MAAM,OAAO,CAAC;AACd,IAAI,IAAI,KAAK,GAAG,CAAC;AACjB,IAAI,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE;AACjC,MAAM,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;AAC5F,MAAM,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,KAAK,IAAI;AACzE,QAAQ,KAAK,IAAI,CAAC;AAClB,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB,EAAE;AACF;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,wBAAwB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACzE;AACA,SAAS,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE;AACpC,EAAE,IAAI,GAAG,CAAC,MAAM;AAChB,IAAI;AACJ,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;AAC3B,IAAI;AACJ,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAC1C,IAAI;AACJ,EAAE,MAAM,IAAI,aAAa,CAAC,mDAAmD,EAAE,GAAG,CAAC;AACnF;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,IAAI,GAAG,CAAC,MAAM;AAChB,IAAI;AACJ,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAC1C,IAAI;AACJ,EAAE,MAAM,IAAI,aAAa,CAAC,oCAAoC,EAAE,GAAG,CAAC;AACpE;AACA,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrB,EAAE,MAAM,EAAE,GAAG,CAAC;AACd,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO;AAC1B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,kBAAkB,EAAE,GAAG,CAAC;AACnE,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,OAAO;AAC1B,IAAI,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,IAAI,uBAAuB,EAAE,GAAG,CAAC;AACxE,EAAE,IAAI,CAAC,YAAY,KAAK;AACxB,IAAI,OAAO,CAAC;AACZ,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAClC,IAAI,MAAM,GAAG,GAAG,CAAC;AACjB,IAAI,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAChG,EAAE;AACF,EAAE,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B;AACA,MAAM,mBAAmB,GAAG,6DAA6D;AACzF,MAAM,wBAAwB,GAAG;AACjC,EAAE,aAAa,EAAE,YAAY;AAC7B,IAAI,MAAM,IAAI,aAAa,CAAC,mBAAmB,EAAE,GAAG,CAAC;AACrD,EAAE,CAAC;AACH,EAAE,MAAM,EAAE,YAAY;AACtB,IAAI,MAAM,IAAI,aAAa,CAAC,mBAAmB,EAAE,GAAG,CAAC;AACrD,EAAE,CAAC;AACH,EAAE,MAAM,EAAE,YAAY;AACtB,IAAI,MAAM,IAAI,aAAa,CAAC,mBAAmB,EAAE,GAAG,CAAC;AACrD,EAAE,CAAC;AACH,EAAE,eAAe,EAAE,YAAY;AAC/B,EAAE,CAAC;AACH,EAAE,kBAAkB,EAAE,YAAY;AAClC,EAAE;AACF,CAAC;AACD,MAAM,oBAAoB,CAAC;AAC3B,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,WAAW;AACb,EAAE,OAAO;AACT,EAAE,aAAa;AACf,EAAE,UAAU;AACZ,EAAE,WAAW;AACb,EAAE,WAAW;AACb,EAAE,qBAAqB;AACvB,EAAE,UAAU;AACZ,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE;AAC/B,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;AACrD,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC;AAC7D,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC;AACnE,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC;AAC3D,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,0BAA0B,CAAC,OAAO,CAAC;AAChE,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC;AACjE,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,2BAA2B,CAAC,OAAO,CAAC;AAC/D,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,+BAA+B,CAAC,OAAO,CAAC;AACnE,IAAI,IAAI,CAAC,qBAAqB,GAAG,wBAAwB;AACzD,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC;AACrD,EAAE;AACF,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;AAC9B,IAAI,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY;AACxC,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB;AACzC,IAAI,MAAM,cAAc,GAAG,GAAG,CAAC,yBAAyB;AACxD,IAAI,IAAI,CAAC,WAAW;AACpB,MAAM,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AAC/D,IAAI,IAAI,CAAC,OAAO;AAChB,MAAM,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;AACpE,IAAI,IAAI,CAAC,cAAc;AACvB,MAAM,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;AAC5E,IAAI,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AAC9E,IAAI,OAAO,IAAI,oBAAoB,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACpF,EAAE;AACF,EAAE,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;AAC9B,IAAI,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAC1C,IAAI,OAAO,IAAI,oBAAoB,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACpF,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE;AACpC,IAAI,OAAO,IAAI,oBAAoB,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACpF,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE,eAAe,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,OAAO;AACvB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,UAAU,GAAG;AACrB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,aAAa,GAAG;AACxB,EAAE;AACF;AACA,MAAM,oBAAoB,CAAC;AAC3B,EAAE,IAAI,GAAG,eAAe;AACxB,EAAE,YAAY;AACd,EAAE,KAAK;AACP,EAAE,SAAS;AACX,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,WAAW;AACb,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW;AACzC,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;AACjC,IAAI,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,EAAE;AACzE,MAAM,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK;AAC5D,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE;AACjE,MAAM,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK;AAC5D,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,gBAAgB,IAAI,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1L,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC;AAC5G,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,oBAAoB,IAAI,IAAI,CAAC;AAC5H,EAAE;AACF,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE;AACtB,IAAI,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY;AACxC,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB;AACzC,IAAI,MAAM,cAAc,GAAG,GAAG,CAAC,yBAAyB;AACxD,IAAI,IAAI,CAAC,WAAW;AACpB,MAAM,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AAC/D,IAAI,IAAI,CAAC,OAAO;AAChB,MAAM,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;AACpE,IAAI,IAAI,CAAC,cAAc;AACvB,MAAM,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;AAC5E,IAAI,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACzI,IAAI,OAAO,IAAI,oBAAoB,CAAC;AACpC,MAAM,WAAW;AACjB,MAAM,OAAO;AACb,MAAM,cAAc;AACpB,MAAM,gBAAgB,EAAE,GAAG,CAAC,2BAA2B,KAAK,MAAM;AAClE,MAAM,cAAc;AACpB;AACA;AACA,MAAM,oBAAoB,EAAE,GAAG,CAAC,gCAAgC,KAAK;AACrE,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,KAAK,EAAE;AAC3B,IAAI,IAAI,CAAC,KAAK;AACd,MAAM,OAAO,IAAI;AACjB,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/D,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI;AAC3B,MAAM,OAAO,IAAI;AACjB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,KAAK,IAAI;AAClD,MAAM,OAAO,IAAI;AACjB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,EAAE;AACF,EAAE,MAAM,OAAO,CAAC,EAAE,EAAE;AACpB,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;AACvE,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI;AAC3B,MAAM,OAAO,IAAI;AACjB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,IAAI,EAAE;AACxB,IAAI,MAAM,OAAO,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE;AACrC,IAAI,MAAM,IAAI,GAAG,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC;AAC7D,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AAClE,MAAM,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AACzD,MAAM;AACN,KAAK,CAAC;AACN,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,KAAK;AACjB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AAC5B,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtD,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM;AAC1E,IAAI,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE;AAC1C,EAAE;AACF,EAAE,MAAM,UAAU,CAAC,KAAK,EAAE;AAC1B,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACnE,MAAM,KAAK;AACX,MAAM,aAAa,EAAE;AACrB,KAAK,CAAC;AACN,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,KAAK;AACjB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;AAClB,MAAM,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACpD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,EAAE;AACF,EAAE,MAAM,UAAU,CAAC,EAAE,EAAE;AACvB,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;AAChE,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,MAAM,CAAC,GAAG,KAAK;AACrB,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;AACjE,QAAQ,OAAO,WAAW;AAC1B,MAAM,MAAM,KAAK;AACjB,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,EAAE,EAAE;AACxB,IAAI,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;AAC7F,IAAI,IAAI,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI;AACpC,MAAM,OAAO,WAAW;AACxB,IAAI,MAAM,cAAc,GAAG;AAC3B,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE;AAC1C,MAAM,QAAQ,EAAE;AAChB,KAAK;AACL,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE;AACrE,MAAM,aAAa,EAAE;AACrB,KAAK,CAAC;AACN,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,MAAM,CAAC,GAAG,KAAK;AACrB,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;AACjE,QAAQ,OAAO,WAAW;AAC1B,MAAM,MAAM,KAAK;AACjB,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,EAAE,EAAE;AAC3B,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC1H,IAAI,IAAI,KAAK;AACb,MAAM;AACN,IAAI,IAAI,IAAI,EAAE,aAAa,EAAE;AAC7B,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;AACjD,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG;AAC1D,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;AAClI,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE;AAChC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACxF,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;AAC5C,MAAM,OAAO,IAAI;AACjB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,KAAK,IAAI;AAClD,MAAM,OAAO,IAAI;AACjB,IAAI,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AACrF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,CAAC,IAAI,EAAE;AAChB,IAAI,OAAO;AACX,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;AACjB,MAAM,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,MAAM;AACjC,MAAM,SAAS,EAAE,IAAI,CAAC,UAAU,IAAI,MAAM;AAC1C,MAAM,WAAW,EAAE,IAAI,CAAC,eAAe,IAAI,MAAM;AACjD,MAAM,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,KAAK,IAAI;AACrD,MAAM,QAAQ,EAAE,IAAI,CAAC;AACrB,KAAK;AACL,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,GAAG;AACxB,IAAI,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACnE,EAAE;AACF;AACA,MAAM,oBAAoB,CAAC;AAC3B,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,gBAAgB;AAClB,EAAE,OAAO;AACT,EAAE,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE;AAC9D,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;AACxB,IAAI,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAC5C,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE;AACrC,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC;AACrD,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE;AAC9D,IAAI,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE;AACpF,EAAE;AACF,EAAE,MAAM,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAChD,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACnE,MAAM,KAAK;AACX,MAAM,QAAQ;AACd,MAAM,aAAa,EAAE;AACrB,KAAK,CAAC;AACN,IAAI,IAAI,KAAK;AACb,MAAM,MAAM,KAAK;AACjB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;AAClB,MAAM,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;AAChE,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE;AACtC,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB;AAC9B,MAAM,OAAO,IAAI;AACjB,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC5E,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI;AAC3B,MAAM,OAAO,IAAI;AACjB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,EAAE;AACF;AACA,MAAM,iBAAiB,CAAC;AACxB,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,SAAS;AACX,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;AACzC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,SAAS,GAAG,UAAU;AAC/B,EAAE;AACF,EAAE,aAAa,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,SAAS;AACzB,EAAE;AACF,EAAE,MAAM,wBAAwB,CAAC,QAAQ,EAAE,UAAU,EAAE;AACvD,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjE,MAAM,QAAQ;AACd,MAAM,OAAO,EAAE,EAAE,UAAU,EAAE,mBAAmB,EAAE,IAAI;AACtD,KAAK,CAAC;AACN,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG;AAC1B,MAAM,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,iCAAiC,CAAC;AACjE,IAAI,OAAO,IAAI,CAAC,GAAG;AACnB,EAAE;AACF,EAAE,MAAM,iBAAiB,CAAC,IAAI,EAAE;AAChC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AAC7E,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;AAC5C,MAAM,OAAO,IAAI;AACjB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,KAAK,IAAI;AAClD,MAAM,OAAO,IAAI;AACjB,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,MAAM,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AAC7C,MAAM,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC;AACjC,KAAK;AACL,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,YAAY,EAAE;AACrC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;AAChG,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO;AAC9B,MAAM,OAAO,IAAI;AACjB,IAAI,OAAO;AACX,MAAM,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AAC7C,MAAM,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC;AACjC,KAAK;AACL,EAAE;AACF;AACA,MAAM,qBAAqB,CAAC;AAC5B,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,WAAW;AACb,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE;AAC1C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,WAAW,GAAG,WAAW;AAClC,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE;AAC1C,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACzD,MAAM,KAAK;AACX,MAAM,OAAO,EAAE;AACf,QAAQ,eAAe,EAAE,WAAW;AACpC,QAAQ,gBAAgB,EAAE,IAAI,CAAC;AAC/B;AACA,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,KAAK;AACd,MAAM,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE;AACzB,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAC/B,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;AAC3B,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE;AACvC,IAAI,IAAI,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACtD,MAAM,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE;AAClD,IAAI,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,iBAAiB,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACpG,MAAM,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE;AACrD,IAAI;AACJ,IAAI,IAAI,IAAI,KAAK,mBAAmB,IAAI,gCAAgC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACxF,MAAM,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE;AACnD,IAAI;AACJ,IAAI,MAAM,KAAK;AACf,EAAE;AACF,EAAE,MAAM,eAAe,CAAC,cAAc,EAAE;AACxC,IAAI,MAAM,MAAM,GAAG,mBAAmB,CAAC,cAAc,CAAC;AACtD,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,OAAO,IAAI;AACjB,IAAI,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM;AACtC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3D,MAAM,UAAU,EAAE,SAAS;AAC3B,MAAM;AACN,KAAK,CAAC;AACN,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;AAC5C,MAAM,OAAO,IAAI;AACjB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,KAAK,IAAI;AAClD,MAAM,OAAO,IAAI;AACjB,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,MAAM,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AAC7C,MAAM,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC;AACjC,KAAK;AACL,EAAE;AACF;AACA,SAAS,mBAAmB,CAAC,GAAG,EAAE;AAClC,EAAE,IAAI,MAAM;AACZ,EAAE,IAAI;AACN,IAAI,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY;AACtC,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,MAAM,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC1E,EAAE;AACF,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;AAC5C,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACjC,EAAE,IAAI,CAAC,SAAS;AAChB,IAAI,OAAO,IAAI;AACf,EAAE,MAAM,OAAO,mBAAmB,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACjG,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,IAAI,OAAO,IAAI;AACf,EAAE,OAAO;AACT,IAAI,SAAS;AACb,IAAI;AACJ,GAAG;AACH;AACA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACnC,MAAM,sBAAsB,GAAG,GAAG;AAClC,eAAe,QAAQ,CAAC,QAAQ,EAAE;AAClC,EAAE,IAAI;AACN,IAAI,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;AACpD,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1B,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;AAC7B,MAAM,OAAO,KAAK,EAAE;AACpB,IAAI,MAAM,GAAG;AACb,EAAE;AACF;AACA,eAAe,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE;AACzC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7D,EAAE,MAAM,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC;AAC/B,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;AACnE,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC;AAChC;AACA,SAAS,oBAAoB,CAAC,QAAQ,EAAE;AACxC,EAAE,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AAChD,EAAE,OAAO;AACT,IAAI,MAAM,SAAS,CAAC,GAAG,EAAE;AACzB,MAAM,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC;AAChD,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAC3B,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,IAAI;AACrD,IAAI,CAAC;AACL,IAAI,MAAM,QAAQ,CAAC,EAAE,EAAE;AACvB,MAAM,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC;AAChD,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI;AACnD,IAAI,CAAC;AACL,IAAI,MAAM,SAAS,GAAG;AACtB,MAAM,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC;AAChD,MAAM,OAAO,KAAK;AAClB,IAAI,CAAC;AACL,IAAI,MAAM,UAAU,CAAC,GAAG,EAAE;AAC1B,MAAM,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC;AAC3C,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAC3B,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;AACjD,QAAQ,MAAM,IAAI,aAAa,CAAC,CAAC,eAAe,EAAE,GAAG,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;AAC7E,MAAM;AACN,MAAM,MAAM,KAAK,GAAG;AACpB,QAAQ,EAAE,EAAE,UAAU,EAAE;AACxB,QAAQ,GAAG,EAAE,GAAG;AAChB,QAAQ,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW;AAC3D,OAAO;AACP,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,MAAM,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AACrC,MAAM,OAAO,KAAK;AAClB,IAAI,CAAC;AACL,IAAI,MAAM,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE;AAC7C,MAAM,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC;AAC3C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACtD,MAAM,IAAI,CAAC,IAAI;AACf,QAAQ;AACR,MAAM,IAAI,KAAK,GAAG,KAAK;AACvB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE;AACvC,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;AACjC,QAAQ,KAAK,GAAG,IAAI;AACpB,MAAM;AACN,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE;AACnD,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW;AAC7C,QAAQ,KAAK,GAAG,IAAI;AACpB,MAAM;AACN,MAAM,IAAI,KAAK;AACf,QAAQ,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AACvC,IAAI,CAAC;AACL,IAAI,MAAM,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE;AACpC,MAAM,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC;AAC3C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACtD,MAAM,IAAI,CAAC,IAAI;AACf,QAAQ,MAAM,IAAI,aAAa,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC9D,MAAM,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC9B,MAAM,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AACrC,IAAI,CAAC;AACL,IAAI,MAAM,cAAc,CAAC,EAAE,EAAE;AAC7B,MAAM,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC;AAC3C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACtD,MAAM,IAAI,CAAC,IAAI;AACf,QAAQ;AACR,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AAC5B,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AAC5B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;AACjD,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,sBAAsB;AACxE,UAAU;AACV,MAAM;AACN,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;AACpD,MAAM,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AACrC,IAAI,CAAC;AACL,IAAI,MAAM,UAAU,CAAC,EAAE,EAAE;AACzB,MAAM,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC;AAC3C,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;AACtC,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACxD,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM;AACtC,QAAQ,MAAM,IAAI,aAAa,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;AAC9D,MAAM,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AACrC,IAAI;AACJ,GAAG;AACH;AACA,MAAM,eAAe,GAAG;AACxB,EAAE,GAAG,EAAE,yBAAyB;AAChC,EAAE,KAAK,EAAE,aAAa;AACtB,EAAE,WAAW,EAAE;AACf,CAAC;AACD,SAAS,UAAU,CAAC,CAAC,EAAE;AACvB,EAAE,OAAO;AACT,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE;AACZ,IAAI,KAAK,EAAE,CAAC,CAAC,KAAK;AAClB,IAAI,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE;AACxD,IAAI,SAAS,EAAE,CAAC,CAAC,SAAS;AAC1B,IAAI,WAAW,EAAE,CAAC,CAAC,WAAW;AAC9B,IAAI,QAAQ,EAAE,CAAC,CAAC;AAChB,GAAG;AACH;AACA,MAAM,eAAe,CAAC;AACtB,EAAE,KAAK;AACP,EAAE,OAAO;AACT,EAAE,eAAe;AACjB,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE;AAC/C,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,eAAe,GAAG,eAAe;AAC1C,EAAE;AACF,EAAE,kBAAkB,CAAC,MAAM,EAAE;AAC7B,IAAI,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,MAAM;AAC3C,EAAE;AACF,EAAE,MAAM,mBAAmB,CAAC,OAAO,EAAE;AACrC,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAC7C,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;AAC3B,MAAM,OAAO,IAAI;AACjB,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,MAAM;AACnE,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,MAAM;AAC/E,IAAI,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;AAC/C,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE;AACxC,MAAM,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAChE,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,IAAI;AACZ,UAAU,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;AAClD,QAAQ,CAAC,CAAC,MAAM;AAChB,UAAU,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;AACjD,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ;AAChC,MAAM,OAAO,IAAI;AACjB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,WAAW,EAAE;AACpE,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM;AAC5F,MAAM,CAAC,CAAC;AACR,MAAM,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK;AAC/B,QAAQ,KAAK,CAAC,KAAK,GAAG,KAAK;AAC3B,MAAM,IAAI,WAAW,IAAI,CAAC,KAAK,CAAC,WAAW;AAC3C,QAAQ,KAAK,CAAC,WAAW,GAAG,WAAW;AACvC,IAAI;AACJ,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM;AAC1D,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC;AAC5B,EAAE;AACF;AACA,MAAM,kBAAkB,CAAC;AACzB,EAAE,KAAK;AACP,EAAE,OAAO;AACT,EAAE,IAAI,GAAG,uBAAuB;AAChC,EAAE,SAAS;AACX,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,iBAAiB,CAAC;AAC/D,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE;AAC5D,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,wBAAwB,CAAC;AACnG,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,2BAA2B,CAAC,MAAM,EAAE;AACtC,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAC7C,EAAE;AACF,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE;AACtB,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,oBAAoB,IAAI,GAAG,CAAC,SAAS;AACzD,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,MAAM,IAAI,KAAK,CAAC,uJAAuJ,CAAC;AAC9K,IAAI;AACJ,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC;AAChE,MAAM,OAAO,EAAE;AACf,QAAQ,GAAG,EAAE,GAAG,CAAC,sBAAsB,IAAI,eAAe,CAAC,GAAG;AAC9D,QAAQ,KAAK,EAAE,GAAG,CAAC,wBAAwB,IAAI,eAAe,CAAC,KAAK;AACpE,QAAQ,WAAW,EAAE,GAAG,CAAC,+BAA+B,IAAI,eAAe,CAAC;AAC5E;AACA,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE;AAC5B,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,MAAM,OAAO,CAAC,EAAE,EAAE;AACpB,IAAI,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC3C,IAAI,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;AACnC,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,IAAI,EAAE;AACxB,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAC5C,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC;AAC/D,IAAI,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AACpE,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;AACnE,IAAI,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM;AAC5C,IAAI,OAAO;AACX,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,UAAU,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG;AACjE,KAAK;AACL,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,UAAU,CAAC,GAAG,EAAE;AACxB,IAAI,OAAO,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACvD,EAAE;AACF,EAAE,MAAM,UAAU,CAAC,EAAE,EAAE;AACvB,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AAChD,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,OAAO,WAAW;AACxB,IAAI,IAAI;AACR,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;AACrC,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG;AAChE,QAAQ,OAAO,WAAW;AAC1B,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,EAAE,EAAE;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AAChD,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,OAAO,WAAW;AACxB,IAAI,IAAI;AACR,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC;AAC5C,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG;AAChE,QAAQ,OAAO,WAAW;AAC1B,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,EAAE,EAAE;AAC3B,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;AACvC,EAAE;AACF;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;AAC3B,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE;AACnC,EAAE,OAAO,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK;AACjD;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,EAAE,WAAW,EAAE;AACnE,EAAE,QAAQ,MAAM;AAChB,IAAI,KAAK,OAAO;AAChB,MAAM,OAAO,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC;AAC3C,IAAI,KAAK,UAAU;AACnB,MAAM,OAAO,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC;AAC9C,IAAI,KAAK,QAAQ;AACjB,MAAM,OAAO,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC;AAC5C,IAAI;AACJ,MAAM,MAAM,IAAI,KAAK;AACrB,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC,uCAAuC;AACtF,OAAO;AACP;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,EAAE,WAAW,EAAE;AACnE,EAAE,QAAQ,MAAM;AAChB,IAAI,KAAK,OAAO;AAChB,MAAM,OAAO,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC;AAC3C,IAAI,KAAK,UAAU;AACnB,MAAM,OAAO,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC;AAC9C,IAAI;AACJ,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,6BAA6B,EAAE,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAC7F;AACA;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,EAAE,WAAW,EAAE;AACtE,EAAE,QAAQ,MAAM;AAChB,IAAI,KAAK,OAAO;AAChB,MAAM,OAAO,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC;AAC9C,IAAI,KAAK,UAAU;AACnB,MAAM,OAAO,uBAAuB,CAAC,OAAO,CAAC,GAAG,CAAC;AACjD,IAAI;AACJ,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,gCAAgC,EAAE,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAChG;AACA;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,aAAa,IAAI,QAAQ,EAAE,WAAW,EAAE;AAC9D,EAAE,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,OAAO,EAAE;AACjD,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,uBAAuB,EAAE,MAAM,CAAC,4BAA4B,CAAC,CAAC;AACnF,EAAE;AACF,EAAE,OAAO,MAAM;AACf;AACA,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,GAAG,MAAM;AAC7C,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC;AAC3B,EAAE,KAAK,EAAE;AACT,IAAI,sBAAsB,EAAE,OAAO,CAAC,GAAG,EAAE,mCAAmC,CAAC;AAC7E,IAAI,0BAA0B,EAAE,OAAO,CAAC,GAAG,EAAE,uCAAuC,CAAC;AACrF,IAAI,kBAAkB,EAAE,OAAO,CAAC,GAAG,EAAE,+BAA+B,CAAC;AACrE,IAAI,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,2BAA2B;AAC5D,GAAG;AACH,EAAE,QAAQ,EAAE;AACZ,IAAI,IAAI,EAAE,GAAG,CAAC,gBAAgB;AAC9B,IAAI,aAAa,EAAE,GAAG,CAAC,0BAA0B;AACjD,IAAI,OAAO,EAAE,GAAG,CAAC,mBAAmB;AACpC,IAAI,WAAW,EAAE,GAAG,CAAC;AACrB,GAAG;AACH,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC;AACrB,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC;AACrB,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG;AAC1B,CAAC,CAAC,CAAC;AACH,MAAM,iBAAiB,CAAC;AACxB,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE;AAC7B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,EAAE;AACF,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;AACjC,IAAI,MAAM,GAAG,GAAG,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AAC1D,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO;AAC7C,IAAI,MAAM,MAAM,GAAG;AACnB,MAAM,IAAI,EAAE,KAAK,CAAC,IAAI;AACtB,MAAM,SAAS,EAAE,KAAK,CAAC,SAAS;AAChC,MAAM,OAAO,EAAE,KAAK,CAAC,OAAO;AAC5B,MAAM,SAAS,EAAE,KAAK;AACtB,MAAM,SAAS,EAAE,KAAK;AACtB,MAAM,WAAW,EAAE,KAAK,CAAC,WAAW;AACpC,MAAM,WAAW,EAAE,KAAK,CAAC,WAAW;AACpC,MAAM,QAAQ,EAAE,KAAK,CAAC,QAAQ;AAC9B,MAAM,IAAI,EAAE,KAAK,CAAC,IAAI;AACtB,MAAM,UAAU,EAAE,KAAK,CAAC,UAAU;AAClC,MAAM,eAAe,EAAE,KAAK,CAAC,eAAe;AAC5C,MAAM,MAAM,EAAE,SAAS;AACvB,MAAM,UAAU,EAAE,CAAC;AACnB,MAAM,aAAa,EAAE,IAAI;AACzB,MAAM,cAAc,EAAE,IAAI;AAC1B,MAAM,SAAS,EAAE,GAAG;AACpB,MAAM,SAAS,EAAE,GAAG;AACpB,MAAM,SAAS,EAAE;AACjB,KAAK;AACL,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC;AACnD,IAAI,MAAM,SAAS,GAAG,UAAU,EAAE;AAClC,IAAI,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC;AACzE,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,0BAA0B,CAAC;AACrE,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,EAAE,EAAE,SAAS;AACnB,MAAM,YAAY,EAAE,KAAK,CAAC,IAAI;AAC9B,MAAM,aAAa,EAAE,CAAC;AACtB,MAAM,OAAO,EAAE,KAAK,CAAC,OAAO;AAC5B,MAAM,OAAO;AACb,MAAM,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;AAC9C,MAAM,UAAU,EAAE,KAAK;AACvB,MAAM,UAAU,EAAE;AAClB,KAAK;AACL,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;AAC3D,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;AAChF,IAAI,OAAO;AACX,MAAM,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE;AACjG,MAAM;AACN,KAAK;AACL,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE;AACtE,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;AAC/D,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,aAAa,CAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC;AAChF,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACtF,IAAI,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,IAAI,CAAC,IAAI,CAAC;AAC5D,IAAI,MAAM,SAAS,GAAG,UAAU,EAAE;AAClC,IAAI,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;AAC5D,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,0BAA0B,CAAC;AACrE,IAAI,MAAM,GAAG,GAAG,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AAC1D,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO;AAChD,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,EAAE,EAAE,SAAS;AACnB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,aAAa,EAAE,IAAI;AACzB,MAAM,OAAO,EAAE,GAAG;AAClB,MAAM,OAAO;AACb,MAAM,gBAAgB,EAAE,YAAY;AACpC,MAAM,UAAU,EAAE,KAAK;AACvB,MAAM,UAAU,EAAE,GAAG;AACrB,MAAM,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI;AACxC,KAAK;AACL,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;AAC3D,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC;AACrE,IAAI,OAAO,OAAO;AAClB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;AACtC,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;AAC/D,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,aAAa,CAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC;AAChF,IAAI,MAAM,MAAM,GAAG,SAAS,IAAI,QAAQ,CAAC,cAAc;AACvD,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,GAAG,CAAC;AACtE,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;AACvE,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE;AACnD,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,+BAA+B,CAAC,EAAE,GAAG,CAAC;AACvF,IAAI;AACJ,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC;AACjE,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;AACtE,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC5E,IAAI;AACJ,IAAI,OAAO,OAAO;AAClB,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;AAC5C,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC;AAC1E,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE;AACnD,MAAM,MAAM,IAAI,aAAa,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,+BAA+B,CAAC,EAAE,GAAG,CAAC;AAC1F,IAAI;AACJ,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC;AAC7D,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AAC9C,EAAE;AACF,EAAE,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AACrC,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC;AACxD,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;AAC7C,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7C,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC;AAC1D,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;AAChD,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AACtE,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE;AAC1B,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC;AACjD,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjE,EAAE;AACF;AACA,eAAe,aAAa,GAAG;AAC/B,EAAE,MAAM,QAAQ,GAAG,WAAW,CAAC,iBAAiB;AAChD,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjB,IAAI,OAAO,aAAa;AACxB,EAAE;AACF,EAAE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC;AAC9C,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACxB,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,kBAAkB,EAAE,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAC7F,EAAE;AACF,EAAE,MAAM,GAAG,GAAG,MAAM;AACpB;AACA,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;AACvB,GAAG;AACH,EAAE,OAAO,GAAG,CAAC,OAAO;AACpB;AACA,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE;AAC7B,MAAC,SAAS,GAAG,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG;AAC9D,MAAC,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI;AACrC,OAAO,CAAC,GAAG;AACX,EAAE,CAAC,8BAA8B,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,WAAW,CAAC,iBAAiB,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC,GAAG,EAAE;AACpP,CAAC;AACD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,IAAI,EAAE;AACvC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,OAAO;AACvC,MAAC,QAAQ,GAAG;AACjB,EAAE,IAAI,EAAE,KAAK;AACb,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,KAAK;AACtD,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,yDAAyD;AAC9F,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,sFAAsF,EAAE,KAAK,CAAC,CAAC;AAC7I;AACA,SAAS,CAAC,KAAK,IAAI,EAAE;AACrB,SAAS,IAAI,CAAC,IAAI,EAAE;AACpB,EAAE,OAAO,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC;AACvC;AACK,MAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO;AACjF,SAAS,eAAe,GAAG;AAC3B,EAAE,OAAO,SAAS,CAAC,IAAI;AACvB;AACA,SAAS,kBAAkB,GAAG;AAC9B,EAAE,OAAO,SAAS,CAAC,OAAO;AAC1B;AACA,SAAS,eAAe,GAAG;AAC3B,EAAE,OAAO,SAAS,CAAC,IAAI;AACvB;AACA,SAAS,uBAAuB,GAAG;AACnC,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI;AAC5B;AACA,SAAS,kBAAkB,GAAG;AAC9B,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ;AAChC;AACA,SAAS,iBAAiB,GAAG;AAC7B,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,WAAW;AACnC;AACA,SAAS,2BAA2B,GAAG;AACvC,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,aAAa;AACrC;AACA,SAAS,mBAAmB,GAAG;AAC/B,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,WAAW;AACnC;AACA,SAAS,cAAc,GAAG;AAC1B,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO;AAC/B;AACA,SAAS,kBAAkB,GAAG;AAC9B,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,WAAW;AACnC;AACA,SAAS,4BAA4B,GAAG;AACxC,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,qBAAqB;AAC7C;AACA,SAAS,aAAa,GAAG;AACzB,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI;AAC1C;;;;"}