@owlmeans/server-payment 0.1.18-rc.2 → 0.1.18-rc.21
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.
- package/README.md +109 -25
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/server-payment/SKILL.md +475 -52
- package/build/actions/index.d.ts +1 -0
- package/build/actions/index.d.ts.map +1 -1
- package/build/actions/index.js +1 -0
- package/build/actions/index.js.map +1 -1
- package/build/actions/resync-subscriptions.d.ts +3 -0
- package/build/actions/resync-subscriptions.d.ts.map +1 -0
- package/build/actions/resync-subscriptions.js +7 -0
- package/build/actions/resync-subscriptions.js.map +1 -0
- package/build/actions/resync.d.ts +1 -0
- package/build/actions/resync.d.ts.map +1 -1
- package/build/actions/resync.js +7 -3
- package/build/actions/resync.js.map +1 -1
- package/build/actions/webhook.d.ts.map +1 -1
- package/build/actions/webhook.js +6 -3
- package/build/actions/webhook.js.map +1 -1
- package/build/config.d.ts +60 -5
- package/build/config.d.ts.map +1 -1
- package/build/config.js +237 -5
- package/build/config.js.map +1 -1
- package/build/consts.d.ts +75 -3
- package/build/consts.d.ts.map +1 -1
- package/build/consts.js +94 -5
- package/build/consts.js.map +1 -1
- package/build/consumer/capture.d.ts +74 -0
- package/build/consumer/capture.d.ts.map +1 -0
- package/build/consumer/capture.js +291 -0
- package/build/consumer/capture.js.map +1 -0
- package/build/consumer/format.d.ts +27 -0
- package/build/consumer/format.d.ts.map +1 -0
- package/build/consumer/format.js +81 -0
- package/build/consumer/format.js.map +1 -0
- package/build/consumer/handlers.d.ts +28 -0
- package/build/consumer/handlers.d.ts.map +1 -0
- package/build/consumer/handlers.js +173 -0
- package/build/consumer/handlers.js.map +1 -0
- package/build/consumer/index.d.ts +7 -0
- package/build/consumer/index.d.ts.map +1 -0
- package/build/consumer/index.js +6 -0
- package/build/consumer/index.js.map +1 -0
- package/build/consumer/mail.d.ts +27 -0
- package/build/consumer/mail.d.ts.map +1 -0
- package/build/consumer/mail.js +314 -0
- package/build/consumer/mail.js.map +1 -0
- package/build/consumer/origin.d.ts +14 -0
- package/build/consumer/origin.d.ts.map +1 -0
- package/build/consumer/origin.js +47 -0
- package/build/consumer/origin.js.map +1 -0
- package/build/consumer/reconcile.d.ts +12 -0
- package/build/consumer/reconcile.d.ts.map +1 -0
- package/build/consumer/reconcile.js +317 -0
- package/build/consumer/reconcile.js.map +1 -0
- package/build/consumer/records.d.ts +78 -0
- package/build/consumer/records.d.ts.map +1 -0
- package/build/consumer/records.js +296 -0
- package/build/consumer/records.js.map +1 -0
- package/build/consumer/service.d.ts +51 -0
- package/build/consumer/service.d.ts.map +1 -0
- package/build/consumer/service.js +760 -0
- package/build/consumer/service.js.map +1 -0
- package/build/consumer/withdrawal.d.ts +57 -0
- package/build/consumer/withdrawal.d.ts.map +1 -0
- package/build/consumer/withdrawal.js +247 -0
- package/build/consumer/withdrawal.js.map +1 -0
- package/build/entitlement.d.ts +10 -0
- package/build/entitlement.d.ts.map +1 -0
- package/build/entitlement.js +69 -0
- package/build/entitlement.js.map +1 -0
- package/build/entrypoints.d.ts +1 -1
- package/build/entrypoints.d.ts.map +1 -1
- package/build/entrypoints.js +2 -1
- package/build/entrypoints.js.map +1 -1
- package/build/gate.d.ts +32 -4
- package/build/gate.d.ts.map +1 -1
- package/build/gate.js +59 -19
- package/build/gate.js.map +1 -1
- package/build/index.d.ts +18 -3
- package/build/index.d.ts.map +1 -1
- package/build/index.js +15 -3
- package/build/index.js.map +1 -1
- package/build/limit.d.ts +13 -0
- package/build/limit.d.ts.map +1 -0
- package/build/limit.js +47 -0
- package/build/limit.js.map +1 -0
- package/build/model.d.ts +10 -1
- package/build/model.d.ts.map +1 -1
- package/build/model.js +215 -17
- package/build/model.js.map +1 -1
- package/build/observer.d.ts +9 -0
- package/build/observer.d.ts.map +1 -1
- package/build/observer.js +38 -12
- package/build/observer.js.map +1 -1
- package/build/plan.d.ts +22 -0
- package/build/plan.d.ts.map +1 -0
- package/build/plan.js +72 -0
- package/build/plan.js.map +1 -0
- package/build/plugins/checkout-plugins.d.ts +49 -0
- package/build/plugins/checkout-plugins.d.ts.map +1 -0
- package/build/plugins/checkout-plugins.js +124 -0
- package/build/plugins/checkout-plugins.js.map +1 -0
- package/build/plugins/estimate.d.ts +43 -0
- package/build/plugins/estimate.d.ts.map +1 -0
- package/build/plugins/estimate.js +268 -0
- package/build/plugins/estimate.js.map +1 -0
- package/build/plugins/events.d.ts +45 -10
- package/build/plugins/events.d.ts.map +1 -1
- package/build/plugins/events.js +605 -136
- package/build/plugins/events.js.map +1 -1
- package/build/plugins/fx.d.ts +31 -0
- package/build/plugins/fx.d.ts.map +1 -0
- package/build/plugins/fx.js +81 -0
- package/build/plugins/fx.js.map +1 -0
- package/build/plugins/portal.d.ts +37 -0
- package/build/plugins/portal.d.ts.map +1 -0
- package/build/plugins/portal.js +265 -0
- package/build/plugins/portal.js.map +1 -0
- package/build/plugins/refunds.d.ts +33 -0
- package/build/plugins/refunds.d.ts.map +1 -0
- package/build/plugins/refunds.js +80 -0
- package/build/plugins/refunds.js.map +1 -0
- package/build/plugins/stripe.d.ts +36 -4
- package/build/plugins/stripe.d.ts.map +1 -1
- package/build/plugins/stripe.js +492 -97
- package/build/plugins/stripe.js.map +1 -1
- package/build/plugins/webhook-manager.d.ts +46 -0
- package/build/plugins/webhook-manager.d.ts.map +1 -0
- package/build/plugins/webhook-manager.js +231 -0
- package/build/plugins/webhook-manager.js.map +1 -0
- package/build/reconcile.d.ts +15 -0
- package/build/reconcile.d.ts.map +1 -0
- package/build/reconcile.js +88 -0
- package/build/reconcile.js.map +1 -0
- package/build/resource.d.ts +12 -1
- package/build/resource.d.ts.map +1 -1
- package/build/resource.js +97 -6
- package/build/resource.js.map +1 -1
- package/build/service.d.ts +28 -3
- package/build/service.d.ts.map +1 -1
- package/build/service.js +146 -19
- package/build/service.js.map +1 -1
- package/build/subscription.d.ts +48 -0
- package/build/subscription.d.ts.map +1 -0
- package/build/subscription.js +176 -0
- package/build/subscription.js.map +1 -0
- package/build/sync.d.ts +28 -1
- package/build/sync.d.ts.map +1 -1
- package/build/sync.js +208 -31
- package/build/sync.js.map +1 -1
- package/build/types.d.ts +1115 -36
- package/build/types.d.ts.map +1 -1
- package/build/usage.d.ts +63 -0
- package/build/usage.d.ts.map +1 -0
- package/build/usage.js +363 -0
- package/build/usage.js.map +1 -0
- package/build/utils.d.ts +52 -1
- package/build/utils.d.ts.map +1 -1
- package/build/utils.js +69 -7
- package/build/utils.js.map +1 -1
- package/package.json +17 -13
- package/src/actions/index.ts +1 -0
- package/src/actions/resync-subscriptions.ts +10 -0
- package/src/actions/resync.ts +6 -3
- package/src/actions/webhook.ts +5 -3
- package/src/config.ts +264 -8
- package/src/consts.ts +114 -6
- package/src/consumer/capture.ts +362 -0
- package/src/consumer/format.ts +90 -0
- package/src/consumer/handlers.ts +211 -0
- package/src/consumer/index.ts +6 -0
- package/src/consumer/mail.ts +368 -0
- package/src/consumer/origin.ts +63 -0
- package/src/consumer/reconcile.ts +329 -0
- package/src/consumer/records.ts +374 -0
- package/src/consumer/service.ts +868 -0
- package/src/consumer/withdrawal.ts +302 -0
- package/src/entitlement.ts +84 -0
- package/src/entrypoints.ts +2 -1
- package/src/gate.ts +88 -21
- package/src/index.ts +24 -3
- package/src/limit.ts +57 -0
- package/src/model.ts +237 -18
- package/src/observer.ts +44 -11
- package/src/plan.ts +89 -0
- package/src/plugins/checkout-plugins.ts +155 -0
- package/src/plugins/estimate.ts +339 -0
- package/src/plugins/events.ts +677 -121
- package/src/plugins/fx.ts +122 -0
- package/src/plugins/portal.ts +306 -0
- package/src/plugins/refunds.ts +108 -0
- package/src/plugins/stripe.ts +581 -96
- package/src/plugins/webhook-manager.ts +270 -0
- package/src/reconcile.ts +103 -0
- package/src/resource.ts +152 -7
- package/src/service.ts +174 -18
- package/src/subscription.ts +231 -0
- package/src/sync.ts +249 -29
- package/src/types.ts +1227 -32
- package/src/usage.ts +453 -0
- package/src/utils.ts +127 -10
- package/tests/checkout-consumer.spec.ts +348 -0
- package/tests/checkout-plugins.spec.ts +164 -0
- package/tests/checkout.spec.ts +184 -83
- package/tests/consumer-events.spec.ts +218 -0
- package/tests/consumer-fixtures.ts +132 -0
- package/tests/consumer-ops.spec.ts +351 -0
- package/tests/consumer-rights.integration.spec.ts +150 -0
- package/tests/consumer-rights.spec.ts +501 -0
- package/tests/context.ts +109 -0
- package/tests/entitlement.spec.ts +103 -0
- package/tests/estimate.spec.ts +240 -0
- package/tests/events.spec.ts +356 -0
- package/tests/fake-stripe.ts +972 -0
- package/tests/gate.spec.ts +62 -72
- package/tests/limit-gate.spec.ts +68 -0
- package/tests/portal.spec.ts +200 -0
- package/tests/protocol.spec.ts +23 -6
- package/tests/sync.spec.ts +114 -0
- package/tests/usage.integration.spec.ts +101 -0
- package/tests/usage.spec.ts +171 -0
- package/tests/webhook-manager.spec.ts +152 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/consumer/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EACL,uBAAuB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,uBAAuB,EACtF,6BAA6B,EAAE,WAAW,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,mBAAmB,EACjH,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EACvF,0BAA0B,EAAE,YAAY,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,WAAW,EACnG,gBAAgB,EAAE,qBAAqB,EAAE,2BAA2B,GACrE,MAAM,mBAAmB,CAAA;AAM1B,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,EACL,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,cAAc,EAAE,kBAAkB,EACpH,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,GACvF,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EACL,YAAY,EAAE,2BAA2B,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EACnG,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,GAC3E,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAOtE,MAAM,cAAc,GAAG,CAAC,KAAwC,EAAoB,EAAE;IACpF,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACpG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAEtC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACpE,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,KAAK,EAAE,GAAe,EAAiC,EAAE;IAC7E,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAA;IACxD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAC9C,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,+FAA+F;AAC/F,MAAM,SAAS,GAAG,CAAC,MAAiD,EAA0B,EAAE,CAC9F,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CACpF,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;AAE5D,MAAM,aAAa,GAAG,CAAC,WAAsC,EAAE,OAA+B,EAAE,MAAe,EAAsB,EAAE,CAAC,CAAC;IACvI,aAAa,EAAE,WAAW,CAAC,EAAY;IACvC,UAAU,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;IAC5C,OAAO;IACP,MAAM;CACP,CAAC,CAAA;AAEF,mDAAmD;AACnD,MAAM,YAAY,GAAG,CAAC,KAAyB,EAAsB,EAAE,CACrE,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAEtE,iFAAiF;AACjF,MAAM,kBAAkB,GAAG,KAAK,EAAE,GAAe,EAAE,QAA4B,EAAkC,EAAE;IACjH,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,SAAS,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IAEhD,OAAO,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;WACvD,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;WAC7D,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;AAClF,CAAC,CAAA;AAED,8EAA8E;AAC9E,MAAM,mBAAmB,GAAG,KAAK,EAAE,GAAe,EAAE,QAA4B,EAAE,KAAa,EAAkC,EAAE;IACjI,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAExD,OAAO,QAAQ,IAAI,IAAI,IAAI,MAAM,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;AACvF,CAAC,CAAA;AAED,2FAA2F;AAC3F,MAAM,aAAa,GAAG,KAAK,EAAE,GAAe,EAAE,KAAa,EAA0B,EAAE;IACrF,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,uGAAuG;IACvG,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAA;IAChE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IAC/H,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAkB,CAAC,CAAC,CAAC,CAAA;IAEzI,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACnD,CAAC,CAAA;AAcD,sGAAsG;AACtG,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAuE,CAAA;AAEnG,kGAAkG;AAClG,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,GAAe,EAAE,MAAiD,EAAE,QAAgB,EAAE,QAA4B,EAClH,GAAwB,EACN,EAAE;IACpB,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAkB,CAAC,CAAC,CAAC,aAAsB,CAAA;IACrF,IAAI,CAAC;QACH,MAAM,GAAG,EAAE,CAAA;QACX,MAAM,WAAW,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;QAEvG,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,aAAa,MAAM,kBAAkB,QAAQ,kCAAkC,EAAE,KAAK,CAAC,CAAA;QACrG,MAAM,WAAW,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAEjI,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,GAAe,EAAE,WAAsC,EAAE,QAAwB,EAAE,MAAwB,EAC3G,WAAsH,EACtH,SAAqC,EACnB,EAAE,CAAC,MAAM,oBAAoB,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,CAAC,EAAY,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAC3H,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC;QACtC,YAAY,EAAE,WAAW,CAAC,EAAY;QACtC,QAAQ,EAAE,cAAc,WAAW,CAAC,EAAY,EAAE;QAClD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;QACjC,UAAU,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;QAC5C,MAAM;QACN,MAAM,EAAE,OAAO,CAAC;YACd,WAAW,EAAE,SAAS,EAAE,aAAa,IAAI,CAAC;YAC1C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,QAAQ,EAAE,WAAW,EAAE,QAAQ;YAC/B,QAAQ,EAAE,SAAS,EAAE,QAAQ;YAC7B,YAAY,EAAE,SAAS,EAAE,YAAY;SACtC,CAA8C;QAC/C,KAAK,EAAE,WAAW,IAAI,IAAI;YACxB,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI;QACpH,oBAAoB,EAAE,SAAS,EAAE,oBAAoB,KAAK,IAAI;KAC/D,EAAE,GAAG,CAAC,CAAA;AACT,CAAC,CAAC,CAAA;AAEF,uCAAuC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,GAAe,EAAE,WAAsC,EAAE,MAA0B,EACjE,EAAE,CAAC,MAAM,oBAAoB,CAAC,GAAG,EAAE,cAAc,EAAE,WAAW,CAAC,EAAY,EAAE,WAAW,CAAC,QAAQ,IAAI,SAAS,EAAE,KAAK,IAAI,EAAE;IAC7I,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC;QAChD,cAAc,EAAE,WAAW,CAAC,EAAY;QACxC,QAAQ,EAAE,gBAAgB,WAAW,CAAC,EAAY,EAAE;QACpD,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,SAAS;QAC3C,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,IAAI,EAAE,WAAW,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,QAAQ;QAC/D,MAAM;QACN,cAAc,EAAE,WAAW,CAAC,cAAc,IAAI,SAAS;QACvD,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5F,UAAU,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;KAC7C,CAAwE,EAAE,GAAG,CAAC,CAAA;AACjF,CAAC,CAAC,CAAA;AAEF,kCAAkC;AAClC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,GAAe,EAAE,OAA8B,EAAoB,EAAE,CACvG,MAAM,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,EAAY,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAC5F,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAC3C,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS;QAC7G,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW;QACjG,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAClE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QAC9E,QAAQ,EAAE,WAAW,OAAO,CAAC,EAAY,EAAE;KAC5C,CAAmE,EAAE,GAAG,CAAC,CAAA;AAC5E,CAAC,CAAC,CAAA;AAEJ;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,GAAe,EAAE,MAAc,EAAE,WAAsC,EAAE,GAA8B,EACvG,OAAO,GAAW,CAAC,EACD,EAAE;IACpB,MAAM,EAAE,GAAG,WAAW,CAAC,EAAY,CAAA;IACnC,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC9F,MAAM,WAAW,GAAG,WAAW,IAAI,IAAI,IAAI,GAAG,CAAC,SAAS,IAAI,IAAI;WAC3D,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;IAChE,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAA;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW;YAC3D,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE;YAC/D,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAE,WAAoB,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,kBAAkB,EAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,EAChI,EAAE,cAAc,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,OAAO,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,WAAW,EAAE,CAAC,CAAA;QAC3G,MAAM,WAAW,CAAC,GAAG,EAAE;YACrB,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,IAAI;YACrG,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,CAAC;SAC7G,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,WAAW,CAAC,GAAG,EAAE;YACrB,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,KAAK;YACtG,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;SACpD,CAAC,CAAA;QAEF,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,KAAK,GAAW,uBAAuB,EAAE,IAAI,GAA0B,EAAE,EAClD,EAAE;IACzB,mFAAmF;IACnF,IAAI,SAAS,GAAwB,IAAI,CAAC,MAAM,CAAA;IAChD,IAAI,aAAkC,CAAA;IACtC,MAAM,SAAS,GAAG,GAAY,EAAE,CAAC,CAAC,SAAS,IAAI,aAAa,CAAC,KAAK,KAAK,CAAA;IACvE,IAAI,KAAK,GAAsB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAA;IACjD,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAA;IAC/B,IAAI,QAAQ,GAAgC,IAAI,CAAA;IAChD,MAAM,QAAQ,GAAG,KAAK,EAAE,GAAe,EAAmB,EAAE,CAC1D,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,CAAA;IAC5E,MAAM,SAAS,GAA4B;QACzC,IAAI,OAAO,KAAK,OAAO,SAAS,EAAE,CAAA,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ;KAC3E,CAAA;IAED,MAAM,OAAO,GAA0B,iBAAiB,CAAwB,KAAK,EAAE;QACrF,IAAI,OAAO,KAAK,OAAO,SAAS,EAAE,CAAA,CAAC,CAAC;QAEpC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,EAA2B,CAAC,CAAC,oBAAoB,EAAE;QAEtG,OAAO,EAAE,KAAK,EAAC,QAAQ,EAAC,EAAE;YACxB,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAA2B,CAAA;YACxD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAE5D,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACjG,CAAC;QAED,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE;YACvD,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAA2B,CAAA;YACxD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAA;YACxD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;YAE7F,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACtC,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,GAAG,EAAE,EAAE,EAAE;YAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAA2B,CAAA;YACxD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;YAE7D,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACjG,CAAC;QAED,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAA2B,CAAA;YACxD,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,CAAA;YACpC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE;gBACxD,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;aAC3D,CAAC,CAAA;YACF,MAAM,KAAK,GAAmB,EAAE,CAAA;YAChC,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;gBACrC,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI;oBAAE,SAAQ;gBAC7C,IAAI,YAAY,GAAG,IAAI,CAAA;gBACvB,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;oBAClE,IAAI,CAAC;wBACH,YAAY,GAAG,CAAC,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAA;oBACpF,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,CAAC,uBAAuB,QAAQ,CAAC,UAAU,cAAc,EAAE,KAAK,CAAC,CAAA;oBAC/E,CAAC;gBACH,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAA;YACpD,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC;QAED,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE;YAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAA2B,CAAA;YACxD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;YACvC,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YACvG,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,MAAM,CAAC,eAAe,CAAA;YACpF,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;YACxC,MAAM,IAAI,GAA2B;gBACnC,QAAQ,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC;gBAC5B,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI;gBACrD,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,IAAI;gBACxD,QAAQ;gBACR,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;gBACzD,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,WAAW,EAAE,4BAA4B;gBACzC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;gBAChC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC9D,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzC,EAAE;aACH,CAAA;YAED,OAAO,IAAI,CAAA;QACb,CAAC;QAED,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAA2B,CAAA;YACxD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;YACvC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;gBAC1C,MAAM,IAAI,mBAAmB,CAAC,+BAA+B,CAAC,CAAA;YAChE,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;YACrB,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;YACnE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;YACtF,4FAA4F;YAC5F,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC5F,MAAM,IAAI,0BAA0B,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YACtJ,CAAC;YACD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAA;YAC3D,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;YACxC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBACzD,IAAI,EAAE,WAAW,CAAC,WAAW;gBAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;gBAClC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;gBACrD,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,WAAW,EAAE,4BAA4B;gBACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;gBACzF,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;gBACrC,QAAQ;gBACR,SAAS,EAAE,EAAE;gBACb,GAAG,YAAY,CAAC,MAAM,CAAC;aACxB,CAA0B,CAAC,CAAA;YAC5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;oBACzF,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE;iBACtD,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YAChH,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAEjC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAY,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;QAC5G,CAAC;QAED,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE;YACjD,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAA2B,CAAA;YACxD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAA;YACxD,IAAI,MAAM,EAAE,UAAU,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;gBACnD,OAAM;YACR,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;YAC3D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;gBACxC,MAAM,IAAI,0BAA0B,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YAC9G,CAAC;QACH,CAAC;QAED,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE;YACpD,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAA2B,CAAA;YACxD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;YACvC,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,OAAO,EAAE,QAAQ,IAAI,MAAM,CAAC,eAAe,CAAA;YACjF,MAAM,IAAI,GAA0B;gBAClC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,iBAAiB;uBACxC,CAAC,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC1E,OAAO;gBACP,QAAQ;gBACR,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;gBACzD,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,WAAW,EAAE,4BAA4B;gBACzC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;gBAChC,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI;aAChC,CAAA;YAED,OAAO,IAAI,CAAA;QACb,CAAC;QAED,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE;YAClE,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAA2B,CAAA;YACxD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;YACvC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBACzC,MAAM,IAAI,mBAAmB,CAAC,8BAA8B,CAAC,CAAA;YAC/D,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC5C,MAAM,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACnD,CAAC;YACD,IAAI,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC9C,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACrC,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;YACrB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,sBAAsB,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;YACzF,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAA;YAC3D,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,IAAI,MAAM,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;YACtF,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBACzD,IAAI,EAAE,WAAW,CAAC,iBAAiB;gBACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;gBAClC,WAAW,EAAE,EAAE;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ;gBACR,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,WAAW,EAAE,4BAA4B;gBACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBAC/G,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;gBACrC,SAAS,EAAE,EAAE;gBACb,SAAS;gBACT,GAAG,YAAY,CAAC,MAAM,CAAC;aACxB,CAA0B,CAAC,CAAA;YAC5B,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAY,CAAC,CAAA;YAClE,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAEjC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAY,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,CAAA;QAC7E,CAAC;QAED,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE;YAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAA2B,CAAA;YACxD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAA;YACxD,IAAI,MAAM,EAAE,UAAU,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;gBAClD,OAAO,IAAI,CAAA;YACb,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC7D,0FAA0F;YAC1F,2EAA2E;YAC3E,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;gBACzE,OAAO,IAAI,CAAA;YACb,CAAC;YACD,MAAM,MAAM,GAAG,cAAc,IAAI,IAAI,IAAI,cAAc,KAAK,EAAE;gBAC5D,CAAC,CAAC,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAC7E,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,iBAAiB,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ;mBAC9F,MAAM,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW;mBACvE,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBACpF,MAAM,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAA;YAC9C,CAAC;YAED,OAAO,MAAM,CAAA;QACf,CAAC;QAED,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAA2B,CAAA;YACxD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;YACvC,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC7D,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;YACrB,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU;gBACvC,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC3B,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;iBACpF,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;gBACzE,CAAC,CAAC,EAAE,CAAA;YACN,MAAM,UAAU,GAA0B,EAAE,CAAA;YAC5C,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;gBAC5B,IAAI,QAAQ,GAAoC,IAAI,CAAA;gBACpD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;oBAClB,IAAI,CAAC;wBACH,QAAQ,GAAG,CAAC,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;oBACzE,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,CAAC,qCAAqC,QAAQ,CAAC,UAAU,UAAU,EAAE,KAAK,CAAC,CAAA;oBACzF,CAAC;gBACH,CAAC;gBACD,wFAAwF;gBACxF,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,IAAI,QAAQ,CAAC,WAAW,KAAK,CAAC;oBAAE,SAAQ;gBACpG,UAAU,CAAC,IAAI,CAAC;oBACd,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAC3C,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAgB,CAAC;oBAC7C,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;oBAC3C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,QAAQ;oBACR,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,gBAAgB,IAAI,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE;iBAC9E,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,MAAM,CAAC,eAAe,CAAA;YAEjF,OAAO,OAAO,CAAC;gBACb,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;gBACtD,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBACnF,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;aACnC,CAAuE,CAAA;QAC1E,CAAC;QAED,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;YACxC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAA2B,CAAA;YACxD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;YACvC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;gBAClC,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,CAAC,CAAA;YACvD,CAAC;YACD,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,YAAY,CAAC,WAAW,CAAC,CAAA;YACrC,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;YACrB,MAAM,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAA;YACzG,MAAM,QAAQ,GAAG,OAAO,KAAK,kBAAkB,CAAC,KAAK,CAAA;YAErD,IAAI,QAAQ,GAA0B,IAAI,CAAA;YAC1C,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,QAAQ,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;oBACrF,CAAC,CAAC,MAAM,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;gBACnD,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ;oBAAE,QAAQ,GAAG,IAAI,CAAA;YACjF,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;YACzE,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,QAAQ,IAAI,IAAI;oBAAE,MAAM,IAAI,qBAAqB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAA;gBAC1F,IAAI,CAAC,QAAQ,CAAC,OAAO;oBAAE,MAAM,IAAI,qBAAqB,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAA;gBAC9F,IAAI,QAAQ,CAAC,WAAW,IAAI,IAAI,IAAI,QAAQ,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;oBAChE,MAAM,IAAI,qBAAqB,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAA;gBACxE,CAAC;YACH,CAAC;YACD,MAAM,OAAO,GAAG,SAAS,CAAC;gBACxB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK;aACjH,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAChG,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,QAAQ,IAAI,OAAO,EAAE,QAAQ,IAAI,MAAM,CAAC,eAAe,CAAA;YACnG,MAAM,eAAe,GAAG;gBACtB,IAAI,EAAE,eAAe,CAAC,UAAU,EAAE,OAAO;gBACzC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,OAAO,EAAE,QAAQ;gBACjD,UAAU,EAAE,QAAQ,EAAE,UAAU;gBAChC,cAAc,EAAE,QAAQ,EAAE,cAAc,IAAI,SAAS;gBACrD,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,QAAQ,EAAE,WAAW;gBACtD,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ;gBAC5C,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,4BAA4B;gBAC1E,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC;aAClG,CAAA;YAED,qGAAqG;YACrG,IAAI,QAAQ,EAAE,WAAW,IAAI,IAAI,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;gBACrI,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;oBAC9D,GAAG,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,gBAAgB,CAAC,QAAQ;iBACrG,CAA8B,CAAC,CAAA;gBAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAsB,CAAA;gBACrE,CAAC;gBACD,MAAM,QAAQ,GAAG,QAAQ,IAAI,QAAQ,CAAA;gBAErC,OAAO,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;YACnF,CAAC;YAED,IAAI,MAAwB,CAAA;YAC5B,IAAI,WAAW,GAAiC,IAAI,CAAA;YACpD,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;gBACzE,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAA;YACpC,CAAC;iBAAM,IAAI,QAAQ,CAAC,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC9F,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAA;YACnC,CAAC;iBAAM,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;gBAC/D,IAAI,CAAC;oBACH,WAAW,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;gBACjE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,WAAW,CAAC,GAAG,EAAE;wBACrB,QAAQ,EAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK;wBAC9G,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;qBACxB,CAAC,CAAA;gBACJ,CAAC;gBACD,MAAM,GAAG,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAA;gBACpF,IAAI,WAAW,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,IAAI,WAAW,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;oBACjG,IAAI,QAAQ;wBAAE,MAAM,IAAI,qBAAqB,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAA;oBACpF,WAAW,GAAG,IAAI,CAAA;oBAClB,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAA;gBAClC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAA;YAClC,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBACjE,GAAG,eAAe,EAAE,MAAM;gBAC1B,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS;aACtG,CAA8B,CAAC,CAAA;YAChC,MAAM,YAAY,GAAG,WAAW,CAAC,EAAY,CAAA;YAE7C,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,UAAU,IAAI,MAAM,KAAK,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvG,qEAAqE;gBACrE,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;oBACvG,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE;iBAC7C,CAAC,CAAA;gBACF,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;oBACrE,MAAM,WAAW,CAAC,GAAG,EAAE;wBACrB,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI;wBAC7G,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;qBACrD,CAAC,CAAA;oBACF,MAAM,QAAQ,GAAG,MAAM,EAAE,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;oBAElI,MAAM,QAAQ,GAAG,QAAQ,IAAI,WAAW,CAAA;oBAExC,OAAO,QAAQ;wBACb,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;wBAC5E,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAsB,CAAA;gBACrE,CAAC;gBACD,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,CAAA;YAC3D,CAAC;YACD,IAAI,WAAW,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBAC5C,MAAM,WAAW,CAAC,GAAG,EAAE;oBACrB,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI;oBAC5G,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBACjE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;wBACrB,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ;wBAC5F,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ;qBACzE,CAAC;iBACH,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;YAE9E,IAAI,KAAK,GAAqB,MAAM,CAAA;YACpC,IAAI,SAAS,GAA+B,IAAI,CAAA;YAChD,IAAI,MAAM,KAAK,gBAAgB,CAAC,UAAU,IAAI,QAAQ,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;gBACtF,SAAS,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;gBACjG,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAA;YAC9H,CAAC;YACD,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,gBAAgB,CAAC,QAAQ,IAAI,KAAK,KAAK,gBAAgB,CAAC,MAAM,CAAC;mBAC7F,CAAC,MAAM,KAAK,gBAAgB,CAAC,UAAU,IAAI,MAAM,KAAK,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpF,MAAM,gBAAgB,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;YACnF,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAsB,CAAA;YACzE,CAAC;YAED,OAAO,OAAO,CAAC;gBACb,GAAG,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK;gBACzD,WAAW,EAAE,SAAS,EAAE,aAAa,IAAI,WAAW,EAAE,WAAW;gBACjE,oBAAoB,EAAE,SAAS,EAAE,oBAAoB;aACtD,CAAsB,CAAA;QACzB,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;YACtC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAA2B,CAAA;YACxD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;YACvC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;gBACpC,MAAM,IAAI,mBAAmB,CAAC,wBAAwB,CAAC,CAAA;YACzD,CAAC;YACD,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,YAAY,CAAC,WAAW,CAAC,CAAA;YACrC,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;YACrB,MAAM,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAA;YACzG,MAAM,QAAQ,GAAG,OAAO,KAAK,kBAAkB,CAAC,KAAK,CAAA;YAErD,IAAI,QAAQ,GAA0B,IAAI,CAAA;YAC1C,IAAI,GAAG,GAAqC,IAAI,CAAA;YAChD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;oBAChC,GAAG,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAA;gBACxF,CAAC;qBAAM,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;oBACpC,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;oBAC1D,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;wBAClG,GAAG,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAA;oBAC5F,CAAC;gBACH,CAAC;gBACD,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,2BAA2B,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;YACzH,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;gBACvE,IAAI,QAAQ,EAAE,cAAc,IAAI,IAAI,EAAE,CAAC;oBACrC,GAAG,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAA;gBAC5F,CAAC;qBAAM,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;oBACrD,GAAG,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,2BAA2B,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;gBAClF,CAAC;YACH,CAAC;YACD,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAC9G,IAAI,QAAQ,IAAI,GAAG,IAAI,IAAI;gBAAE,MAAM,IAAI,uBAAuB,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAA;YAC5G,IAAI,QAAQ,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,uBAAuB,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAA;YAC7F,IAAI,GAAG,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACpC,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;YAC1E,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAChH,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAClE,IAAI,MAA0B,CAAA;YAC9B,IAAI,WAA6B,CAAA;YACjC,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,aAAa,EAAE,CAAC;gBACjD,4EAA4E;gBAC5E,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAA;YACpC,CAAC;iBAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;gBACxD,WAAW,GAAG,uBAAuB,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,IAAI,OAAO,EACjG,SAAS,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;gBAC7E,MAAM,GAAG,GAAG,CAAC,iBAAiB,KAAK,IAAI,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;oBACpG,CAAC,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAA;YACxE,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAA;YACtC,CAAC;YACD,MAAM,OAAO,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YACtF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,QAAQ,IAAI,OAAO,EAAE,QAAQ,IAAI,MAAM,CAAC,eAAe,CAAA;YACnG,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBACjE,IAAI,EAAE,eAAe,CAAC,YAAY,EAAE,OAAO;gBAC3C,QAAQ,EAAE,GAAG,EAAE,QAAQ,IAAI,OAAO,EAAE,QAAQ;gBAC5C,UAAU,EAAE,QAAQ,EAAE,UAAU;gBAChC,cAAc,EAAE,GAAG,EAAE,UAAU;gBAC/B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,QAAQ,EAAE,WAAW;gBACtD,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK;gBAClC,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,IAAI;gBACrG,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,4BAA4B;gBACpF,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW;gBAChG,GAAG,YAAY,CAAC,MAAM,CAAC;aACxB,CAA8B,CAAC,CAAA;YAChC,IAAI,KAAK,GAAG,MAAM,CAAA;YAClB,IAAI,MAAM,KAAK,kBAAkB,CAAC,SAAS,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC3D,KAAK,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAA;YAC7I,CAAC;YACD,IAAI,QAAQ,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;gBAC5C,MAAM,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,cAAc,EAAE,WAAW,CAAC,EAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC,CAAA;YAC7H,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,CAAC,EAAY,CAAC,CAAA;YAC5F,MAAM,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;YACjD,MAAM,OAAO,GAAG,SAAS,CAAC;gBACxB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,IAAI,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChH,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;aACjH,CAAC,CAAA;YACF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAwB,CAAA;YAC3E,CAAC;YAED,OAAO,OAAO,CAAC;gBACb,GAAG,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;aAC3E,CAAwB,CAAA;QAC3B,CAAC;QAED,QAAQ,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,IAAI,CAAA,CAAC,CAAC;QAClC,eAAe,EAAE,IAAI,CAAC,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAA,CAAC,CAAC;QAC5C,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK;QACvB,YAAY,EAAE,GAAG,EAAE,CAAC,QAAQ;QAE5B,SAAS,EAAE,KAAK,EAAE,aAAa,GAAG,EAAE,EAAE,EAAE,CACtC,MAAM,uBAAuB,CAAC,OAAO,CAAC,SAAS,EAA2B,EAAE,SAAS,EAAE,aAAa,CAAC;KACxG,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;QACvB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAA;QAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAA2B,CAAA;QACxD,KAAK,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,CAAC;aACpG,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;IAC5F,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE;QACvC,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YAC5B,IAAI,IAAI,KAAK,aAAa;gBAAE,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAA;;gBAClD,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAA;QACtC,CAAC;QACD,IAAI,QAAQ,CAAC,KAAK,IAAI,IAAI;YAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAA;QAClD,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI;YAAE,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,uFAAuF;AACvF,MAAM,SAAS,GAAG,CAChB,WAAsC,EAAE,OAA+B,EAAE,MAAe,EAAE,MAAyB,EAChG,EAAE,CAAC,OAAO,CAAC;IAC9B,GAAG,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC;IAC9C,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC,MAA0B;IACxD,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,SAAS;IACjD,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,SAAS;CAC5C,CAAsB,CAAA;AAEvB;;;GAGG;AACH,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAe,EAAE,WAAsC,EAA6B,EAAE;IACpH,IAAI,WAAW,CAAC,MAAM,KAAK,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACvD,OAAO,WAAW,CAAC,MAA0B,CAAA;IAC/C,CAAC;IACD,MAAM,EAAE,GAAG,WAAW,CAAC,EAAY,CAAA;IACnC,MAAM,QAAQ,GAAG,CAAC,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAA;IAC5I,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,gBAAgB,CAAC,QAAQ,CAAA;IAClC,CAAC;IAED,OAAO,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI;QAC1F,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAA;AAC3D,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,KAAK,EAAE,GAAe,EAAE,OAAgB,EAAE,KAA8B,EAAiB,EAAE;IAC9G,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAA;IACxD,kFAAkF;IAClF,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,OAAM;IACR,CAAC;IACD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,oBAAoB,IAAI,UAAU,CAAC,kBAAkB,IAAI,UAAU,CAAC,iBAAiB;WAC3G,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,YAAY,CAAA;IACrD,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAC1C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,CAAA;QAC3B,IAAI,MAAM,EAAE,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,kGAAkG;kBAC3G,4CAA4C,CAAC,CAAA;QACnD,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,cAAc,CAAA;QAC3C,IAAK,GAA8D,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YACjG,OAAO,CAAC,IAAI,CAAC,yCAAyC,KAAK,oCAAoC,CAAC,CAAA;QAClG,CAAC;IACH,CAAC;IACD,IAAI,OAAO,IAAI,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,gBAAgB,IAAI,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAA;IAC9G,CAAC;AACH,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,GAAM,EAAE,IAAI,GAA0B,EAAE,EAAE,IAAI,GAA4B,aAAa,EACpF,EAAE;IACL,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,+BAA+B,EAAE,CAAC;QAC7D,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAU,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,uBAAuB,CAAA;IACnD,4DAA4D;IAC5D,IAAI,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAwB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACtF,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,GAAG,yBAAyB,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QAC/G,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACnC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;IACvF,CAAC;SAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QAC9B,kDAAkD;QAClD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,GAAM,EAAE,IAAI,GAA0B,EAAE,EACrC,EAAE,CAAC,sBAAsB,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type Stripe from 'stripe';
|
|
2
|
+
import type { WithdrawalEstimate } from '@owlmeans/payment';
|
|
3
|
+
import type { Context as ApiContext } from '@owlmeans/server-api';
|
|
4
|
+
import type { ConsumerDeclarationRecord, PurchaseRecord, UsageMeter, UsageReading } from '../types.js';
|
|
5
|
+
/** What a withdrawal of one purchase reimburses, as computed at one instant. */
|
|
6
|
+
export interface WithdrawalComputation {
|
|
7
|
+
reading: UsageReading;
|
|
8
|
+
/** Gross, tax included — what is refunded. */
|
|
9
|
+
refundMinor: number;
|
|
10
|
+
/** Net of tax — the credit note's line amount. */
|
|
11
|
+
netMinor: number;
|
|
12
|
+
estimate: WithdrawalEstimate;
|
|
13
|
+
/** The units the deduction counts: used after consent, plus settled debt and earlier claw-backs. */
|
|
14
|
+
deducted: number;
|
|
15
|
+
/** What the application takes back from the balance: the purchase's units still unused. */
|
|
16
|
+
unitsReturned: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The refund of a withdrawal from one purchase, in the consumer's favour (`@owlmeans/payment`
|
|
20
|
+
* calculators). The meter's deduction is `usedAfter + settled + clawed`: units used after consent
|
|
21
|
+
* (before it the consumer bears no cost), units that paid an earlier overdraft, units already
|
|
22
|
+
* refunded by money. A subscription's `time` components count from its start request; without
|
|
23
|
+
* one nothing is deducted for time.
|
|
24
|
+
*/
|
|
25
|
+
export declare const computeWithdrawal: (ctx: ApiContext, meter: UsageMeter, purchase: PurchaseRecord, at: Date) => Promise<WithdrawalComputation>;
|
|
26
|
+
export interface WithdrawalExecution {
|
|
27
|
+
/** Every paygate step succeeded (or had nothing to do). */
|
|
28
|
+
ok: boolean;
|
|
29
|
+
refundId?: string;
|
|
30
|
+
creditNoteId?: string;
|
|
31
|
+
refundedMinor: number;
|
|
32
|
+
subscriptionCanceled: boolean;
|
|
33
|
+
/** A step can never succeed without an operator (no payment to refund). */
|
|
34
|
+
needsReview: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Execute a withdrawal at the paygate, the first attempt of every call under the idempotency key
|
|
38
|
+
* `withdrawal:<id>:<step>` (a retry by `reconcile` adopts what an earlier attempt made):
|
|
39
|
+
*
|
|
40
|
+
* 1. a subscription purchase: `subscriptions.cancel` at once, without proration or a final invoice;
|
|
41
|
+
* 2. an invoice-backed purchase: `creditNotes.preview` of the invoice line at the net refund, then
|
|
42
|
+
* OUR `refunds.create` for the previewed total (metadata `withdrawalId` — the refund webhook then
|
|
43
|
+
* tells observers not to claw back), then `creditNotes.create` linking that refund — the
|
|
44
|
+
* corrective tax document; a failed credit note keeps the plain refund and is recorded;
|
|
45
|
+
* 3. no invoice: a plain proportional refund on the payment intent.
|
|
46
|
+
*
|
|
47
|
+
* Steps that already succeeded (a recorded `ok` event) are skipped. Every step is an event.
|
|
48
|
+
*/
|
|
49
|
+
export declare const executeWithdrawal: (ctx: ApiContext, stripe: Stripe, declaration: ConsumerDeclarationRecord, purchase: PurchaseRecord, computation: {
|
|
50
|
+
refundMinor: number;
|
|
51
|
+
netMinor: number;
|
|
52
|
+
}, opts?: {
|
|
53
|
+
attempt?: number;
|
|
54
|
+
}) => Promise<WithdrawalExecution>;
|
|
55
|
+
/** Retry a credit note that failed after its refund succeeded. */
|
|
56
|
+
export declare const retryCreditNote: (ctx: ApiContext, stripe: Stripe, declaration: ConsumerDeclarationRecord, purchase: PurchaseRecord, netMinor: number, refundId: string, attempt: number) => Promise<boolean>;
|
|
57
|
+
//# sourceMappingURL=withdrawal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdrawal.d.ts","sourceRoot":"","sources":["../../src/consumer/withdrawal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAIhC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAOjE,OAAO,KAAK,EACV,yBAAyB,EAA6B,cAAc,EAAE,UAAU,EAAE,YAAY,EAC/F,MAAM,aAAa,CAAA;AAIpB,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,YAAY,CAAA;IACrB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,oGAAoG;IACpG,QAAQ,EAAE,MAAM,CAAA;IAChB,2FAA2F;IAC3F,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,QACvB,UAAU,SAAS,UAAU,YAAY,cAAc,MAAM,IAAI,KACrE,OAAO,CAAC,qBAAqB,CAyD/B,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,EAAE,EAAE,OAAO,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,2EAA2E;IAC3E,WAAW,EAAE,OAAO,CAAA;CACrB;AA6BD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,QACvB,UAAU,UAAU,MAAM,eAAe,yBAAyB,YAAY,cAAc,eACpF;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,SAAQ;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,KACjF,OAAO,CAAC,mBAAmB,CA8G7B,CAAA;AAED,kEAAkE;AAClE,eAAO,MAAM,eAAe,QACrB,UAAU,UAAU,MAAM,eAAe,yBAAyB,YAAY,cAAc,YACvF,MAAM,YAAY,MAAM,WAAW,MAAM,KAClD,OAAO,CAAC,OAAO,CA+BjB,CAAA"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import { consumerText, oneTimeWithdrawalRefund, PurchaseKind, subscriptionWithdrawalRefund, } from '@owlmeans/payment';
|
|
2
|
+
import { STRIPE_OWNER_KEY, STRIPE_OWNER_VALUE, STRIPE_PAYGATE_ALIAS } from '../consts.js';
|
|
3
|
+
import { findPlan } from '../plan.js';
|
|
4
|
+
import { compact, errorText, isMissingObject, subscriptions } from '../utils.js';
|
|
5
|
+
import { invoiceEvidenceOf } from './capture.js';
|
|
6
|
+
import { formatDate } from './format.js';
|
|
7
|
+
import { hasEvent, patchPurchase, purchaseRefOf, recordEvent } from './records.js';
|
|
8
|
+
const DAY_MS = 86_400_000;
|
|
9
|
+
/**
|
|
10
|
+
* The refund of a withdrawal from one purchase, in the consumer's favour (`@owlmeans/payment`
|
|
11
|
+
* calculators). The meter's deduction is `usedAfter + settled + clawed`: units used after consent
|
|
12
|
+
* (before it the consumer bears no cost), units that paid an earlier overdraft, units already
|
|
13
|
+
* refunded by money. A subscription's `time` components count from its start request; without
|
|
14
|
+
* one nothing is deducted for time.
|
|
15
|
+
*/
|
|
16
|
+
export const computeWithdrawal = async (ctx, meter, purchase, at) => {
|
|
17
|
+
const reading = await meter.used(ctx, compact({
|
|
18
|
+
entityId: purchase.entityId, purchase: purchaseRefOf(purchase),
|
|
19
|
+
after: purchase.consentedAt != null ? new Date(purchase.consentedAt) : undefined, at,
|
|
20
|
+
}));
|
|
21
|
+
const deducted = Math.max(0, reading.usedAfter) + Math.max(0, reading.settled ?? 0) + Math.max(0, reading.clawed ?? 0);
|
|
22
|
+
const unitsReturned = Math.max(0, Math.floor(reading.remaining
|
|
23
|
+
?? reading.granted - reading.used - (reading.settled ?? 0) - (reading.clawed ?? 0)));
|
|
24
|
+
const paid = purchase.amountTotalMinor;
|
|
25
|
+
const refunded = purchase.refundedMinor ?? 0;
|
|
26
|
+
const net = purchase.amountSubtotalMinor;
|
|
27
|
+
// The earlier refunds' net share, so the credit note never credits more than is left.
|
|
28
|
+
const refundedNet = paid > 0 ? Math.floor(refunded * net / paid) : 0;
|
|
29
|
+
if (purchase.kind === PurchaseKind.TopUp) {
|
|
30
|
+
const gross = oneTimeWithdrawalRefund({ paidMinor: paid, refundedMinor: refunded, unitsGranted: reading.granted, unitsUsed: deducted });
|
|
31
|
+
const netRefund = oneTimeWithdrawalRefund({ paidMinor: net, refundedMinor: refundedNet, unitsGranted: reading.granted, unitsUsed: deducted });
|
|
32
|
+
const open = Math.max(0, paid - refunded);
|
|
33
|
+
return {
|
|
34
|
+
reading, deducted, unitsReturned,
|
|
35
|
+
refundMinor: gross.refundMinor,
|
|
36
|
+
netMinor: netRefund.refundMinor,
|
|
37
|
+
estimate: {
|
|
38
|
+
refundMinor: gross.refundMinor, currency: purchase.currency, timeDeductionMinor: 0,
|
|
39
|
+
unitsDeductionMinor: Math.max(0, open - gross.refundMinor),
|
|
40
|
+
unitsUsed: Math.min(deducted, reading.granted), unitsGranted: reading.granted,
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const subscription = purchase.subscriptionId != null
|
|
45
|
+
? await subscriptions(ctx).byExternalId(purchase.subscriptionId, STRIPE_PAYGATE_ALIAS) : null;
|
|
46
|
+
const plan = purchase.planSku != null ? await findPlan(ctx, purchase.planSku) : null;
|
|
47
|
+
const purchasedAt = new Date(purchase.purchasedAt);
|
|
48
|
+
const periodStart = subscription?.periodStart != null ? new Date(subscription.periodStart) : purchasedAt;
|
|
49
|
+
const periodEnd = subscription?.periodEnd != null ? new Date(subscription.periodEnd)
|
|
50
|
+
: new Date(periodStart.getTime() + (plan?.recurring?.interval === 'year' ? 365 : 30) * DAY_MS);
|
|
51
|
+
const result = subscriptionWithdrawalRefund({
|
|
52
|
+
paidMinor: paid, refundedMinor: refunded, netMinor: net,
|
|
53
|
+
components: plan?.withdrawal?.components,
|
|
54
|
+
periodStart, periodEnd,
|
|
55
|
+
servicesRequestedAt: purchase.servicesStartedAt != null ? new Date(purchase.servicesStartedAt) : null,
|
|
56
|
+
withdrawnAt: at,
|
|
57
|
+
units: { granted: reading.granted, used: deducted },
|
|
58
|
+
});
|
|
59
|
+
return {
|
|
60
|
+
reading, deducted, unitsReturned,
|
|
61
|
+
refundMinor: result.refundMinor,
|
|
62
|
+
netMinor: result.refundNetMinor,
|
|
63
|
+
estimate: compact({
|
|
64
|
+
refundMinor: result.refundMinor, currency: purchase.currency, timeDeductionMinor: result.timeDeductionMinor,
|
|
65
|
+
unitsDeductionMinor: result.unitsDeductionMinor, elapsedDays: result.elapsedDays, periodDays: result.periodDays,
|
|
66
|
+
unitsUsed: result.unitsUsed, unitsGranted: result.unitsGranted,
|
|
67
|
+
}),
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
/** A Stripe error that says the subscription is already gone. */
|
|
71
|
+
const alreadyCanceled = (error) => isMissingObject(error)
|
|
72
|
+
|| /canceled subscription|already (been )?cancel/i.test(error?.message ?? '');
|
|
73
|
+
/** A refund this withdrawal already made (found by its metadata) — what a retry adopts. */
|
|
74
|
+
const existingRefund = async (stripe, paymentIntentId, withdrawalId) => {
|
|
75
|
+
const { data } = await stripe.refunds.list({ payment_intent: paymentIntentId, limit: 100 });
|
|
76
|
+
return data.find(refund => refund.metadata?.withdrawalId === withdrawalId && refund.status !== 'failed'
|
|
77
|
+
&& refund.status !== 'canceled') ?? null;
|
|
78
|
+
};
|
|
79
|
+
/** A credit note this withdrawal already made — what a retry adopts. */
|
|
80
|
+
const existingCreditNote = async (stripe, invoiceId, withdrawalId) => {
|
|
81
|
+
const { data } = await stripe.creditNotes.list({ invoice: invoiceId, limit: 100 });
|
|
82
|
+
return data.find(note => note.metadata?.withdrawalId === withdrawalId && note.status !== 'void') ?? null;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Stripe replays the stored answer of an idempotency key — a failure too — for a day: a retry
|
|
86
|
+
* uses a fresh key (`…:<attempt>`) and first adopts what an earlier attempt may have made.
|
|
87
|
+
*/
|
|
88
|
+
const keyOf = (withdrawalId, step, attempt) => ({
|
|
89
|
+
idempotencyKey: attempt > 0 ? `withdrawal:${withdrawalId}:${step}:${attempt}` : `withdrawal:${withdrawalId}:${step}`,
|
|
90
|
+
});
|
|
91
|
+
/**
|
|
92
|
+
* Execute a withdrawal at the paygate, the first attempt of every call under the idempotency key
|
|
93
|
+
* `withdrawal:<id>:<step>` (a retry by `reconcile` adopts what an earlier attempt made):
|
|
94
|
+
*
|
|
95
|
+
* 1. a subscription purchase: `subscriptions.cancel` at once, without proration or a final invoice;
|
|
96
|
+
* 2. an invoice-backed purchase: `creditNotes.preview` of the invoice line at the net refund, then
|
|
97
|
+
* OUR `refunds.create` for the previewed total (metadata `withdrawalId` — the refund webhook then
|
|
98
|
+
* tells observers not to claw back), then `creditNotes.create` linking that refund — the
|
|
99
|
+
* corrective tax document; a failed credit note keeps the plain refund and is recorded;
|
|
100
|
+
* 3. no invoice: a plain proportional refund on the payment intent.
|
|
101
|
+
*
|
|
102
|
+
* Steps that already succeeded (a recorded `ok` event) are skipped. Every step is an event.
|
|
103
|
+
*/
|
|
104
|
+
export const executeWithdrawal = async (ctx, stripe, declaration, purchase, computation, opts = {}) => {
|
|
105
|
+
const withdrawalId = declaration.id;
|
|
106
|
+
const attempt = opts.attempt ?? 0;
|
|
107
|
+
const key = (step) => keyOf(withdrawalId, step, attempt);
|
|
108
|
+
const event = (action, fields) => recordEvent(ctx, {
|
|
109
|
+
recordId: withdrawalId, recordKind: 'declaration', entityId: purchase.entityId, action, ok: false, ...fields,
|
|
110
|
+
});
|
|
111
|
+
const outcome = { ok: true, refundedMinor: 0, subscriptionCanceled: false, needsReview: false };
|
|
112
|
+
if (purchase.kind === PurchaseKind.Subscription && purchase.subscriptionId != null) {
|
|
113
|
+
if (await hasEvent(ctx, withdrawalId, 'subscription-cancel', undefined, true)) {
|
|
114
|
+
outcome.subscriptionCanceled = true;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
try {
|
|
118
|
+
await stripe.subscriptions.cancel(purchase.subscriptionId, {
|
|
119
|
+
prorate: false, invoice_now: false, cancellation_details: { comment: `withdrawal:${withdrawalId}` },
|
|
120
|
+
}, key('subscription-cancel'));
|
|
121
|
+
outcome.subscriptionCanceled = true;
|
|
122
|
+
await event('subscription-cancel', { ok: true, externalId: purchase.subscriptionId });
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
if (alreadyCanceled(error)) {
|
|
126
|
+
outcome.subscriptionCanceled = true;
|
|
127
|
+
await event('subscription-cancel', { ok: true, externalId: purchase.subscriptionId, detail: '{"already":true}' });
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
outcome.ok = false;
|
|
131
|
+
await event('subscription-cancel', { externalId: purchase.subscriptionId, error: errorText(error) });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (outcome.subscriptionCanceled) {
|
|
135
|
+
const row = await subscriptions(ctx).byExternalId(purchase.subscriptionId, STRIPE_PAYGATE_ALIAS);
|
|
136
|
+
if (row != null && row.withdrawnAt == null) {
|
|
137
|
+
await subscriptions(ctx).update({ ...row, withdrawnAt: new Date(declaration.receivedAt) });
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (await hasEvent(ctx, withdrawalId, 'refund', undefined, true)) {
|
|
143
|
+
return { ...outcome, refundedMinor: declaration.refundMinor ?? computation.refundMinor };
|
|
144
|
+
}
|
|
145
|
+
if (computation.refundMinor <= 0) {
|
|
146
|
+
return outcome;
|
|
147
|
+
}
|
|
148
|
+
let paymentIntentId = purchase.paymentIntentId;
|
|
149
|
+
let invoiceLineId = purchase.invoiceLineId;
|
|
150
|
+
if (purchase.invoiceId != null && (paymentIntentId == null || invoiceLineId == null)) {
|
|
151
|
+
const invoice = await invoiceEvidenceOf(stripe, purchase.invoiceId);
|
|
152
|
+
paymentIntentId = paymentIntentId ?? invoice.paymentIntentId;
|
|
153
|
+
invoiceLineId = invoiceLineId ?? invoice.invoiceLineId;
|
|
154
|
+
await patchPurchase(ctx, purchase.purchaseId, compact({
|
|
155
|
+
paymentIntentId, invoiceLineId, invoiceNumber: purchase.invoiceNumber ?? invoice.invoiceNumber,
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
if (paymentIntentId == null) {
|
|
159
|
+
await event('refund', { error: 'no-payment-intent', amountMinor: computation.refundMinor, currency: purchase.currency });
|
|
160
|
+
return { ...outcome, ok: false, needsReview: true };
|
|
161
|
+
}
|
|
162
|
+
const open = Math.max(0, purchase.amountTotalMinor - (purchase.refundedMinor ?? 0));
|
|
163
|
+
let amount = Math.min(open, computation.refundMinor);
|
|
164
|
+
let lines = null;
|
|
165
|
+
if (purchase.invoiceId != null && invoiceLineId != null && computation.netMinor > 0) {
|
|
166
|
+
lines = [{ type: 'invoice_line_item', invoice_line_item: invoiceLineId, amount: computation.netMinor }];
|
|
167
|
+
try {
|
|
168
|
+
const preview = await stripe.creditNotes.preview({ invoice: purchase.invoiceId, lines });
|
|
169
|
+
amount = Math.min(open, preview.total);
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
lines = null;
|
|
173
|
+
await event('credit-note', { step: 'preview', error: errorText(error) });
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
if (amount <= 0) {
|
|
177
|
+
return outcome;
|
|
178
|
+
}
|
|
179
|
+
let refund;
|
|
180
|
+
try {
|
|
181
|
+
refund = (attempt > 0 ? await existingRefund(stripe, paymentIntentId, withdrawalId) : null)
|
|
182
|
+
?? await stripe.refunds.create({
|
|
183
|
+
payment_intent: paymentIntentId, amount, reason: 'requested_by_customer',
|
|
184
|
+
metadata: { [STRIPE_OWNER_KEY]: STRIPE_OWNER_VALUE, withdrawalId, purchaseId: purchase.purchaseId },
|
|
185
|
+
}, key('refund'));
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
await event('refund', { error: errorText(error), amountMinor: amount, currency: purchase.currency });
|
|
189
|
+
return { ...outcome, ok: false };
|
|
190
|
+
}
|
|
191
|
+
await event('refund', { ok: true, externalId: refund.id, amountMinor: refund.amount, currency: refund.currency });
|
|
192
|
+
outcome.refundId = refund.id;
|
|
193
|
+
outcome.refundedMinor = refund.amount;
|
|
194
|
+
if (lines != null && purchase.invoiceId != null) {
|
|
195
|
+
try {
|
|
196
|
+
const note = await stripe.creditNotes.create({
|
|
197
|
+
invoice: purchase.invoiceId, lines, refund: refund.id,
|
|
198
|
+
memo: consumerText(declaration.language, 'credit-note.memo', {
|
|
199
|
+
contractRef: purchase.contractRef, date: formatDate(new Date(declaration.receivedAt), declaration.language),
|
|
200
|
+
}),
|
|
201
|
+
metadata: { withdrawalId, purchaseId: purchase.purchaseId },
|
|
202
|
+
}, key('credit-note'));
|
|
203
|
+
outcome.creditNoteId = note.id;
|
|
204
|
+
await event('credit-note', { ok: true, externalId: note.id, amountMinor: note.total, currency: note.currency });
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
// The refund stands; the corrective document is retried by reconcile.
|
|
208
|
+
await event('credit-note', { error: errorText(error), detail: JSON.stringify({ refundId: refund.id }) });
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return outcome;
|
|
212
|
+
};
|
|
213
|
+
/** Retry a credit note that failed after its refund succeeded. */
|
|
214
|
+
export const retryCreditNote = async (ctx, stripe, declaration, purchase, netMinor, refundId, attempt) => {
|
|
215
|
+
const withdrawalId = declaration.id;
|
|
216
|
+
let invoiceLineId = purchase.invoiceLineId;
|
|
217
|
+
if (invoiceLineId == null && purchase.invoiceId != null) {
|
|
218
|
+
invoiceLineId = (await invoiceEvidenceOf(stripe, purchase.invoiceId)).invoiceLineId;
|
|
219
|
+
}
|
|
220
|
+
if (purchase.invoiceId == null || invoiceLineId == null || netMinor <= 0) {
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
try {
|
|
224
|
+
const note = await existingCreditNote(stripe, purchase.invoiceId, withdrawalId) ?? await stripe.creditNotes.create({
|
|
225
|
+
invoice: purchase.invoiceId,
|
|
226
|
+
lines: [{ type: 'invoice_line_item', invoice_line_item: invoiceLineId, amount: netMinor }],
|
|
227
|
+
refund: refundId,
|
|
228
|
+
memo: consumerText(declaration.language, 'credit-note.memo', {
|
|
229
|
+
contractRef: purchase.contractRef, date: formatDate(new Date(declaration.receivedAt), declaration.language),
|
|
230
|
+
}),
|
|
231
|
+
metadata: { withdrawalId, purchaseId: purchase.purchaseId },
|
|
232
|
+
}, keyOf(withdrawalId, 'credit-note', attempt));
|
|
233
|
+
await recordEvent(ctx, {
|
|
234
|
+
recordId: withdrawalId, recordKind: 'declaration', entityId: purchase.entityId, action: 'credit-note', ok: true,
|
|
235
|
+
externalId: note.id, amountMinor: note.total, currency: note.currency,
|
|
236
|
+
});
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
await recordEvent(ctx, {
|
|
241
|
+
recordId: withdrawalId, recordKind: 'declaration', entityId: purchase.entityId, action: 'credit-note', ok: false,
|
|
242
|
+
error: errorText(error), detail: JSON.stringify({ refundId }),
|
|
243
|
+
});
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
//# sourceMappingURL=withdrawal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdrawal.js","sourceRoot":"","sources":["../../src/consumer/withdrawal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { EntitlementPlanView, EntitlementView } from '@owlmeans/payment';
|
|
2
|
+
import type { Context as ApiContext } from '@owlmeans/server-api';
|
|
3
|
+
import type { EffectivePlan, EntitlementService } from './types.js';
|
|
4
|
+
/** The plan half of an entitlement view. `subscribedAt` is what a grandfathered promo is measured against. */
|
|
5
|
+
export declare const planViewOf: (effective: EffectivePlan) => EntitlementPlanView;
|
|
6
|
+
/** What an entity may do now: its effective plan, every capability and every limit with its usage. */
|
|
7
|
+
export declare const entitlementViewFor: (ctx: ApiContext, entityId: string) => Promise<EntitlementView>;
|
|
8
|
+
/** Plan resolution, the entitlement view and the usage ledger — Mongo only, never the paygate. */
|
|
9
|
+
export declare const makeEntitlementService: (alias?: string) => EntitlementService;
|
|
10
|
+
//# sourceMappingURL=entitlement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entitlement.d.ts","sourceRoot":"","sources":["../src/entitlement.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAc,MAAM,mBAAmB,CAAA;AACzF,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAOjE,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAKnE,8GAA8G;AAC9G,eAAO,MAAM,UAAU,cAAe,aAAa,KAAG,mBAsBrD,CAAA;AAED,sGAAsG;AACtG,eAAO,MAAM,kBAAkB,QAAe,UAAU,YAAY,MAAM,KAAG,OAAO,CAAC,eAAe,CAoBnG,CAAA;AAED,kGAAkG;AAClG,eAAO,MAAM,sBAAsB,WAAW,MAAM,KAAyB,kBAiB5E,CAAA"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { createService } from '@owlmeans/context';
|
|
2
|
+
import { capabilityOf, entitlementViewOf, INTERNAL_PAYGATE, SubscriptionStatus, windowKeyOf, } from '@owlmeans/payment';
|
|
3
|
+
import { ENTITLEMENT_SERVICE } from './consts.js';
|
|
4
|
+
import { planRank, resolveEffectivePlan } from './plan.js';
|
|
5
|
+
import { consumeLimit, consumptionByRefOf, consumptionOf, limitStateOf, reconcileLedgerCounters, reconcileOccupancyOf, releaseLimit, } from './usage.js';
|
|
6
|
+
import { compact, usageCounters } from './utils.js';
|
|
7
|
+
const dateOrUndefined = (value) => value == null ? undefined : new Date(value);
|
|
8
|
+
/** The plan half of an entitlement view. `subscribedAt` is what a grandfathered promo is measured against. */
|
|
9
|
+
export const planViewOf = (effective) => {
|
|
10
|
+
const { plan, subscription, fallback } = effective;
|
|
11
|
+
const status = subscription?.status ?? SubscriptionStatus.Active;
|
|
12
|
+
return compact({
|
|
13
|
+
sku: plan.sku,
|
|
14
|
+
productSku: plan.productSku,
|
|
15
|
+
title: plan.title,
|
|
16
|
+
rank: planRank(plan),
|
|
17
|
+
free: plan.free === true,
|
|
18
|
+
status,
|
|
19
|
+
paygate: subscription?.paygate ?? INTERNAL_PAYGATE,
|
|
20
|
+
subscriptionId: subscription?.externalId ?? undefined,
|
|
21
|
+
subscribedAt: dateOrUndefined(subscription?.createdAt),
|
|
22
|
+
periodStart: dateOrUndefined(subscription?.periodStart),
|
|
23
|
+
periodEnd: dateOrUndefined(subscription?.periodEnd),
|
|
24
|
+
cancelAtPeriodEnd: subscription?.cancelAtPeriodEnd ?? undefined,
|
|
25
|
+
trialEnd: dateOrUndefined(subscription?.trialEnd),
|
|
26
|
+
pausedAt: dateOrUndefined(subscription?.pausedAt),
|
|
27
|
+
pastDue: status === SubscriptionStatus.PastDue,
|
|
28
|
+
fallbackSku: plan.free !== true ? fallback?.sku : undefined,
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
/** What an entity may do now: its effective plan, every capability and every limit with its usage. */
|
|
32
|
+
export const entitlementViewFor = async (ctx, entityId) => {
|
|
33
|
+
const at = new Date();
|
|
34
|
+
const effective = await resolveEffectivePlan(ctx, entityId, at);
|
|
35
|
+
const declared = Object.entries(effective.plan.limits ?? {});
|
|
36
|
+
const windows = new Map(declared.map(([key, declaration]) => [
|
|
37
|
+
key, windowKeyOf(declaration.kind, declaration.window, at),
|
|
38
|
+
]));
|
|
39
|
+
const usage = [];
|
|
40
|
+
if (declared.length > 0) {
|
|
41
|
+
const { items } = await usageCounters(ctx).list({
|
|
42
|
+
entityId, limitKey: [...windows.keys()], window: [...new Set(windows.values())],
|
|
43
|
+
}, { size: 0 });
|
|
44
|
+
for (const counter of items) {
|
|
45
|
+
if (windows.get(counter.limitKey) === counter.window) {
|
|
46
|
+
usage.push({ key: counter.limitKey, window: counter.window, used: counter.used });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return entitlementViewOf(effective.plan, planViewOf(effective), usage, at);
|
|
51
|
+
};
|
|
52
|
+
/** Plan resolution, the entitlement view and the usage ledger — Mongo only, never the paygate. */
|
|
53
|
+
export const makeEntitlementService = (alias = ENTITLEMENT_SERVICE) => {
|
|
54
|
+
const service = createService(alias, {
|
|
55
|
+
effectivePlan: async (entityId) => await resolveEffectivePlan(ctxOf(), entityId),
|
|
56
|
+
entitlements: async (entityId) => await entitlementViewFor(ctxOf(), entityId),
|
|
57
|
+
hasCapability: async (entityId, param) => capabilityOf(await entitlementViewFor(ctxOf(), entityId), param),
|
|
58
|
+
limitState: async (entityId, key) => await limitStateOf(ctxOf(), entityId, key),
|
|
59
|
+
consume: async (req) => await consumeLimit(ctxOf(), req),
|
|
60
|
+
release: async (req) => await releaseLimit(ctxOf(), req),
|
|
61
|
+
reconcileOccupancy: async (entityId, limitKey, actual) => await reconcileOccupancyOf(ctxOf(), entityId, limitKey, actual),
|
|
62
|
+
reconcileCounters: async (entityId) => await reconcileLedgerCounters(ctxOf(), entityId),
|
|
63
|
+
consumption: async (entityId, limitKey, eventKey) => await consumptionOf(ctxOf(), entityId, limitKey, eventKey),
|
|
64
|
+
consumptionByRef: async (entityId, limitKey, ref) => await consumptionByRefOf(ctxOf(), entityId, limitKey, ref),
|
|
65
|
+
});
|
|
66
|
+
const ctxOf = () => service.assertCtx();
|
|
67
|
+
return service;
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=entitlement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entitlement.js","sourceRoot":"","sources":["../src/entitlement.ts"],"names":[],"mappings":"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"}
|
package/build/entrypoints.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Runtime-local bindings for the shared immutable payment-gateway protocol tree. */
|
|
2
2
|
export declare const paymentGateEntrypoints: (import("@owlmeans/server-entrypoint").ServerProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocol<{
|
|
3
3
|
params: import("./consts.js").PaygateParams;
|
|
4
|
-
}, undefined>> | import("@owlmeans/server-entrypoint").ServerProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocol<{}, undefined>> | import("@owlmeans/server-entrypoint").ServerProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocol<{}, import("./consts.js").ResyncResult>>)[];
|
|
4
|
+
}, undefined>> | import("@owlmeans/server-entrypoint").ServerProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocol<{}, undefined>> | import("@owlmeans/server-entrypoint").ServerProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocol<{}, import("./consts.js").ResyncResult>> | import("@owlmeans/server-entrypoint").ServerProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocol<{}, import("./consts.js").ResyncSubscriptionsResult>>)[];
|
|
5
5
|
//# sourceMappingURL=entrypoints.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAIA,qFAAqF;AACrF,eAAO,MAAM,sBAAsB;;
|
|
1
|
+
{"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAIA,qFAAqF;AACrF,eAAO,MAAM,sBAAsB;;ydAKlC,CAAA"}
|
package/build/entrypoints.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { bind } from '@owlmeans/server-entrypoint';
|
|
2
2
|
import { paymentGate } from './consts.js';
|
|
3
|
-
import { resync, webhook } from './actions/index.js';
|
|
3
|
+
import { resync, resyncSubscriptions, webhook } from './actions/index.js';
|
|
4
4
|
/** Runtime-local bindings for the shared immutable payment-gateway protocol tree. */
|
|
5
5
|
export const paymentGateEntrypoints = [
|
|
6
6
|
bind(paymentGate.base),
|
|
7
7
|
bind(paymentGate.webhook, webhook),
|
|
8
8
|
bind(paymentGate.resync, resync),
|
|
9
|
+
bind(paymentGate.resyncSubscriptions, resyncSubscriptions),
|
|
9
10
|
];
|
|
10
11
|
//# sourceMappingURL=entrypoints.js.map
|
package/build/entrypoints.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAEzE,qFAAqF;AACrF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACtB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;IAClC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IAChC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;CAC3D,CAAA"}
|
package/build/gate.d.ts
CHANGED
|
@@ -1,10 +1,38 @@
|
|
|
1
1
|
import type { AbstractRequest, GateService } from '@owlmeans/entrypoint';
|
|
2
|
-
import type { PermissionSet } from '@owlmeans/auth';
|
|
2
|
+
import type { Auth, PermissionSet } from '@owlmeans/auth';
|
|
3
3
|
import type { Context as ApiContext } from '@owlmeans/server-api';
|
|
4
|
-
export interface
|
|
5
|
-
|
|
4
|
+
export interface EntityResolverOption {
|
|
5
|
+
/** The stable organization id a request acts for. Default: `req.entity.id`, else the token's entity. */
|
|
6
6
|
resolveEntity?: (req: AbstractRequest) => string | null;
|
|
7
7
|
}
|
|
8
|
+
export interface CapabilityGateOptions extends EntityResolverOption {
|
|
9
|
+
/** Refuse unless the effective plan belongs to one of these products. */
|
|
10
|
+
productSkus?: string[];
|
|
11
|
+
/**
|
|
12
|
+
* Also require the token to grant the permission (IAM `hasPermission`). Off by default: a
|
|
13
|
+
* platform token carries no permissions, and the subscription is the authority.
|
|
14
|
+
*/
|
|
15
|
+
requirePermission?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** @deprecated use `CapabilityGateOptions` */
|
|
18
|
+
export type EntitlementGateOptions = CapabilityGateOptions;
|
|
19
|
+
export declare const defaultEntity: (req: AbstractRequest) => string | null;
|
|
20
|
+
/**
|
|
21
|
+
* The capability sets an entity's effective plan grants now — sets behind a lapsed promo left out.
|
|
22
|
+
* Empty when the plan is not of one of `productSkus`.
|
|
23
|
+
*/
|
|
8
24
|
export declare const entitlementsOf: (ctx: ApiContext, entityId: string, productSkus?: string[]) => Promise<PermissionSet[]>;
|
|
9
|
-
|
|
25
|
+
/** Resolve the authenticated entity a gate asserts for, or refuse. */
|
|
26
|
+
export declare const gateEntityOf: (req: AbstractRequest, opts?: EntityResolverOption) => {
|
|
27
|
+
auth: Auth;
|
|
28
|
+
entityId: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* The capability gate (`ENTITLEMENT_GATE`): passes when the effective plan grants ANY of the
|
|
32
|
+
* parameters (`[scope:]permission[>=n]`) and the token does not deny it. Fails closed — an unreadable
|
|
33
|
+
* store refuses. Refuses with `CapabilityRequired`, an `AuthForbidden`.
|
|
34
|
+
*/
|
|
35
|
+
export declare const makeCapabilityGate: (alias?: string, opts?: CapabilityGateOptions) => GateService;
|
|
36
|
+
/** The capability gate under its historical name. */
|
|
37
|
+
export declare const makeEntitlementGate: typeof makeCapabilityGate;
|
|
10
38
|
//# sourceMappingURL=gate.d.ts.map
|
package/build/gate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAExE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAExE,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAMzD,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAKjE,MAAM,WAAW,oBAAoB;IACnC,wGAAwG;IACxG,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,GAAG,IAAI,CAAA;CACxD;AAED,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,8CAA8C;AAC9C,MAAM,MAAM,sBAAsB,GAAG,qBAAqB,CAAA;AAE1D,eAAO,MAAM,aAAa,QAAS,eAAe,KAAG,MAAM,GAAG,IACQ,CAAA;AAEtE;;;GAGG;AACH,eAAO,MAAM,cAAc,QACpB,UAAU,YAAY,MAAM,gBAAgB,MAAM,EAAE,KACxD,OAAO,CAAC,aAAa,EAAE,CAUzB,CAAA;AAeD,sEAAsE;AACtE,eAAO,MAAM,YAAY,QAAS,eAAe,SAAS,oBAAoB,KAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAU9G,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,WACtB,MAAM,SAA4B,qBAAqB,KAC7D,WA4BF,CAAA;AAED,qDAAqD;AACrD,eAAO,MAAM,mBAAmB,2BAAqB,CAAA"}
|