@gkd-kit/inspect 0.0.1756717177622 → 0.0.1758639831089
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/dist/404.html +3 -3
- package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-Mnug9DWd.js +17 -0
- package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-Mnug9DWd.js.map +1 -0
- package/dist/assets/{DevicePage-2eLd65ot.js → DevicePage-U_3kdyd1.js} +3 -3
- package/dist/assets/{DevicePage-2eLd65ot.js.map → DevicePage-U_3kdyd1.js.map} +1 -1
- package/dist/assets/{HomePage-47_TAQ9h.js → HomePage-Bc83qKTK.js} +7 -7
- package/dist/assets/HomePage-Bc83qKTK.js.map +1 -0
- package/dist/assets/{ImportPage-DmYJkTpm.js → ImportPage-BSN51fsg.js} +2 -2
- package/dist/assets/{ImportPage-DmYJkTpm.js.map → ImportPage-BSN51fsg.js.map} +1 -1
- package/dist/assets/Input-D1JUZ06t.js +260 -0
- package/dist/assets/Input-D1JUZ06t.js.map +1 -0
- package/dist/assets/{SelectorPage-o9LIj-I1.js → SelectorPage-BYz6KuKu.js} +2 -2
- package/dist/assets/SelectorPage-BYz6KuKu.js.map +1 -0
- package/dist/assets/SnapshotPage-DDESkWey.js +278 -0
- package/dist/assets/SnapshotPage-DDESkWey.js.map +1 -0
- package/dist/assets/{SvgPage-BagXHNio.js → SvgPage-CQljgvlO.js} +2 -2
- package/dist/assets/{SvgPage-BagXHNio.js.map → SvgPage-CQljgvlO.js.map} +1 -1
- package/dist/assets/{TrackGraph-30Lwxufc.js → TrackGraph-B34JmU2y.js} +3 -3
- package/dist/assets/{TrackGraph-30Lwxufc.js.map → TrackGraph-B34JmU2y.js.map} +1 -1
- package/dist/assets/_404Page-DUCCFNAB.js +2 -0
- package/dist/assets/{_404Page-EBmWBN0j.js.map → _404Page-DUCCFNAB.js.map} +1 -1
- package/dist/assets/chunk-F2BCYXFp.js +3 -0
- package/dist/assets/{chunk-FQ5_3Fvt.js.map → chunk-F2BCYXFp.js.map} +1 -1
- package/dist/assets/{dayjs.min-DuZZSErs.js → dayjs.min-Dv-eveXa.js} +2 -2
- package/dist/assets/{dayjs.min-DuZZSErs.js.map → dayjs.min-Dv-eveXa.js.map} +1 -1
- package/dist/assets/{error-CWzaCaGi.js → error-ChBBACr4.js} +2 -2
- package/dist/assets/{error-CWzaCaGi.js.map → error-ChBBACr4.js.map} +1 -1
- package/dist/assets/{import-D46jGS_0.js → import-M_Af5KCc.js} +2 -2
- package/dist/assets/{import-D46jGS_0.js.map → import-M_Af5KCc.js.map} +1 -1
- package/dist/assets/{index-GTBK_16Z.js → index-B9sXoeZq.js} +3 -3
- package/dist/assets/{index-GTBK_16Z.js.map → index-B9sXoeZq.js.map} +1 -1
- package/dist/assets/index-B_uD-bae.js +980 -0
- package/dist/assets/index-B_uD-bae.js.map +1 -0
- package/dist/assets/{index-BOn7cIqR.css → index-BowVL0Z1.css} +1 -1
- package/dist/assets/{jszip.min-C6z3zxPP.js → jszip.min-C4QAILm2.js} +2 -2
- package/dist/assets/{jszip.min-C6z3zxPP.js.map → jszip.min-C4QAILm2.js.map} +1 -1
- package/dist/assets/node-C7vxFtQZ.js +126 -0
- package/dist/assets/node-C7vxFtQZ.js.map +1 -0
- package/dist/assets/polyfills-DPQP8bt_.js +2 -0
- package/dist/assets/polyfills-DPQP8bt_.js.map +1 -0
- package/dist/assets/snapshot-gWG-XXTt.js +3 -0
- package/dist/assets/snapshot-gWG-XXTt.js.map +1 -0
- package/dist/assets/{table-x678kzFG.js → table-BrOTv4AL.js} +51 -51
- package/dist/assets/table-BrOTv4AL.js.map +1 -0
- package/dist/index.html +3 -3
- package/package.json +32 -32
- package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-BY98wOL2.js +0 -17
- package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-BY98wOL2.js.map +0 -1
- package/dist/assets/HomePage-47_TAQ9h.js.map +0 -1
- package/dist/assets/Input-Br-unvKw.js +0 -260
- package/dist/assets/Input-Br-unvKw.js.map +0 -1
- package/dist/assets/SelectorPage-o9LIj-I1.js.map +0 -1
- package/dist/assets/SnapshotPage-055LCAoq.js +0 -272
- package/dist/assets/SnapshotPage-055LCAoq.js.map +0 -1
- package/dist/assets/_404Page-EBmWBN0j.js +0 -2
- package/dist/assets/chunk-FQ5_3Fvt.js +0 -3
- package/dist/assets/index-BDgd4jKy.js +0 -979
- package/dist/assets/index-BDgd4jKy.js.map +0 -1
- package/dist/assets/node-Dqax9l0e.js +0 -126
- package/dist/assets/node-Dqax9l0e.js.map +0 -1
- package/dist/assets/polyfills-DHsnwdd7.js +0 -2
- package/dist/assets/polyfills-DHsnwdd7.js.map +0 -1
- package/dist/assets/snapshot-B7-fb-hQ.js +0 -3
- package/dist/assets/snapshot-B7-fb-hQ.js.map +0 -1
- package/dist/assets/table-x678kzFG.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"mappings":";gpDAAO,SAASA,GAAcC,EAAK,CACjC,OAAO,OAAOA,GAAQ,SAAW,KAAKA,CAAG,GAAK,KAAKA,CAAG,EACxD,CCDA,MAAAC,GAAeC,EAAgB,CAC7B,KAAM,cACN,QAAS,CACP,OAAOC,EAAE,MAAO,CACd,QAAS,YACT,KAAM,OACN,MAAO,4BACb,EAAOA,EAAE,OAAQ,CACX,EAAG,8TACH,KAAM,cACZ,CAAK,CAAC,CACN,CACA,CAAC,ECZDC,GAAeF,EAAgB,CAC7B,KAAM,WACN,QAAS,CACP,OAAOC,EAAE,MAAO,CACd,MAAO,6BACP,QAAS,WACf,EAAOA,EAAE,OAAQ,CACX,EAAG,mBACT,CAAK,CAAC,CACN,CACA,CAAC,ECVYE,GAAO,cACPC,GAAK,iBAClB,SAASC,GAAsBC,EAAM,CACnC,OAAOC,EAAG,GAAGD,CAAI,QAAS,CAACE,EAAE,MAAO,CAACC,EAAG,SAAU,GAAI,CAACF,EAAG,GAAGD,CAAI,QAAS,CAACI,EAAG,SAAU,CACtF,gBAAiBP,EACrB,CAAG,EAAGO,EAAG,eAAgB,CACrB,KAAMN,EACV,CAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACX,CACA,SAASO,GAAqBL,EAAM,CAClC,OAAOC,EAAG,GAAGD,CAAI,QAAS,CAACE,EAAE,MAAO,CAACC,EAAG,SAAU,CAACF,EAAG,GAAGD,CAAI,QAAS,CAACI,EAAG,SAAU,CAClF,eAAgBP,EACpB,CAAG,EAAGO,EAAG,eAAgB,CACrB,IAAKN,EACT,CAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACX,CACA,MAAAQ,GAAeH,EAAG,eAAgB;AAAA;AAAA;AAAA;AAAA,EAI/B,CAACI,GAAM,WAAY,CACpB,cAAe,KACjB,EAAG,CAACA,GAAM,MAAO,CAACJ,EAAG,SAAU,CAACD,EAAE,iCAAkC;AAAA,iBACnDL,EAAI;AAAA,4BACOA,EAAI;AAAA,+BACDA,EAAI;AAAA,EACjC,EAAGK,EAAE,iCAAkC;AAAA,gBACzBL,EAAI;AAAA,2BACOA,EAAI;AAAA,8BACDA,EAAI;AAAA,EAChC,EAAGK,EAAE,uCAAwC;AAAA,gBAC/BL,EAAI;AAAA,iBACHA,EAAI;AAAA,kBACHA,EAAI;AAAA,EACpB,EAAGE,GAAsB,SAAS,EAAGE,EAAG,QAAS,CAACF,GAAsB,SAAS,EAAGA,GAAsB,MAAM,EAAGA,GAAsB,SAAS,EAAGA,GAAsB,SAAS,EAAGA,GAAsB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAGE,EAAG,WAAY,CAC9O,cAAe,QACjB,EAAG,CAACE,EAAG,SAAU,CAACD,EAAE,iCAAkC;AAAA,kBACpCL,EAAI;AAAA,gBACNA,EAAI;AAAA,iBACHA,EAAI;AAAA,8BACSA,EAAI;AAAA,+BACHA,EAAI;AAAA,EACjC,EAAGK,EAAE,iCAAkC;AAAA,eAC1BL,EAAI;AAAA,gBACHA,EAAI;AAAA,iBACHA,EAAI;AAAA,2BACMA,EAAI;AAAA,4BACHA,EAAI;AAAA,EAC9B,EAAGK,EAAE,uCAAwC;AAAA,WACpCL,EAAI;AAAA,kBACGA,EAAI;AAAA,EACpB,EAAGQ,GAAqB,SAAS,EAAGJ,EAAG,QAAS,CAACI,GAAqB,SAAS,EAAGA,GAAqB,MAAM,EAAGA,GAAqB,SAAS,EAAGA,GAAqB,SAAS,EAAGA,GAAqB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EC/C3MG,GAAmB,CAC9B,KAAM,CACJ,KAAM,OACN,QAAS,MACb,EACE,SAAU,OACZ,EACAC,GAAef,EAAgB,CAC7B,KAAM,cACN,MAAOc,GACP,MAAME,EAAO,CACX,KAAM,CACJ,mBAAAC,EACA,aAAAC,CACN,EAAQC,GAAUH,CAAK,EACnB,OAAAI,GAAS,gBAAiBC,GAAOJ,CAAkB,EACnDK,GAAQC,GAAyBP,CAAK,EAE/B,CACL,WAFoBQ,GAAO,cAAeN,EAAcD,CAAkB,EAG1E,gBAAiBA,CACvB,CACA,EACE,QAAS,CACP,KAAM,CACJ,gBAAAQ,CACN,EAAQ,KACJ,OAAOxB,EAAE,MAAO,CACd,MAAO,CAAC,GAAGwB,CAAe,gBAAiB,KAAK,YAAc,GAAGA,CAAe,qBAAsB,KAAK,UAAY,GAAGA,CAAe,yBAAyB,EAClK,KAAM,OACZ,EAAO,KAAK,MAAM,CAClB,CACA,CAAC,ECpCM,SAASC,GAAKC,EAAM,CACzB,KAAM,CACJ,WAAAC,EACA,WAAAC,EACA,WAAAC,EACA,kBAAAC,EACA,aAAAC,EACA,SAAAC,CACJ,EAAMN,EACJ,MAAO,CACL,cAAeM,EACf,gBAAiBL,EACjB,aAAAI,EACA,eAAgBH,EAChB,uBAAwBE,EACxB,SAAAE,EACA,UAAWH,EACX,WAAYA,EACZ,mBAAoBC,EACpB,WAAY,aACZ,aAAc,YAClB,CACA,CACA,MAAMG,GAAgB,CAEpB,OAAQC,GACV,KAAET,EACF,ECbAU,GAAe3B,EAAG,WAAY,eAAgB,CAACA,EAAG,gBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAO/D,CAACF,EAAG,WAAY,CAACG,EAAG,SAAU,uBAAwB,CAACA,EAAG,cAAe;AAAA;AAAA,EAE3E,EAAGD,EAAG,sBAAuB;AAAA;AAAA,EAE7B,CAAC,CAAC,CAAC,CAAC,EAAGA,EAAG,gBAAiB,oBAAoB,EAAGD,EAAE,gBAAiB,gBAAgB,EAAGA,EAAE,kBAAmB,CAACE,EAAG,SAAU,iBAAiB,CAAC,CAAC,EAAGH,EAAG,uBAAwB,CAACG,EAAG,SAAU,CAACD,EAAG,sBAAuB,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAGF,EAAG,wBAAyB,CAACG,EAAG,SAAU,CAACD,EAAG,sBAAuB,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAGC,EAAG,kBAAmB,CAACA,EAAG,gBAAiB,oBAAoB,EAAG2B,GAA6B,CAC9a,SAAU,OACZ,CAAC,CAAC,CAAC,EAAG9B,EAAG,SAAU,CAACG,EAAG,SAAU,CAACH,EAAG,SAAU,CAACE,EAAG,sBAAuB,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAGD,EAAE,sBAAuB,+CAA+C,EAAGK,GAAM,WAAY,CAACN,EAAG,oBAAqB,CAACG,EAAG,SAAU,CAACA,EAAG,cAAe,kBAAkB,EAAGD,EAAG,sBAAuB,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAGF,EAAG,qBAAsB,CAACG,EAAG,SAAU,CAACD,EAAG,sBAAuB,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAGF,EAAG,qBAAsB,CAACG,EAAG,SAAU,CAACA,EAAG,eAAgB,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAGA,EAAG,SAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASvgB,CAACA,EAAG,cAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQrB,EAAGA,EAAG,eAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKtB,EAAGD,EAAG,sBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO7B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EClDK6B,GAAgB,OAAO,OAAO,OAAO,OAAO,GAAIC,GAAS,KAAK,EAAG,CAC5E,qBAAsB,CACpB,KAAM,CAAC,MAAO,MAAM,EACpB,QAAS,MAEX,cAAe,CAAC,MAAO,MAAM,EAC7B,eAAgB,CACd,KAAM,OACN,QAAS,QAEX,UAAW,CACT,KAAM,QACN,QAAS,IAEX,iBAAkB,CAChB,KAAM,OACN,QAAS,MAEX,aAAc,CACZ,KAAM,MACN,QAAS,IAAM,CAAC,OAAQ,QAAS,OAAO,GAE1C,kBAAmB,CAAC,SAAU,KAAK,EACnC,yBAA0B,CAAC,SAAU,KAAK,EAC1C,sBAAuB,CAAC,SAAU,KAAK,EAEvC,sBAAuB,CACrB,KAAM,CAAC,SAAU,KAAK,EACtB,UAAW,IAIF,GAET,QAAS,OAEb,CAAC,EACYC,GAAuBC,GAAmB,YAAY,EACnEC,GAAe1C,EAAgB,CAC7B,KAAM,WACN,MAAOsC,GACP,MAAO,OACP,MAAMtB,EAAO,CACX,MAAA2B,CAAA,EACC,CACD,KAAM,CACJ,mBAAA1B,EACA,oBAAA2B,EACA,aAAA1B,CAAA,EACEC,GAAUH,CAAK,EACb6B,EAA+BC,GAAI9B,EAAM,oBAAoB,EAC7D+B,EAA6BC,EAAS,IAAMhC,EAAM,aAAa,EAC/DiC,EAAyBC,GAAeH,EAA4BF,CAA4B,EAChGM,EAAWZ,GAAS,WAAY,YAAalB,GAAOa,GAAelB,EAAOC,CAAkB,EAClG,SAASmC,EAAsBC,EAAO,CACpC,KAAM,CACJ,yBAA0BC,EAC1B,sBAAAC,EACA,sBAAAC,CAAA,EACExC,EACAuC,GACFE,GAAKF,EAAuBF,CAAK,EAE/BC,GACFG,GAAKH,EAAwBD,CAAK,EAEhCG,GACFC,GAAKD,EAAuBH,CAAK,EAEnCR,EAA6B,MAAQQ,CAAA,CAEvC,SAASK,EAAkBC,EAAM,CAC/B,KAAM,CACJ,kBAAAC,CAAA,EACE5C,EACA4C,GACFH,GAAKG,EAAmBD,CAAI,CAC9B,CAEF,SAASE,EAAWC,EAAUC,EAAMC,EAAO,CACzC,KAAM,CACJ,UAAAC,CAAA,EACEjD,EACE,CACJ,MAAOkD,CAAA,EACLjB,EACJ,GAAIgB,EACEH,GACFV,EAAsB,CAACW,CAAI,CAAC,EAC5BL,EAAkB,CAChB,KAAAK,EACA,SAAU,GACV,MAAAC,CAAA,CACD,IAEDZ,EAAsB,EAAE,EACxBM,EAAkB,CAChB,KAAAK,EACA,SAAU,GACV,MAAAC,CAAA,CACD,WAGC,CAAC,MAAM,QAAQE,CAAa,EAC9Bd,EAAsB,CAACW,CAAI,CAAC,EAC5BL,EAAkB,CAChB,KAAAK,EACA,SAAU,GACV,MAAAC,CAAA,CACD,MACI,CACL,MAAMG,EAAcD,EAAc,QAC5BE,EAAQD,EAAY,UAAUE,GAAcN,IAASM,CAAU,EACjE,CAACD,GACHD,EAAY,OAAOC,EAAO,CAAC,EAC3BhB,EAAsBe,CAAW,EACjCT,EAAkB,CAChB,KAAAK,EACA,SAAU,GACV,MAAAC,CAAA,CACD,IAEDG,EAAY,KAAKJ,CAAI,EACrBX,EAAsBe,CAAW,EACjCT,EAAkB,CAChB,KAAAK,EACA,SAAU,GACV,MAAAC,CAAA,CACD,EACH,CAEJ,CAEF1C,GAAQkB,GAAsB,CAC5B,MAAAxB,EACA,mBAAAC,EACA,iBAAkBgC,EAClB,MAAAN,EACA,WAAAkB,CAAA,CACD,EACD,MAAMS,EAAgB9C,GAAO,WAAYN,EAAcD,CAAkB,EACnEsD,EAAavB,EAAS,IAAM,CAChC,KAAM,CACJ,OAAQ,CACN,qBAAAwB,CAAA,EAEF,KAAM,CACJ,gBAAAC,EACA,aAAAzC,EACA,aAAA0C,EACA,eAAAC,EACA,uBAAAC,EACA,UAAAC,EACA,WAAAC,EACA,SAAA7C,EACA,cAAA8C,EACA,mBAAAC,EACA,WAAAC,CAAA,CACF,EACE9B,EAAS,MACb,MAAO,CACL,gBAAiBlB,EACjB,aAAcuC,EACd,iBAAkBK,EAClB,oBAAqB7C,EACrB,oBAAqB0C,EACrB,sBAAuBK,EACvB,uBAAwBJ,EACxB,gCAAiCC,EACjC,wBAAyBH,EACzB,kBAAmBK,EACnB,2BAA4BE,EAC5B,kBAAmBC,CAAA,CACrB,CACD,EACKC,EAAmBtC,EAAsBuC,GAAc,WAAY,OAAWZ,EAAYvD,CAAK,EAAI,OACzG,MAAO,CACL,WAAYsD,EACZ,YAAanB,EACb,gBAAiBlC,EACjB,QAAS2B,EAAsB,OAAY2B,EAC3C,WAAYW,GAAqB,KAAsC,OAASA,EAAiB,WACjG,SAAUA,GAAqB,KAAsC,OAASA,EAAiB,SACjG,EAEF,QAAS,CACP,IAAIE,EACJ,OAACA,EAAK,KAAK,YAAc,MAAQA,IAAO,QAAkBA,EAAG,KAAK,IAAI,EAC/DnF,EAAE,MAAO,CACd,MAAO,CAAC,GAAG,KAAK,eAAe,YAAa,KAAK,YAAc,GAAG,KAAK,eAAe,iBAAkB,KAAK,UAAU,EACvH,MAAO,KAAK,SACX,KAAK,MAAM,EAElB,CAAC,ECrMDoF,GAAerF,EAAgB,CAC7B,KAAM,sBACN,MAAO,CACL,iBAAkB,CAChB,KAAM,OACN,SAAU,EAChB,EACI,KAAM,QACN,UAAW,CACT,KAAM,OACN,SAAU,EAChB,CACA,EACE,MAAMgB,EAAO,CAEX,MAAO,CACL,SAFkBsE,GAAoBC,EAAMvE,EAAO,MAAM,CAAC,CAGhE,CACA,EACE,QAAS,CACP,OAAOf,EAAEuF,GAAyB,KAAM,CACtC,QAAS,IAAM,CACb,KAAM,CACJ,KAAAC,EACA,iBAAAC,EACA,SAAAC,EACA,UAAAC,CACV,EAAY,KACEC,EAAWH,IAAqB,QAAUC,EAC1CG,EAAc7F,EAAE,MAAO,CAC3B,MAAO,GAAG2F,CAAS,iCAC7B,EAAW3F,EAAE,MAAO,CACV,MAAO,GAAG2F,CAAS,+BAC7B,EAAW,KAAK,MAAM,CAAC,EACf,OAAOC,EAAWE,GAAeD,EAAa,CAAC,CAACE,GAAOP,CAAI,CAAC,CAAC,EAAIA,EAAOK,EAAc,IAC9F,CACA,CAAK,CACL,CACA,CAAC,EC/BYG,GAAoB,CAC/B,MAAO,OACP,KAAM,CAAC,OAAQ,MAAM,EACrB,SAAU,QACV,iBAAkB,MACpB,EACAC,GAAelG,EAAgB,CAC7B,KAAM,eACN,MAAOiG,GACP,MAAMjF,EAAO,CACX,KAAM,CACJ,aAAAE,CACN,EAAQC,GAAUH,CAAK,EACbmF,EAAaC,GAAQ,EACrBC,EAAgBC,GAAQ,IAAM,CAClC,IAAIlB,EACJ,OAAQA,EAAKpE,EAAM,QAAU,MAAQoE,IAAO,OAASA,EAAKe,CAChE,CAAK,EACKI,EAAYC,GAAOhE,EAAoB,EACxC+D,GACHE,GAAW,gBAAiB,uDAAuD,EAErF,KAAM,CACJ,iBAAAC,EACA,MAAOpE,EACP,mBAAArB,EACA,MAAO0F,CACb,EAAQJ,EACEK,EAAe5D,EAAS,IAAM,CAClC,KAAM,CACJ,MAAOkB,CACf,EAAUwC,EACJ,GAAI,MAAM,QAAQxC,CAAa,EAAG,CAChC,KAAM,CACJ,MAAOH,CACjB,EAAYsC,EACJ,MAAO,CAAC,CAACnC,EAAc,UAAU2C,GAAgBA,IAAiB9C,CAAI,CAC9E,SAAiBG,EAAe,CACxB,KAAM,CACJ,MAAOH,CACjB,EAAYsC,EACJ,OAAOtC,IAASG,CACxB,CACM,MAAO,EACb,CAAK,EAED,MAAO,CACL,WAFoB1C,GAAO,WAAYN,EAAcD,CAAkB,EAGvE,cAAA0F,EACA,WAAAR,EACA,gBAAiBlF,EACjB,UAAW2F,EACX,aAAcrB,EAAMjD,EAAe,cAAc,EACjD,uBAAwBU,EAAS,IAAM,CACrC,KAAM,CACJ,iBAAA0C,CACV,EAAY1E,EACJ,OAAI0E,GAGKpD,EAAc,gBAE/B,CAAO,EACD,eAAgBU,EAAS,IAChBV,EAAc,cACtB,EACD,YAAYwE,EAAG,CACb,IAAIC,EAAgB,OAChBC,GAAUF,EAAG,OAAO,IAAGC,EAAgB,SACvCC,GAAUF,EAAG,OAAO,IAAGC,EAAgB,SACtCzE,EAAc,aAAa,SAASyE,CAAa,GAGlDR,GAAa,CAACvF,EAAM,UACtBuF,EAAU,WAAWK,EAAa,MAAOP,EAAc,MAAOS,CAAC,CAEzE,CACA,CACA,EACE,QAAS,CACP,KAAM,CACJ,cAAAH,EACA,OAAAM,EACA,eAAAC,EACA,UAAAC,EACA,uBAAAC,EACA,gBAAA3F,EACA,SAAA4F,EACA,aAAAC,CACN,EAAQ,KACEC,EAAaC,GAA0BP,EAAO,OAAQ,CAC1D,UAAAE,CACN,EAAO,IAAM,CAAC,KAAK,KAAK,CAAC,EACfM,EAAkBR,EAAO,cAAc,GAAKN,EAAc,cAAc,EACxEe,EAAYT,EAAO,OAASN,EAAc,MAChD,OAAO1G,EAAE,MAAO,CACd,MAAO,CAAC,GAAGwB,CAAe,iBAAkB,GAAGA,CAAe,mBAAmByF,CAAc,mBAAoBG,GAAY,GAAG5F,CAAe,2BAA4B,CAAC0F,GAAa,GAAG1F,CAAe,yBAA0B6F,EAAa,IAAIK,GAC/O,GAAGlG,CAAe,gCAAgCkG,CAAI,EAC9D,CAAC,CACR,EAAO1H,EAAE,MAAO,CACV,MAAO,CAAC,GAAGwB,CAAe,yBAA0B,CAAC0F,GAAa,GAAG1F,CAAe,gCAAgC,CAC1H,EAAOxB,EAAE,MAAO,CACV,MAAO,GAAGwB,CAAe,8BACzB,QAAS,KAAK,WACpB,EAAOyF,IAAmB,SAAWK,EAAYtH,EAAE,MAAO,CACpD,MAAO,GAAGwB,CAAe,uBACzB,IAAK,KAAK,WAAa,EAAI,EAC3B,aAAc,EACpB,EAAO+F,GAA0BE,EAAW,CACtC,UAAAP,CACN,EAAO,IAAM,CAAClH,EAAE2H,GAAW,CACrB,UAAWnG,CACjB,EAAO,CACD,QAAS,IAAM,KAAK,WAAaxB,EAAE4H,GAAe,IAAI,EAAI5H,EAAE6H,GAAgB,IAAI,CACtF,CAAK,CAAC,CAAC,CAAC,EAAGZ,IAAmB,QAAUK,CAAU,EAAGQ,GAA4BN,EAAiB,CAC5F,UAAAN,CACN,EAAOa,GAAY/H,EAAE,MAAO,CACtB,MAAO,GAAGwB,CAAe,+BACzB,QAAS,KAAK,YACd,aAAc,EACpB,EAAOuG,CAAQ,CAAC,CAAC,EAAG/H,EAAEoF,GAAsB,CACtC,UAAW5D,EACX,iBAAkB2F,EAClB,KAAM,CAACD,CACb,EAAOF,CAAM,CAAC,CACd,CACA,CAAC,ECxIDgB,GAAe,CACb,eAAgB,MAChB,gBAAiB,OACjB,eAAgB,OAChB,eAAgB,MAChB,gBAAiB,OACjB,eAAgB,MAClB,ECJO,SAASvG,GAAKC,EAAM,CACzB,KAAM,CACJ,aAAAK,EACA,UAAAkG,EACA,WAAAC,EACA,aAAAC,EACA,iBAAAC,EACA,kBAAAC,EACA,WAAAzG,EACA,WAAAC,EACA,aAAAyG,EACA,iBAAAC,EACA,WAAAC,EACA,cAAAC,EACA,eAAAC,EACA,cAAAC,CACJ,EAAMjH,EACJ,OAAO,OAAO,OAAO,OAAO,OAAO,GAAIsG,EAAa,EAAG,CACrD,cAAAS,EACA,eAAAC,EACA,cAAAC,EACA,WAAAH,EACA,aAAAF,EACA,YAAaM,GAAUX,EAAWlG,CAAY,EAC9C,iBAAkB6G,GAAUV,EAAYnG,CAAY,EACpD,mBAAoB6G,GAAUT,EAAcpG,CAAY,EACxD,QAASkG,EACT,aAAcC,EACd,eAAgBC,EAChB,eAAgBS,GAAUX,EAAWI,CAAiB,EACtD,oBAAqBO,GAAUV,EAAYG,CAAiB,EAC5D,sBAAuBO,GAAUT,EAAcE,CAAiB,EAChE,QAASO,GAAUX,EAAWG,CAAgB,EAC9C,aAAcQ,GAAUV,EAAYE,CAAgB,EACpD,eAAgBQ,GAAUT,EAAcC,CAAgB,EACxD,YAAaxG,EACb,YAAaC,EACb,aAAc0G,CAClB,CAAG,CACH,CACA,MAAMM,GAAa,CAEjB,OAAQ3G,GACV,KAAET,EACF,ECzCO,SAASA,GAAKC,EAAM,CACzB,KAAM,CACJ,kBAAAoH,EACA,aAAA/G,EACA,WAAAgH,EACA,aAAAC,EACA,aAAAC,EACA,WAAAC,EACA,WAAArH,EACA,kBAAAC,EACA,SAAAE,CACJ,EAAMN,EACJ,MAAO,CACL,SAAAM,EACA,WAAY,MACZ,WAAY,OACZ,mBAAoB,QACpB,iBAAkB8G,EAClB,eAAgBC,EAChB,iBAAkBC,EAClB,gBAAiBG,GAAYF,EAAc,CACzC,MAAO,EACb,CAAK,EACD,WAAYC,EACZ,cAAerH,EACf,sBAAuBC,EACvB,aAAcmH,EACd,cAAeA,EACf,UAAWlH,CACf,CACA,CACA,MAAMqH,GAAYC,GAAY,CAC5B,KAAM,OACN,OAAQnH,GACR,MAAO,CACL,SAAUoH,GACV,UAAWC,GACX,MAAOC,EACX,EACE,KAAA/H,EACF,CAAC,EC3CYgI,GAAiB,OAAO,OAAO,OAAO,OAAO,GAAInH,GAAS,KAAK,EAAG,CAC7E,QAAS,OACT,YAAa,QACb,SAAU,SACV,aAAc,OACd,aAAc,CAAC,OAAQ,MAAM,EAC7B,KAAM,OACN,WAAY,CACV,KAAM,OACN,QAAS,OACb,EACE,WAAY,CACV,KAAM,OACN,QAAS,QACb,CACA,CAAC,EACKoH,GAAY3J,EAAgB,CAChC,KAAM,YACN,MAAO0J,GACP,OAAQ,CACN,MAAME,EAAmB9G,GAAI,IAAI,EAWjC,OAAO,OAAO,OAAO,OAAO,OAAO,GAVZ,CACrB,SAAU,IAAI+G,IAAS,CACrB,IAAIzE,GACHA,EAAKwE,EAAiB,SAAW,MAAQxE,IAAO,QAAkBA,EAAG,SAASyE,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CACvG,EACM,SAAU,IAAIA,IAAS,CACrB,IAAIzE,GACHA,EAAKwE,EAAiB,SAAW,MAAQxE,IAAO,QAAkBA,EAAG,SAASyE,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CACvG,CACA,CACyD,EAAG,CACtD,iBAAAD,CACN,CAAK,CACL,EACE,QAAS,CACP,OAAO3J,EAAE6J,GAAY,OAAO,OAAO,CACjC,IAAK,kBACX,EAAO,KAAK,MAAM,EAAG,KAAK,MAAM,CAChC,CACA,CAAC,ECvBDC,GAAevJ,EAAE,CAACC,EAAG,QAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAiB1B,CAACD,EAAE,KAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAgBT,CAACA,EAAE,eAAgB;AAAA;AAAA,EAErB,CAAC,CAAC,EAAGA,EAAE,KAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWX,CAACA,EAAE,eAAgB;AAAA;AAAA,EAErB,CAAC,CAAC,EAAGD,EAAG,WAAY;AAAA;AAAA;AAAA,GAGlB,CAACC,EAAE,KAAM,CAACA,EAAE,eAAgB,CAACA,EAAE,KAAM;AAAA;AAAA,EAEvC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAGD,EAAG,cAAe,CAACC,EAAE,KAAM;AAAA;AAAA,EAEpC,EAAGA,EAAE,KAAM;AAAA;AAAA,EAEX,CAAC,CAAC,EAAGD,EAAG,gBAAiB,CAACC,EAAE,KAAM,CAACA,EAAE,qBAAsB,CAACA,EAAE,KAAM;AAAA;AAAA,EAEpE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAGD,EAAG,UAAW,CAACC,EAAE,uBAAwB,CAACA,EAAE,KAAM,6CAA6C,CAAC,CAAC,CAAC,CAAC,EAAGK,GAAM,kBAAmB,CAACL,EAAE,KAAM,CAACA,EAAE,eAAgB,CAACA,EAAE,KAAM;AAAA;AAAA,EAE7K,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAGwJ,GAAYvJ,EAAG,QAAS;AAAA;AAAA;AAAA,GAGjC,CAACD,EAAE,KAAM;AAAA;AAAA,EAEX,EAAGA,EAAE,KAAM;AAAA;AAAA,EAEX,CAAC,CAAC,CAAC,EAAGyJ,GAAcxJ,EAAG,QAAS;AAAA;AAAA;AAAA,GAG9B,CAACD,EAAE,KAAM;AAAA;AAAA,EAEX,EAAGA,EAAE,KAAM;AAAA;AAAA,EAEX,CAAC,CAAC,CAAC,CAAC,CAAC,ECzFM0J,GAAa,OAAO,OAAO,OAAO,OAAO,GAAI3H,GAAS,KAAK,EAAG,CACzE,SAAU,CACR,KAAM,QACN,QAAS,EACb,EACE,eAAgB,CACd,KAAM,QACN,QAAS,EACb,EACE,WAAY,CACV,KAAM,QACN,QAAS,EACb,EACE,QAAS,QACT,aAAc,QACd,KAAM,CACJ,KAAM,OACN,QAAS,QACb,CACA,CAAC,EACD4H,GAAenK,EAAgB,CAC7B,KAAM,QACN,MAAOkK,GACP,MAAMlJ,EAAO,CACX,KAAM,CACJ,mBAAAC,EACA,oBAAA2B,EACA,aAAA1B,CACN,EAAQC,GAAUH,CAAK,EACbmC,EAAWZ,GAAS,QAAS,SAAUlB,GAAOyH,GAAY9H,EAAOC,CAAkB,EACnFqD,EAAgB9C,GAAO,QAASN,EAAcD,CAAkB,EAChEsD,EAAavB,EAAS,IAAM,CAChC,KAAM,CACJ,KAAAoH,CACR,EAAUpJ,EACE,CACJ,KAAM,CACJ,YAAAqJ,EACA,QAAAC,EACA,aAAAC,EACA,eAAAC,EACA,QAAAC,EACA,aAAAC,EACA,eAAAC,EACA,YAAAC,EACA,YAAAC,EACA,aAAAtC,EACA,aAAAuC,EACA,WAAArC,EACA,iBAAAsC,EACA,mBAAAC,EACA,eAAAC,EACA,oBAAAC,EACA,sBAAAC,EACA,CAACC,GAAU,WAAYhB,CAAI,CAAC,EAAGnI,EAC/B,CAACmJ,GAAU,YAAahB,CAAI,CAAC,EAAGiB,GAChC,CAACD,GAAU,YAAahB,CAAI,CAAC,EAAGkB,EAC1C,EACQ,OAAQ,CACN,qBAAA9G,EACV,CACA,EAAUrB,EAAS,MACb,MAAO,CACL,aAAcqB,GACd,eAAgB8F,EAChB,qBAAsBC,EACtB,uBAAwBC,EACxB,oBAAqBK,EACrB,mBAAoBR,EACpB,yBAA0BU,EAC1B,2BAA4BC,EAC5B,oBAAqBzC,EACrB,gBAAiBtG,EACjB,eAAgBwI,EAChB,qBAAsBC,EACtB,uBAAwBC,EACxB,qBAAsBG,EACtB,oBAAqBF,EACrB,kBAAmBnC,EACnB,iBAAkB4C,GAClB,iBAAkBC,GAClB,uBAAwBL,EACxB,6BAA8BC,EAC9B,+BAAgCC,CACxC,CACA,CAAK,EACKjG,EAAmBtC,EAAsBuC,GAAc,QAASnC,EAAS,IACtEhC,EAAM,KAAK,CAAC,CACpB,EAAGuD,EAAYvD,CAAK,EAAI,OACzB,MAAO,CACL,WAAYsD,EACZ,gBAAiBrD,EACjB,QAAS2B,EAAsB,OAAY2B,EAC3C,WAAYW,GAAqB,KAAsC,OAASA,EAAiB,WACjG,SAAUA,GAAqB,KAAsC,OAASA,EAAiB,QACrG,CACA,EACE,QAAS,CACP,IAAIE,EACJ,KAAM,CACJ,gBAAA3D,CACN,EAAQ,KACJ,OAAC2D,EAAK,KAAK,YAAc,MAAQA,IAAO,QAAkBA,EAAG,KAAK,IAAI,EAC/DnF,EAAE,QAAS,CAChB,MAAO,CAAC,GAAGwB,CAAe,SAAU,KAAK,WAAY,CACnD,CAAC,GAAGA,CAAe,aAAa,EAAG,KAAK,WACxC,CAAC,GAAGA,CAAe,yBAAyB,EAAG,KAAK,eACpD,CAAC,GAAGA,CAAe,kBAAkB,EAAG,KAAK,SAC7C,CAAC,GAAGA,CAAe,qBAAqB,EAAG,KAAK,WAChD,CAAC,GAAGA,CAAe,uBAAuB,EAAG,KAAK,aAClD,CAAC,GAAGA,CAAe,iBAAiB,EAAG,KAAK,OACpD,CAAO,EACD,MAAO,KAAK,OAClB,EAAO,KAAK,MAAM,CAClB,CACA,CAAC,ECxHD8J,GAAevL,EAAgB,CAC7B,KAAM,QACN,QAAS,CACP,OAAOC,EAAE,QAAS,KAAM,KAAK,MAAM,CACvC,CACA,CAAC,ECLDuL,GAAexL,EAAgB,CAC7B,KAAM,KACN,QAAS,CACP,OAAOC,EAAE,KAAM,KAAM,KAAK,MAAM,CACpC,CACA,CAAC,ECLDwL,GAAezL,EAAgB,CAC7B,KAAM,KACN,QAAS,CACP,OAAOC,EAAE,KAAM,KAAM,KAAK,MAAM,CACpC,CACA,CAAC,ECLYyL,GAAyBjJ,GAAmB,eAAe,ECAjE,SAASkJ,GAAe,CAC7B,SAAAC,EACA,YAAAC,EACA,OAAAC,EACA,GAAAC,CACF,EAAG,CACD,MAAM1K,EAAQ,CACZ,SAAU,WACV,UAAW,aACX,MAAO,CACX,EACE,GAAIuK,IAAa,SACfvK,EAAM,KAAO,EACbA,EAAM,IAAM,EACZA,EAAM,OAAS,EACfA,EAAM,aAAe,UACrBA,EAAM,UAAY,+CACb,CACL,MAAM2K,EAAcJ,IAAa,SAAW,MAAQ,SACpDvK,EAAM2K,CAAW,EAAI,EAGrB3K,EAAM,KAAO,GAAG0K,EAAG,WAAa,EAAIF,EAAcC,CAAM,KACxDzK,EAAM,OAAS,MACfA,EAAM,gBAAkB,2BACxBA,EAAM,gBAAkB2K,EACxB3K,EAAM,aAAe,MACrBA,EAAM,UAAYuK,IAAa,SAAW,mBAAqB,iBACnE,CACE,OAAO3L,EAAE,MAAO,CACd,MAAOoB,CACX,CAAG,CACH,CACO,SAAS4K,GAAiB,CAC/B,aAAAC,EACA,KAAAC,CACF,EAAG,CAED,OADIA,EAAK,SAAW,IAChBA,EAAK,SACA,GAEFD,IAAiB,QAC1B,CC1CO,MAAME,GAAmB3J,GAAmB,QAAQ,ECCpD,SAAS4J,GAAY,CAC1B,MAAArL,EACA,UAAAsL,EACA,sBAAAC,EACA,sBAAAC,EACA,qBAAAC,EACA,YAAAC,EACA,aAAAC,EACA,oBAAAC,CACF,EAAG,CACD,KAAM,CACJ,MAAOC,CACX,EAAML,EAEEM,EAAsBtG,GAAOkF,GAAwB,IAAI,EACzDqB,EAAoBD,EAAsBA,EAAoB,kBAAoBhK,GAAI+J,EAAmB,OAASA,EAAmBA,EAAmB,OAAS,CAAC,EAAI,IAAI,EAChL,SAASG,EAAclG,EAAG,CACxB,IAAI1B,EACJ,GAAI,CAACpE,EAAM,SAAU,MAAO,CAC1B,cAAe,IACrB,EACI,KAAM,CACJ,MAAOiM,CACb,EAAQF,EACJ,IAAIG,EAAgB,KACpB,GAAID,IAAmB,MAIrB,IAHInG,EAAE,MAAQ,aAAeA,EAAE,MAAQ,YACrCA,EAAE,eAAc,EAEd,CAAC,YAAa,UAAW,YAAa,YAAY,EAAE,SAASA,EAAE,GAAG,GAChEmG,IAAmB,KAAM,CAC3B,KAAM,CACJ,MAAOE,CACnB,EAAcb,EACJ,IAAIc,EAAS,EACb,KAAOA,EAASD,EAAO,QAAQ,CAC7B,GAAI,CAACA,EAAOC,CAAM,EAAE,SAAU,CAC5BL,EAAkB,MAAQI,EAAOC,CAAM,EAAE,IACzC,KACd,CACYA,GAAU,CACtB,CACA,MAEW,CACL,KAAM,CACJ,MAAOD,CACf,EAAUb,EACJ,IAAIc,EAASD,EAAO,UAAUE,GAAUA,EAAO,MAAQJ,CAAc,EACrE,GAAI,CAAC,CAACG,EAAQ,MAAO,CACnB,cAAe,IACvB,EACM,GAAItG,EAAE,MAAQ,QAAS,CACrB,MAAMuG,EAASF,EAAOC,CAAM,EAI5B,OAHAF,IAAkB9H,EAAKpE,EAAM,oCAAsC,MAAQoE,IAAO,OAAS,OAASA,EAAG,KAAKpE,EAAO,CACjH,OAAQqM,EAAO,OACzB,CAAS,IAAM,KACCH,EAAa,CACnB,IAAK,cACHR,EAAYW,EAAQ,CAACZ,EAAqB,MAAM,SAASY,EAAO,GAAG,CAAC,EACpE,MACF,IAAK,eACHV,EAAaU,CAAM,EACnB,MACF,IAAK,eACHT,EAAoBS,CAAM,EAC1B,MACF,IAAK,OACH,MACF,IAAK,UACL,QACEH,EAAgB,UAChBP,EAAaU,CAAM,CAC/B,CACA,SAAiBvG,EAAE,MAAQ,YAGnB,IAFAA,EAAE,eAAc,EAChBsG,GAAU,EACHA,EAASD,EAAO,QAAQ,CAC7B,GAAI,CAACA,EAAOC,CAAM,EAAE,SAAU,CAC5BL,EAAkB,MAAQI,EAAOC,CAAM,EAAE,IACzC,KACZ,CACUA,GAAU,CACpB,SACiBtG,EAAE,MAAQ,UAGnB,IAFAA,EAAE,eAAc,EAChBsG,GAAU,EACHA,GAAU,GAAG,CAClB,GAAI,CAACD,EAAOC,CAAM,EAAE,SAAU,CAC5BL,EAAkB,MAAQI,EAAOC,CAAM,EAAE,IACzC,KACZ,CACUA,GAAU,CACpB,SACiBtG,EAAE,MAAQ,YAAa,CAChC,MAAMwG,EAAcH,EAAOC,CAAM,EACjC,GAAIE,EAAY,QAAU,CAACf,EAAsB,MAAM,SAASU,CAAc,EAAG,CAC/E,MAAMM,EAAeD,EAAY,UAAS,EACtCC,IACFR,EAAkB,MAAQQ,EAAa,IAEnD,MACUX,EAAoBU,CAAW,CAEzC,SAAiBxG,EAAE,MAAQ,aAAc,CACjC,MAAMwG,EAAcH,EAAOC,CAAM,EACjC,GAAIE,EAAY,OAAQ,MAAO,CAC7B,cAAe,IACzB,EACQ,GAAI,CAACf,EAAsB,MAAM,SAASU,CAAc,EACtDL,EAAoBU,CAAW,MAI/B,KADAF,GAAU,EACHA,EAASD,EAAO,QAAQ,CAC7B,GAAI,CAACA,EAAOC,CAAM,EAAE,SAAU,CAC5BL,EAAkB,MAAQI,EAAOC,CAAM,EAAE,IACzC,KACd,CACYA,GAAU,CACtB,CAEA,CACA,CACI,MAAO,CACL,cAAAF,CACN,CACA,CACE,MAAO,CACL,kBAAAH,EACA,cAAAC,CACJ,CACA,CCnIA,MAAAQ,GAAexN,EAAgB,CAC7B,KAAM,oBACN,MAAO,CACL,UAAW,CACT,KAAM,OACN,SAAU,EAChB,EACI,OAAQ,CACN,KAAM,OACN,SAAU,EAChB,EACI,MAAO,QACP,UAAW,QACX,SAAU,QACV,QAAS,QACT,cAAe,QACf,QAAS,QACb,EACE,MAAMgB,EAAO,CACX,MAAMyM,EAAQjH,GAAO4F,EAAgB,EACrC,SAASsB,EAAQC,EAAO,CACtB,KAAM,CACJ,QAAAC,CACR,EAAU5M,EACA4M,GACFA,EAAQD,CAAK,CAErB,CACI,SAASE,EAAkBF,EAAO,CAChCD,EAAQC,CAAK,CACnB,CACI,MAAO,CACL,kBAAAE,EACA,YAAaJ,EAAM,cACzB,CACA,EACE,QAAS,CACP,KAAM,CACJ,UAAA7H,EACA,YAAAkI,EACA,QAAAC,EACA,cAAAC,EACA,SAAA3G,EACA,UAAA4G,EACA,OAAAnC,EACA,kBAAA+B,CACN,EAAQ,KACJ,OAAO5N,EAAE,OAAQ,CACf,MAAO,CAAC,GAAG2F,CAAS,sBAAuB,KAAK,OAAS,GAAGA,CAAS,4BAA4B,EACjG,MAAO,CACL,MAAO,GAAGkG,CAAM,IACxB,EACM,gBAAiB,EACvB,EAAO7L,EAAEiO,GAAW,CACd,UAAWD,EACX,SAAU5G,EACV,MAAOyG,EAAY,MAAM,SACzB,eAAgBA,EAAY,cAAc,SAC1C,QAASC,EACT,cAAeC,EACf,gBAAiBH,CACvB,CAAK,CAAC,CACN,CACA,CAAC,EC/DDM,GAAenO,EAAgB,CAC7B,KAAM,kBACN,MAAO,CACL,UAAW,CACT,KAAM,OACN,SAAU,EAChB,EACI,SAAU,QACV,QAAS,QACT,SAAU,QACV,QAAS,SACT,YAAa,SACb,OAAQ,CACN,KAAM,OACN,SAAU,EAChB,EACI,UAAW,MACf,EACE,MAAMgB,EAAO,CACX,KAAM,CACJ,eAAAoN,EACA,gBAAAC,EACA,gBAAAC,EACA,cAAAC,CACN,EAAQ/H,GAAO4F,EAAgB,EACrBoC,EAAU1L,GAAI,IAAI,EACxB,SAAS2L,EAAQ3H,EAAG,CAClB,KAAM,CACJ,QAAA4H,CACR,EAAU1N,EACA0N,GAASA,EAAQ5H,CAAC,CAC5B,CACI,SAAS6H,EAAY7H,EAAG,CACtB2H,EAAQ3H,CAAC,CACf,CACI,MAAO,CACL,QAAA0H,EACA,YAAaJ,EACb,aAAcC,EACd,aAAcC,EACd,WAAYC,EACZ,YAAAI,CACN,CACA,EACE,QAAS,CACP,KAAM,CACJ,UAAA/I,EACA,WAAAgJ,EACA,UAAAC,EACA,QAAAd,EAAU,GACV,SAAAe,EAAW,GACX,YAAAC,EACA,aAAAC,EACA,aAAAC,EACA,YAAAN,EACA,YAAAO,EACA,OAAQ,CACN,QAAAC,EACA,QAAS,CACP,OAAAC,EACA,OAAAC,EACA,CAACT,CAAU,EAAGU,CACxB,CACA,CACA,EAAQ,KACJ,OAAOrP,EAAE,OAAQ,OAAO,OAAO,GAAI4O,EAAW,CAC5C,IAAK,UACL,MAAO,CAAC,GAAGjJ,CAAS,qBAAsBiJ,GAAc,KAA+B,OAASA,EAAU,KAAK,EAC/G,QAASF,EACT,UAAWO,IAAgB,OAAY,OAAY,GACnD,YAAaA,CACnB,CAAK,EAAGF,GAAgBI,EAASnP,EAAE,MAAO,CACpC,MAAO,GAAG2F,CAAS,4BACzB,EAAOoJ,EAAeA,EAAa,CAC7B,OAAQG,EACR,SAAAL,EACA,QAAAf,CACN,CAAK,EAAIwB,GAAOH,CAAM,CAAC,EAAI,KAAMnP,EAAE,MAAO,CACpC,MAAO,GAAG2F,CAAS,0BACzB,EAAOmJ,EAAcA,EAAY,CAC3B,OAAQI,EACR,SAAAL,EACA,QAAAf,CACN,CAAK,EAAIwB,GAAOD,CAAK,CAAC,EAAGL,GAAgBI,EAASpP,EAAE,MAAO,CACrD,MAAO,GAAG2F,CAAS,4BACzB,EAAOqJ,EAAeA,EAAa,CAC7B,OAAQE,EACR,SAAAL,EACA,QAAAf,CACN,CAAK,EAAIwB,GAAOF,CAAM,CAAC,EAAI,IAAI,CAC/B,CACA,CAAC,EC1FDG,GAAexP,EAAgB,CAC7B,KAAM,gBACN,MAAO,CACL,UAAW,CACT,KAAM,OACN,SAAU,EAChB,EACI,OAAQ,CACN,KAAM,OACN,SAAU,EAChB,EACI,SAAU,QACV,SAAU,QACV,KAAM,QACN,QAAS,QACT,QAAS,SACT,OAAQ,CACN,KAAM,OACN,SAAU,EAChB,CACA,EACE,MAAMgB,EAAO,CACX,KAAM,CACJ,sBAAAyO,CACN,EAAQjJ,GAAO4F,GAAkB,IAAI,EACjC,MAAO,IAAM,CACX,KAAM,CACJ,UAAAxG,EACA,SAAA8J,EACA,KAAAC,EACA,OAAA7D,EACA,QAAA4C,CACR,EAAU1N,EACJ,OAAOf,EAAE,OAAQ,CACf,gBAAiB,GACjB,MAAO,CAAC,GAAG2F,CAAS,sBAAuB8J,GAAY,GAAG9J,CAAS,gCAAiC+J,GAAQ,GAAG/J,CAAS,2BAA2B,EACnJ,MAAO,CACL,MAAO,GAAGkG,CAAM,IAC1B,EACQ,QAAS4C,CACjB,EAASzO,EAAE,MAAO,CACV,MAAO,GAAG2F,CAAS,2BAC3B,EAAS3F,EAAE2P,GAAuB,KAAM,CAChC,QAAS,IAAM,CACb,GAAI5O,EAAM,QACR,OAAOf,EAAE4P,GAAc,CACrB,UAAWjK,EACX,IAAK,UACL,OAAQ,GACR,YAAa,EAC3B,CAAa,EAEH,KAAM,CACJ,MAAOkK,CACnB,EAAcL,EACJ,OAAOK,EAAqBA,EAAmB,CAC7C,SAAU9O,EAAM,SAChB,SAAUA,EAAM,SAChB,OAAQA,EAAM,OAAO,OACjC,CAAW,EAAIf,EAAE2H,GAAW,CAChB,UAAWhC,EACX,IAAK,UACjB,EAAa,CACD,QAAS,IAAM3F,EAAEC,GAAc,IAAI,CAC/C,CAAW,CACX,CACA,CAAO,CAAC,CAAC,CACT,CACA,CACA,CAAC,ECtEM,SAAS6P,GAAuB/O,EAAO,CAC5C,OAAOgC,EAAS,IAAMhC,EAAM,SAAW,QAAUA,EAAM,aAAa,CACtE,CACO,SAASgP,GAAe7D,EAAM8D,EAAe,CAClD,MAAO,CAAC,CAAC9D,EAAK,QAAQ8D,CAAa,CACrC,CACA,SAASC,GAASC,EAAOC,EAAeC,EAAUC,EAAe,CAC/DH,GAAU,MAAoCA,EAAM,QAAQhE,GAAQ,CAClEkE,EAASlE,CAAI,EACb+D,GAAS/D,EAAKiE,CAAa,EAAGA,EAAeC,EAAUC,CAAa,EACpEA,EAAcnE,CAAI,CACtB,CAAG,CACH,CACO,SAASoE,GAAeJ,EAAOK,EAASC,EAAUL,EAAeM,EAAQ,CAC9E,MAAMC,EAAO,IAAI,IACXC,EAAkB,IAAI,IACtBC,EAAO,GACb,OAAAX,GAASC,EAAOC,EAAejE,GAAQ,CAErC,GADA0E,EAAK,KAAK1E,CAAI,EACVuE,EAAOF,EAASrE,CAAI,EAAG,CACzByE,EAAgB,IAAIzE,EAAKsE,CAAQ,CAAC,EAClC,QAASK,EAAID,EAAK,OAAS,EAAGC,GAAK,EAAG,EAAEA,EACtC,GAAI,CAACH,EAAK,IAAIE,EAAKC,CAAC,EAAEL,CAAQ,CAAC,EAC7BE,EAAK,IAAIE,EAAKC,CAAC,EAAEL,CAAQ,CAAC,MAE1B,OAGV,CACA,EAAK,IAAM,CACPI,EAAK,IAAG,CACZ,CAAG,EACM,CACL,aAAc,MAAM,KAAKF,CAAI,EAC7B,gBAAAC,CACJ,CACA,CAEA,GAAIG,IAAa,MAAO,CACtB,MAAMC,EAAa,IAAI,MACvBA,EAAW,IAAM,4EACnB,CAEO,SAASC,GAAWC,EAAMR,EAAQF,EAASC,EAAUL,EAAe,CACzE,MAAMe,EAAkB,IAAI,IACtBC,EAAqB,IAAI,IACzBR,EAAkB,IAAI,IACtBS,EAAe,GACfC,EAAe,GACfT,EAAO,GACb,SAASU,EAAMC,EAAG,CAChBA,EAAE,QAAQC,GAAK,CAEb,GADAZ,EAAK,KAAKY,CAAC,EACPf,EAAOF,EAASiB,CAAC,EAAG,CACtBN,EAAgB,IAAIM,EAAEhB,CAAQ,CAAC,EAC/BG,EAAgB,IAAIa,EAAEhB,CAAQ,CAAC,EAC/B,QAASK,EAAID,EAAK,OAAS,EAAGC,GAAK,EAAG,EAAEA,EAAG,CACzC,MAAMhR,EAAM+Q,EAAKC,CAAC,EAAEL,CAAQ,EAC5B,GAAI,CAACW,EAAmB,IAAItR,CAAG,EAC7BsR,EAAmB,IAAItR,CAAG,EACtBqR,EAAgB,IAAIrR,CAAG,GACzBqR,EAAgB,OAAOrR,CAAG,MAG5B,MAEZ,CACA,CACM,MAAMkI,EAAWyJ,EAAErB,CAAa,EAC5BpI,GACFuJ,EAAMvJ,CAAQ,EAEhB6I,EAAK,IAAG,CACd,CAAK,CACL,CACEU,EAAML,CAAI,EACV,SAASQ,EAAMF,EAAGG,EAAM,CACtBH,EAAE,QAAQC,GAAK,CACb,MAAM3R,EAAM2R,EAAEhB,CAAQ,EAChBmB,EAAgBT,EAAgB,IAAIrR,CAAG,EACvC+R,EAAmBT,EAAmB,IAAItR,CAAG,EACnD,GAAI,CAAC8R,GAAiB,CAACC,EAAkB,OACzC,MAAM7J,EAAWyJ,EAAErB,CAAa,EAChC,GAAIpI,EACF,GAAI4J,EAEFD,EAAK,KAAKF,CAAC,MACN,CAELJ,EAAa,KAAKvR,CAAG,EACrB,MAAMgS,EAAa,OAAO,OAAO,OAAO,OAAO,GAAIL,CAAC,EAAG,CACrD,CAACrB,CAAa,EAAG,EAC7B,CAAW,EACDuB,EAAK,KAAKG,CAAU,EACpBJ,EAAM1J,EAAU8J,EAAW1B,CAAa,CAAC,CACnD,MAEQuB,EAAK,KAAKF,CAAC,CAEnB,CAAK,CACL,CACE,OAAAC,EAAMR,EAAMI,CAAY,EACjB,CACL,aAAAA,EACA,gBAAAV,EACA,aAAAS,CACJ,CACA,CCpGA,MAAMU,GAAW/R,EAAgB,CAC/B,KAAM,WACN,MAAO,CACL,UAAW,CACT,KAAM,OACN,SAAU,EAChB,EACI,OAAQ,CACN,KAAM,OACN,SAAU,EAChB,CACA,EACE,MAAMgB,EAAO,CACX,MAAMyM,EAAQjH,GAAO4F,EAAgB,EAC/B,CACJ,sBAAA4F,EACA,qBAAAC,EACA,gBAAAC,EACA,oBAAAC,EACA,uBAAAC,EACA,aAAAC,EACA,UAAAC,EACA,aAAAC,EACA,qBAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,YAAAC,EACA,sBAAAlD,EACA,oCAAAmD,CACN,EAAQnF,EACEoF,EAAsBvM,GAAQ,IAAM,CAAC,CAACtF,EAAM,OAAO,QAAQ,gBAAgB,EAC3E8R,EAAoBxM,GAAQ,IACzB0J,GAAehP,EAAM,OAAQ0R,EAAiB,KAAK,CAC3D,EACKK,EAAczM,GAAQ,IAAMmH,EAAM,YAAY,OAASqF,EAAkB,KAAK,EAC9EE,EAAuBhQ,EAAS,IAAM,CAC1C,KAAM,CACJ,MAAO6L,CACf,EAAUwD,EACJ,GAAKxD,EACL,OAAOA,EAAU,CACf,OAAQ7N,EAAM,OAAO,OAC7B,CAAO,CACP,CAAK,EAEKiS,EAAiBnQ,GAAI,IAAI,EAEzBoQ,EAAe,CACnB,MAAO,IACb,EACIC,GAAU,IAAM,CACdD,EAAa,MAAQD,EAAe,MAAM,GAChD,CAAK,EACD,SAASrG,GAAsB,CAC7B,MAAMyD,EAAW,IAAM,CACrB,KAAM,CACJ,OAAAhD,CACV,EAAYrM,EACJ,GAAI,CAACqM,EAAO,QAAU,CAACA,EAAO,cAAe,CAC3C,GAAI,CAACI,EAAM,eAAe,MAAM,IAAIJ,EAAO,GAAG,EAC5CI,EAAM,eAAe,MAAM,IAAIJ,EAAO,GAAG,MAEzC,QAEF,KAAM,CACJ,UAAW,CACT,MAAO+F,EACrB,CACA,EAAc3F,EACA2F,IACGA,GAAO/F,EAAO,OAAO,EAAE,KAAKM,IAAS,CACpCA,KAAU,IACZF,EAAM,oBAAoBJ,CAAM,CAEhD,CAAa,EAAE,QAAQ,IAAM,CACfI,EAAM,eAAe,MAAM,OAAOJ,EAAO,GAAG,CAC1D,CAAa,CAEb,MACUI,EAAM,oBAAoBJ,CAAM,CAE1C,EACUoC,EAAsB,MAIxB,WAAWY,EAAU,CAAC,EAEtBA,EAAQ,CAEhB,CACI,MAAMgD,EAAgB/M,GAAQ,IAAM,CAACwM,EAAkB,OAASrF,EAAM,cAAc,QAAUA,EAAM,mBAAqBA,EAAM,uBAAuB,QAAU,SAAWA,EAAM,YAAY,OAASA,EAAM,WAAW,OAASzM,EAAM,OAAO,OAAS,GAAK,EACrPsS,EAAehN,GAAQ,IAAMmH,EAAM,aAAa,QAAUA,EAAM,WAAW,OAASA,EAAM,uBAAuB,QAAU,SAAWzM,EAAM,OAAO,OAAO,EAC1JuS,EAAajN,GAAQ,IAAMmH,EAAM,wBAAwB,MAAM,SAASzM,EAAM,OAAO,GAAG,CAAC,EACzFwS,EAAwBlN,GAAQ,IAAM,CAC1C,KAAM,CACJ,MAAOmN,CACf,EAAUH,EACJ,GAAI,CAACG,EAAW,MAAO,GACvB,KAAM,CACJ,MAAOC,CACf,EAAUjB,EACE,CACJ,OAAApF,EACR,EAAUrM,EACJ,OAAI,OAAO0S,GAAiB,UACnB,CAACrG,GAAO,UAAYqG,EAEtBA,EAAa1S,EAAM,OAAO,OAAO,CAC9C,CAAK,EACD,SAAS2S,GAAa7M,EAAG,CACvB,KAAM,CACJ,MAAO8M,CACf,EAAUnG,EAAM,iBACJ,CACJ,MAAOoG,EACf,EAAUR,EACE,CACJ,MAAOS,EACf,EAAUN,EAEJ,GADI,CAACK,IAAc,CAACD,GAAiB,CAACE,IAClC9M,GAAUF,EAAG,UAAU,GAAKE,GAAUF,EAAG,UAAU,EAAG,OAC1D,KAAM,CACJ,OAAAuG,EACR,EAAUrM,EACA6S,IACFpG,EAAM,aAAaJ,EAAM,EAEvBuG,GAAiB,CAACvG,GAAO,QAC3BT,EAAmB,EAEjBkH,IACFpH,GAAY,CAAC6G,EAAW,KAAK,CAErC,CACI,SAASQ,GAAgBjN,EAAG,CAC1B,IAAI1B,EAAI4O,GACR,GAAI,EAAAhN,GAAUF,EAAG,UAAU,GAAKE,GAAUF,EAAG,UAAU,GACvD,IAAI,CAACiM,EAAY,MAAO,CACtB,MAAMkB,GAAmCrB,EAAoC,MAC7E,IAAIsB,GAAiB,GACrB,GAAID,GACF,OAAQA,GAAiC,CACvC,OAAQjT,EAAM,OAAO,OACjC,CAAW,EAAC,CACA,IAAK,cACHkT,GAAiB,GACjBxH,GAAY,CAAC6G,EAAW,KAAK,EAC7B,MACF,IAAK,eACHW,GAAiB,GACjBzG,EAAM,aAAazM,EAAM,MAAM,EAC/B,MACF,IAAK,eACHkT,GAAiB,GACjBtH,EAAmB,EACnBsH,GAAiB,GACjB,MACF,IAAK,OACHA,GAAiB,GACjBA,GAAiB,GACjB,MAId,CAEaA,IACHP,GAAa7M,CAAC,CAExB,EACOkN,IAAM5O,EAAK4N,EAAqB,SAAW,MAAQ5N,IAAO,OAAS,OAASA,EAAG,WAAa,MAAQ4O,KAAO,QAAkBA,GAAG,KAAK5O,EAAI0B,CAAC,EACjJ,CACI,SAASqN,GAAmBrN,EAAG,CACzByL,EAAa,OACjBwB,GAAgBjN,CAAC,CACvB,CACI,SAASsN,GAAgBtN,EAAG,CACrByL,EAAa,OAClBwB,GAAgBjN,CAAC,CACvB,CACI,SAAS4F,GAAYqB,EAAS,CAC5BN,EAAM,YAAYzM,EAAM,OAAQ+M,CAAO,CAC7C,CAEI,SAASsG,GAAgBvN,EAAG,CAC1B2G,EAAM,gBAAgB,CACpB,MAAO3G,EACP,KAAM9F,EAAM,MACpB,CAAO,CACP,CACI,SAASsT,GAAgBxN,EAAG,CACtBA,EAAE,gBAAkBA,EAAE,QAG1B2G,EAAM,gBAAgB,CACpB,MAAO3G,EACP,KAAM9F,EAAM,MACpB,CAAO,CACP,CACI,SAASuT,GAAezN,EAAG,CACzBA,EAAE,eAAc,EAChB2G,EAAM,eAAe,CACnB,MAAO3G,EACP,KAAM9F,EAAM,MACpB,CAAO,CACP,CACI,SAASwT,EAAc1N,EAAG,CACxB2G,EAAM,cAAc,CAClB,MAAO3G,EACP,KAAM9F,EAAM,MACpB,CAAO,CACP,CACI,SAASyT,GAAgB3N,EAAG,CACtBA,EAAE,gBAAkBA,EAAE,QAG1B2G,EAAM,gBAAgB,CACpB,MAAO3G,EACP,KAAM9F,EAAM,MACpB,CAAO,CACP,CACI,SAAS0T,GAAW5N,EAAG,CACrBA,EAAE,eAAc,EACZqL,EAAoB,QAAU,MAChC1E,EAAM,WAAW,CACf,MAAO3G,EACP,KAAM9F,EAAM,OACZ,aAAcmR,EAAoB,KAC5C,CAAS,CAET,CACI,MAAMwC,GAAc3R,EAAS,IAAM,CACjC,KAAM,CACJ,UAAA4C,CACR,EAAU5E,EACE,CACJ,MAAO8K,CACf,EAAUwG,EACJ,GAAIK,EAAY,MAAO,CACrB,MAAMgC,GAAc,GACpB,IAAIC,GAAS5T,EAAM,OAAO,OAC1B,KAAO4T,IACDA,GAAO,YACTD,GAAY,KAAK1U,EAAE,MAAO,CACxB,MAAO,GAAG2F,CAAS,mBACjC,EAAe3F,EAAE,MAAO,CACV,MAAO,CACL,MAAO,GAAG6L,CAAM,IAChC,CACA,CAAa,CAAC,CAAC,EAEH6I,GAAY,KAAK1U,EAAE,MAAO,CACxB,MAAO,CAAC,GAAG2F,CAAS,oBAAqB,GAAGA,CAAS,8BAA8B,CACjG,EAAe3F,EAAE,MAAO,CACV,MAAO,CACL,MAAO,GAAG6L,CAAM,IAChC,CACA,CAAa,CAAC,CAAC,EAEL8I,GAASA,GAAO,OAElB,OAAOD,GAAY,QAAO,CAClC,KACQ,QAAOE,GAAO7T,EAAM,OAAO,MAAOf,EAAE,MAAO,CACzC,MAAO,GAAGe,EAAM,SAAS,mBACnC,EAAWf,EAAE,MAAO,CACV,MAAO,CACL,MAAO,GAAG6L,CAAM,IAC5B,CACA,CAAS,CAAC,CAAC,CAEX,CAAK,EACD,MAAO,CACL,aAAcxF,GAAQ,IAAM,CAC1B,KAAM,CACJ,MAAOwO,CACjB,EAAY5C,EACJ,GAAI,CAAC4C,EAAc,OACnB,KAAM,CACJ,MAAOC,CACjB,EAAY5C,EACJ,GAAI,CAAC4C,EAAkB,OACvB,KAAM,CACJ,MAAOC,EACjB,EAAY/C,EACJ,GAAI,CAAC+C,GACH,OAEF,KAAM,CACJ,OAAA3H,EACV,EAAYrM,EACJ,OAAIqM,GAAO,MAAQ2H,GAAkB,GAE7C,CAAO,EACD,qBAAsB1O,GAAQ,IAAM,CAClC,KAAM,CACJ,MAAO2O,CACjB,EAAYjD,EACJ,GAAI,CAACiD,EAAoB,MAAO,GAChC,KAAM,CACJ,OAAA5H,CACV,EAAYrM,EACE,CACJ,MAAO+T,EACjB,EAAY5C,EACJ,OAAI4C,KAAqB,UAAYA,KAAqB,QACjDE,EAAmB,MAAQ5H,EAAO,IAEpC,EACf,CAAO,EACD,QAAS/G,GAAQ,IAAMmH,EAAM,kBAAkB,QAAUzM,EAAM,OAAO,GAAG,EACzE,QAASsF,GAAQ,IAAMmH,EAAM,eAAe,MAAM,IAAIzM,EAAM,OAAO,GAAG,CAAC,EACvE,UAAWsF,GAAQ,IAAM,CACvB,IAAIlB,EACJ,OAAQA,EAAKqI,EAAM,mBAAmB,SAAW,MAAQrI,IAAO,OAAS,OAASA,EAAG,IAAIpE,EAAM,OAAO,GAAG,CACjH,CAAO,EACD,QAASuS,EACT,cAAejN,GAAQ,IAAMmH,EAAM,8BAA8B,MAAM,SAASzM,EAAM,OAAO,GAAG,CAAC,EACjG,SAAUsF,GAAQ,IAAMmH,EAAM,sBAAsB,MAAM,SAASzM,EAAM,OAAO,GAAG,CAAC,EACpF,SAAUsF,GAAQ,IAAMmH,EAAM,sBAAsB,MAAM,SAASzM,EAAM,OAAO,GAAG,CAAC,EACpF,SAAU+R,EACV,UAAWO,EACX,mBAAoBE,EACpB,iBAAkBX,EAClB,WAAYQ,EACZ,cAAe5F,EAAM,iBACrB,mBAAoBA,EAAM,sBAC1B,UAAWA,EAAM,aACjB,UAAW8E,EACX,UAAWS,EACX,kBAAmBvF,EAAM,6BACzB,iBAAkB0E,EAClB,oBAAqBC,EACrB,OAAQE,EACR,kBAAmBE,EACnB,SAAUG,EACV,eAAAM,EACA,aAAAC,EACA,YAAAyB,GACA,YAAAjI,GACA,WAAAgI,GACA,gBAAAL,GACA,gBAAAC,GACA,eAAAC,GACA,cAAAC,EACA,gBAAAC,GACA,gBAAAL,GACA,mBAAAD,GACA,oBAAAvH,CACN,CACA,EACE,QAAS,CACP,KAAM,CACJ,OAAAS,EACA,UAAAzH,EACA,UAAA6N,EACA,cAAAG,EACA,WAAAC,EACA,SAAA/E,EACA,QAAAf,EACA,UAAAmH,EACA,UAAAC,EACA,UAAAC,EACA,OAAAtJ,EACA,YAAA6I,EACA,SAAAtN,EACA,QAAAgO,EACA,mBAAAC,EACA,UAAAzG,EACA,kBAAA0G,CACN,EAAQ,KAGEC,EAAoBL,GAAa,CAAC9N,EAAW,CACjD,YAAa,KAAK,gBAClB,YAAa,KAAK,gBAClB,UAAW,KAAK,cAChB,OAAQ,KAAK,WACb,WAAY,KAAK,cACvB,EAAQ,OAGEoO,EAAUH,EAAqBzV,GAAcwN,EAAO,GAAG,EAAI,OAC3DqI,EAAkBH,IAAsB,QACxCI,EAAelC,EAAYxT,EAAEuN,GAAmB,CACpD,OAAQ1B,EACR,MAAO4J,EACP,UAAW,KAAK,kBAChB,SAAUrO,GAAY,KAAK,iBAC3B,UAAWzB,EACX,QAAS,KAAK,QACd,cAAe,KAAK,cACpB,QAAS,KAAK,WACpB,CAAK,EAAI,KACL,OAAO3F,EAAE,MAAO,OAAO,OAAO,CAC5B,MAAO,GAAG2F,CAAS,oBACzB,EAAO4P,CAAiB,EAAGvV,EAAE,MAAO,OAAO,OAAO,GAAImV,EAAYvG,EAAY,OAAW,CACnF,MAAO,CAAC,GAAGjJ,CAAS,aAAc,CAChC,CAAC,GAAGA,CAAS,sBAAsB,EAAGkJ,EACtC,CAAC,GAAGlJ,CAAS,uBAAuB,EAAG6N,EACvC,CAAC,GAAG7N,CAAS,uBAAuB,EAAGsP,EACvC,CAAC,GAAGtP,CAAS,qBAAqB,EAAGyP,EACrC,CAAC,GAAGzP,CAAS,sBAAsB,EAAGyB,EACtC,CAAC,GAAGzB,CAAS,wBAAwB,EAAGiO,EACxC,CAAC,GAAGjO,CAAS,uBAAuB,EAAGiO,GAAcD,GAAiB,KAAK,kBACnF,EAAS/E,GAAc,KAA+B,OAASA,EAAU,KAAK,EACxE,WAAY4G,EACZ,UAAWN,GAAaC,EACxB,QAAS,KAAK,gBACd,YAAaD,GAAaC,GAAa,CAAC/N,EAAW,KAAK,gBAAkB,MAChF,CAAK,EAAGsN,EAAatH,EAAO,QAAU,KAAK,SAAWpN,EAAE,MAAO,CACzD,MAAO,CAAC,GAAG2F,CAAS,oBAAqB,GAAGA,CAAS,+BAAgCyH,EAAO,QAAU,GAAGzH,CAAS,6BAA8ByH,EAAO,aAAe,GAAGzH,CAAS,+BAA+B,CACvN,EAAO3F,EAAE,MAAO,CACV,MAAO,CACL,MAAO,GAAG6L,CAAM,IACxB,CACA,CAAK,CAAC,EAAI7L,EAAEuP,GAAmB,CACzB,UAAW5J,EACX,SAAU,KAAK,SACf,SAAUkJ,EACV,QAAS,KAAK,QACd,KAAMzB,EAAO,OACb,OAAQ,KAAK,OACb,OAAQvB,EACR,QAAS,KAAK,mBACpB,CAAK,EAAI4J,EAAiC,KAAfC,EAAqB1V,EAAEkO,GAAkB,CAC9D,IAAK,iBACL,UAAWvI,EACX,QAASmI,EACT,SAAUe,EACV,QAAS,KAAK,mBACd,UAAWsG,EAAY,OAAYvG,EACnC,YAAasG,GAAa,CAACC,GAAa,CAAC/N,EAAW,KAAK,gBAAkB,OAC3E,OAAQgG,CACd,CAAK,EAAG8H,EAAY,KAAK,aAAexJ,GAAe,CACjD,GAAI,KAAK,aAAa,MACtB,SAAU,KAAK,iBACf,YAAa,KAAK,oBAClB,OAAAG,CACN,CAAK,EAAI,KAAK,qBAAuBH,GAAe,CAC9C,GAAI,KAAK,aAAa,MACtB,SAAU,SACV,YAAa,KAAK,oBAClB,OAAAG,CACN,CAAK,EAAI,KAAO,KAAM4J,EAAkBC,EAAe,IAAI,CAAC,CAC5D,CACA,CAAC,ECrcDC,GAAe5V,EAAgB,CAC7B,KAAM,oBACN,MAAO,CACL,UAAW,CACT,KAAM,OACN,SAAU,EAChB,EACI,OAAQ,OACR,MAAO,CACL,KAAM,MACN,SAAU,EAChB,EACI,KAAM,CACJ,KAAM,OACN,SAAU,EAChB,EACI,aAAc,CACZ,KAAM,SACN,SAAU,EAChB,CACA,EACE,QAAS,CACP,KAAM,CACJ,UAAA4F,CACN,EAAQ,KACJ,OAAO3F,EAAE4V,GAAwB,CAC/B,aAAc,KAAK,aACnB,OAAQ,GACR,QAAS,KAAK,OAAS,UAC7B,EAAO,CACD,QAAS,IAAM5V,EAAE,MAAO,CACtB,MAAO,CAAC,GAAG2F,CAAS,uBAAwB,GAAGA,CAAS,yBAAyB,KAAK,IAAI,EAAE,EAC5F,MAAO,CACL,OAAQkQ,GAAK,KAAK,MAAM,CAClC,CACA,EAAS,KAAK,MAAM,IAAI3J,GAAQlM,EAAE8R,GAAU,CACpC,UAAWnM,EACX,OAAQuG,CAChB,CAAO,CAAC,CAAC,CACT,CAAK,CACL,CACA,CAAC,EC1CK4J,GAA2BC,GAAoB,EAiBrD3U,GAAeZ,EAAG,OAAQ;AAAA;AAAA;AAAA,EAGvB,CAACD,EAAE,SAAU;AAAA;AAAA;AAAA;AAAA,EAId,EAAGA,EAAE,IAAK,CAACC,EAAG,YAAa,CAACD,EAAE,gBAAiB,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAGC,EAAG,sBAAuB,CAACF,EAAG,SAAU,CAAC8B,GAA6B,CAC5I,SAAU,MACZ,CAAC,CAAC,CAAC,EAAG9B,EAAG,WAAY,CAAC8B,GAA6B,CACjD,SAAU,OACV,QAAS,EACX,CAAC,CAAC,CAAC,CAAC,CAAC,EAAG5B,EAAG,oBAAqB;AAAA;AAAA;AAAA,EAG9B,EAAGA,EAAG,YAAa;AAAA;AAAA;AAAA;AAAA;AAAA,GAKjB,CAACF,EAAG,YAAa,CAACE,EAAG,oBAAqB,CAACC,EAAG,OAAQ,yDAAyD,CAAC,CAAC,CAAC,CAAC,EAAGH,EAAG,WAAY,CAACE,EAAG,oBAAqB;AAAA;AAAA;AAAA,EAGhK,CAAC,CAAC,EAAGI,GAAM,WAAY,CAACN,EAAG,YAAa,CAACE,EAAG,oBAAqB;AAAA;AAAA,EAEjE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAGF,EAAG,aAAc,CAACE,EAAG,oBAAqB;AAAA;AAAA;AAAA,EAGnD,CAAC,CAAC,EAAGI,GAAM,aAAc,CAACJ,EAAG,YAAa,CAACI,GAAM,WAAY,CAACJ,EAAG,oBAAqB,CAACD,EAAE,UAAW,wCAAwC,CAAC,CAAC,EAAGD,EAAG,aAAc,CAACE,EAAG,oBAAqB,CAACD,EAAE,WAAY,0CAA0C,CAAC,CAAC,CAAC,CAAC,EAAGD,EAAG,UAAW,CAACE,EAAG,oBAAqB;AAAA;AAAA,EAElS,CAAC,CAAC,EAAGF,EAAG,WAAY,CAACE,EAAG,oBAAqB,yCAAyC,CAAC,CAAC,CAAC,CAAC,EAAGF,EAAG,WAAY,CAACE,EAAG,oBAAqB,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAGF,EAAG,aAAc,CAACE,EAAG,YAAa,CAACI,GAAM,WAAY,CAACL,EAAE,UAAW,wCAAwC,EAAGD,EAAG,UAAW;AAAA;AAAA,EAEnT,EAAGA,EAAG,aAAc,CAACM,GAAM,WAAY,CAACL,EAAE,WAAY,0CAA0C,CAAC,CAAC,CAAC,CAAC,EAAGD,EAAG,WAAY,yCAAyC,CAAC,CAAC,EAAGA,EAAG,WAAY,yCAAyC,EAAGA,EAAG,WAAY;AAAA;AAAA,EAE9O,CAAC,CAAC,CAAC,CAAC,EAAGE,EAAG,mBAAoB;AAAA;AAAA;AAAA,GAG5B,CAACF,EAAG,YAAa,qBAAsB,CAACC,EAAE,YAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASzD,EAAGD,EAAG,aAAc,CAACC,EAAE,YAAa;AAAA;AAAA,EAEpC,CAAC,CAAC,EAAGD,EAAG,UAAW,CAACC,EAAE,WAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQlC,CAAC,CAAC,CAAC,CAAC,EAAGK,GAAM,YAAa,YAAY,CAAC,CAAC,EAAGJ,EAAG,qBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASlE,CAACC,EAAG,OAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQZ,CAACD,EAAG,OAAQ,CAACsV,EAAwB,CAAC,EAAGtV,EAAG,eAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAO5D,CAACsV,EAAwB,CAAC,EAAGtV,EAAG,YAAa,CAACsV,EAAwB,CAAC,CAAC,CAAC,EAAGxV,EAAG,OAAQ,qBAAqB,EAAGA,EAAG,WAAY,2BAA2B,CAAC,CAAC,EAAGE,EAAG,qBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzL,EAAGA,EAAG,oBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAiBzB,CAACD,EAAE,eAAgB,mBAAmB,EAAGE,EAAG,SAAU;AAAA;AAAA;AAAA,EAGxD,EAAGA,EAAG,OAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAKd,EAAGA,EAAG,SAAU;AAAA;AAAA,EAEhB,CAAC,CAAC,EAAGA,EAAG,QAAS,eAAe,CAAC,CAAC,ECrIpC,IAAIuV,GAAsC,SAAUC,EAASC,EAAYC,EAAGC,EAAW,CACrF,SAASC,EAAM3I,EAAO,CACpB,OAAOA,aAAiByI,EAAIzI,EAAQ,IAAIyI,EAAE,SAAUG,EAAS,CAC3DA,EAAQ5I,CAAK,EACd,EAEH,OAAO,IAAKyI,IAAMA,EAAI,UAAU,SAAUG,EAASC,EAAQ,CACzD,SAASC,EAAU9I,EAAO,CACxB,GAAI,CACF+I,EAAKL,EAAU,KAAK1I,CAAK,CAAC,QACnB7G,EAAG,CACV0P,EAAO1P,CAAC,EACV,CAEF,SAAS6P,EAAShJ,EAAO,CACvB,GAAI,CACF+I,EAAKL,EAAU,MAAS1I,CAAK,CAAC,QACvB7G,EAAG,CACV0P,EAAO1P,CAAC,EACV,CAEF,SAAS4P,EAAKE,EAAQ,CACpBA,EAAO,KAAOL,EAAQK,EAAO,KAAK,EAAIN,EAAMM,EAAO,KAAK,EAAE,KAAKH,EAAWE,CAAQ,EAEpFD,GAAML,EAAYA,EAAU,MAAMH,EAAuB,EAAE,GAAG,MAAM,EACrE,CACH,EAmBO,SAASW,GAAsBpG,EAAUL,EAAeH,EAAe6G,EAAa,CAIzF,MAAO,CACL,YAAa,CACX,MAAO,IAET,OAAO3K,EAAM,CACX,OAAOA,EAAKsE,CAAQ,GAEtB,YAVyBqG,IAAgB3K,GAClCA,EAAKiE,CAAa,GAUzB,YAAYjE,EAAM,CAChB,MAAO,CAAC,EAAEA,EAAK8D,CAAa,GAAK9D,EAAK,kBACxC,CAEJ,CACO,MAAM4K,GAAkB,CAC7B,uBAAwB,QACxB,OAAQ,SACR,iBAAkB,QAClB,aAAc,MACd,SAAU,CACR,KAAM,OACN,QAAS,OAEX,WAAY,CACV,KAAM,OACN,QAAS,SAEX,cAAe,CACb,KAAM,OACN,QAAS,YAEX,cAAe,CACb,KAAM,OACN,QAAS,YAEX,oBAAqB,CACnB,KAAM,MACN,QAAS,IAAM,EAAC,EAElB,OAAQ,CACN,KAAM,OACN,QAAS,IAEX,kBAAmB,MACnB,mBAAoB,SACpB,0BAA2B,CAAC,SAAU,KAAK,EAC3C,6BAA8B,CAAC,SAAU,KAAK,EAC9C,qBAAsB,CAAC,SAAU,KAAK,EACtC,wBAAyB,CAAC,SAAU,KAAK,EACzC,iCAAkC,QACpC,EACaC,GAAY,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,GAAIzU,GAAS,KAAK,EAAG,CACpG,UAAW,QACX,oBAAqB,CACnB,KAAM,QACN,QAAS,IAEX,KAAM,CACJ,KAAM,MACN,QAAS,IAAM,EAAC,EAElB,kBAAmB,CACjB,KAAM,QACN,QAAS,IAEX,cAAe,QACf,aAAc,CACZ,KAAM,CAAC,QAAS,QAAQ,EACxB,QAAS,IAEX,WAAY,CACV,KAAM,QACN,QAAS,IAEX,UAAW,QACX,UAAW,QACX,UAAW,QACX,UAAW,QACX,SAAU,QACV,SAAU,QACV,YAAa,MACb,mBAAoB,CAClB,KAAM,MACN,QAAS,IAAM,EAAC,EAElB,aAAc,MACd,oBAAqB,CACnB,KAAM,MACN,QAAS,IAAM,EAAC,EAElB,SAAU,QACV,QAAS,CACP,KAAM,OACN,QAAS,IAEX,OAAQ,SACR,QAAS,QACT,WAAY,CACV,KAAM,QACN,QAAS,IAEX,eAAgB,OAChB,UAAW,CACT,KAAM,SACN,QAAS0J,EAAA,EAEX,SAAU,CACR,KAAM,QACN,QAAS,IAEX,kBAAmB,CACjB,KAAM,OACN,QAAS,QAEX,cAAe,QACf,WAAY,MACZ,YAAa,SACb,aAAc,SACd,aAAc,SACd,UAAW,SACX,SAAU,CACR,KAAM,QACN,QAAS,IAEX,YAAa,SACb,YAAa,CAAC,SAAU,KAAK,EAC7B,YAAa,CAAC,SAAU,KAAK,EAC7B,UAAW,CAAC,SAAU,KAAK,EAC3B,YAAa,CAAC,SAAU,KAAK,EAC7B,WAAY,CAAC,SAAU,KAAK,EAC5B,OAAQ,CAAC,SAAU,KAAK,EACxB,oBAAqB,CAAC,SAAU,KAAK,EACrC,uBAAwB,CAAC,SAAU,KAAK,EACxC,qBAAsB,CAAC,SAAU,KAAK,EACtC,wBAAyB,CAAC,SAAU,KAAK,CAC3C,CAAC,EAAG8K,EAAe,EAAG,CAEpB,mBAAoB,QACpB,mBAAoB,QACpB,0BAA2B,OAE3B,oBAAqB,SACrB,wBAAyB,OACzB,yBAA0B,QAC1B,0BAA2B,CACzB,KAAM,QACN,QAAS,IAEX,kBAAmB,CAEjB,KAAM,QACN,QAAS,IAEX,cAAe,CACb,KAAM,OACN,QAAS,OAKX,SAAU,OACZ,CAAC,EACDE,GAAejX,EAAgB,CAC7B,KAAM,OACN,MAAOgX,GACP,MAAO,OACP,MAAMhW,EAAO,CAQX,KAAM,CACJ,mBAAAC,EACA,oBAAA2B,EACA,aAAA1B,CAAA,EACEC,GAAUH,CAAK,EACbsD,EAAgB9C,GAAO,OAAQN,EAAcD,CAAkB,EAC/DkC,EAAWZ,GAAS,OAAQ,QAASlB,GAAOgI,GAAWrI,EAAOC,CAAkB,EAChFiW,EAAYpU,GAAI,IAAI,EACpB8G,EAAmB9G,GAAI,IAAI,EAC3BqU,EAAqBrU,GAAI,IAAI,EACnC,SAASsU,GAAqB,CAC5B,IAAIhS,EACJ,OAAQA,EAAK+R,EAAmB,SAAW,MAAQ/R,IAAO,OAAS,OAASA,EAAG,UAEjF,SAASiS,GAAmB,CAC1B,IAAIjS,EACJ,OAAQA,EAAK+R,EAAmB,SAAW,MAAQ/R,IAAO,OAAS,OAASA,EAAG,WAEjF,MAAMkS,EAAkBtU,EAAS,IAAM,CACrC,KAAM,CACJ,OAAA0N,CAAA,EACE1P,EACJ,GAAI0P,EAAQ,OAAOA,EACnB,KAAM,CACJ,WAAA9B,CAAA,EACE5N,EACJ,MAAO,CAACwP,EAASrE,IAAS,CACxB,GAAI,CAACqE,EAAQ,OAAQ,MAAO,GAC5B,MAAMlB,EAAQnD,EAAKyC,CAAU,EAC7B,OAAI,OAAOU,GAAU,SACZA,EAAM,cAAc,SAASkB,EAAQ,aAAa,EAEpD,GACT,CACD,EACK+G,EAAsBvU,EAAS,IAAM,CACzC,KAAM,CACJ,QAAAwN,CAAA,EACExP,EACJ,OAAKwP,EAOD,CAACA,EAAQ,QAAU,CAAC8G,EAAgB,MAC/B,CACL,aAActW,EAAM,KACpB,gBAAiB,KACjB,aAAc,QAGXiQ,GAAWjQ,EAAM,KAAMsW,EAAgB,MAAO9G,EAASxP,EAAM,SAAUA,EAAM,aAAa,EAbxF,CACL,aAAcA,EAAM,KACpB,gBAAiB,KACjB,aAAc,OAU+E,CAClG,EAEKwW,EAAqBxU,EAAS,IAAMyU,GAAezW,EAAM,oBAAsBA,EAAM,KAAOuW,EAAoB,MAAM,aAAcV,GAAsB7V,EAAM,SAAUA,EAAM,cAAeA,EAAM,cAAeA,EAAM,WAAW,CAAC,CAAC,EACvO8L,EAAsBtG,GAAOkF,GAAwB,IAAI,EACzDgM,EAAkB1W,EAAM,mBAAqB8L,EAAoB,aAAe9J,EAAS,IAAMhC,EAAM,oBAAsBwW,EAAmB,MAAQC,GAAezW,EAAM,KAAM6V,GAAsB7V,EAAM,SAAUA,EAAM,cAAeA,EAAM,cAAeA,EAAM,WAAW,CAAC,CAAC,EACpR,CACJ,WAAA2W,CAAA,EACE3W,EACE4W,EAA6B9U,GAAI,EAAE,EACrC6U,GAAe,MAAyCA,EAAW,SAAS,oBAAoB,EAClGE,GAAY,IAAM,CAChBD,EAA2B,MAAQ5W,EAAM,mBAC1C,EAED4W,EAA2B,MAAQ5W,EAAM,mBAE3C,MAAM8W,EAA2BvS,EAAMvE,EAAO,aAAa,EACrDyL,EAAuBvJ,GAAe4U,EAA0BF,CAA0B,EAC1FG,EAAmB/U,EAAS,IAClB0U,EAAgB,MAAM,eAAejL,EAAqB,MAAO,CAC7E,QAASzL,EAAM,QACf,eAAgBA,EAAM,uBACvB,CAEF,EACKgX,EAAyBjI,GAAuB/O,CAAK,EACrDiX,EAA0BjV,EAAS,IAChC+U,EAAiB,MAAM,WAC/B,EACKG,EAAgClV,EAAS,IAAM,CACnD,KAAM,CACJ,kBAAAmV,CAAA,EACEnX,EACJ,OAAImX,IAAsB,OAAkBA,EACrCJ,EAAiB,MAAM,kBAC/B,EACKK,EAA8BtV,GAAI,EAAE,EACtC6U,GAAe,MAAyCA,EAAW,SAAS,qBAAqB,EACnGE,GAAY,IAAM,CAChBO,EAA4B,MAAQpX,EAAM,oBAC3C,EAEDoX,EAA4B,MAAQpX,EAAM,oBAE5C,MAAMqX,EAA4B9S,EAAMvE,EAAO,cAAc,EACvDwL,EAAwBtJ,GAAemV,EAA2BD,CAA2B,EAC7FE,GAA8BxV,GAAI,EAAE,EACpCyV,GAA+B5H,GAAQ,CAC3C2H,GAA4B,MAAQtX,EAAM,iBAAmB0W,EAAgB,MAAM,iBAAmB/G,IAAS,OAAY3P,EAAM,oBAAsB2P,CAAA,EAErJgH,GAAe,MAAyCA,EAAW,SAAS,qBAAqB,EAEnGE,GAAY,IAAM,CAChBU,GAA6B,MAAS,EACvC,EAGDV,GAAY,IAAM,CAChBU,GAA6BvX,EAAM,mBAAmB,EACvD,EAEH,MAAMwX,GAA4BjT,EAAMvE,EAAO,cAAc,EACvDuL,GAAwBrJ,GAAesV,GAA2BF,EAA2B,EAC7FhM,GAAYtJ,EAAS,IAAMwU,EAAmB,MAAM,kBAAkBjL,GAAsB,KAAK,CAAC,EAClG,CACJ,kBAAAQ,GACA,cAAAC,EAAA,EACEX,GAAY,CACd,MAAArL,EACA,qBAAAyL,EACA,sBAAAD,EACA,UAAAF,GACA,sBAAAC,GACA,YAAAG,GACA,aAAAC,GACA,oBAAAC,EAAA,CACD,EACD,IAAI6L,GAAgB,KAChBC,EAAsB,KAC1B,MAAMC,GAAiC7V,GAAI,IAAI,GAAK,EAC9C8V,GAA+B5V,EAAS,IACrChC,EAAM,yBAA2BuW,EAAoB,MAAM,eACnE,EACKsB,GAA2B3V,GAAe0V,GAA8BD,EAA8B,EACtGG,EAAiBhW,GAAI,IAAI,GAAK,EAC9BiW,EAA4B/V,EAAS,IAClCuJ,GAAsB,MAAM,OAAOzM,GAAO,CAACgZ,EAAe,MAAM,IAAIhZ,CAAG,CAAC,CAChF,EACD,IAAIkZ,GAAa,EACjB,MAAM9G,GAAkBpP,GAAI,IAAI,EAC1BmW,GAAkBnW,GAAI,IAAI,EAC1BmP,GAAuBnP,GAAI,IAAI,EAC/BqP,GAAsBrP,GAAI,IAAI,EAC9BsP,GAAyBtP,GAAI,CAAC,EAC9BkP,GAAwBhP,EAAS,IAAM,CAC3C,KAAM,CACJ,MAAOkW,CAAA,EACLD,GACJ,OAAKC,EAKEA,EAAa,OALM,IAKN,CACrB,EAED,IAAIC,GAAc,GAClBC,GAAM7T,EAAMvE,EAAO,MAAM,EAAG,IAAM,CAChCmY,GAAc,GACTE,GAAS,IAAM,CAClBF,GAAc,GACf,EACDL,EAAe,MAAM,QACrB/L,GAAkB,MAAQ,KAC1BuM,GAAA,CAAc,EACb,CACD,KAAM,GACP,EACD,IAAIC,GAA0B,GAC9B,MAAMC,GAAmC,IAAM,CAC7CD,GAA0B,GACrBF,GAAS,IAAM,CAClBE,GAA0B,GAC3B,GAEH,IAAIE,GACJL,GAAM7T,EAAMvE,EAAO,SAAS,EAAG,CAAC2M,EAAO+L,IAAa,CAClD,GAAI1Y,EAAM,oBAER,GADAyY,GAAuB,OACnB9L,EAAO,CACT,KAAM,CACJ,aAAcgM,EACd,gBAAA/I,CAAA,EACEL,GAAevP,EAAM,KAAMA,EAAM,QAASA,EAAM,SAAUA,EAAM,cAAesW,EAAgB,KAAK,EACxGqB,GAA+B,MAAQ/H,EACvC4I,GAAA,EACAI,GAAqBD,EAAyBE,GAAiBF,CAAuB,EAAG,CACvF,KAAM,KACN,OAAQ,SACT,OAEDhB,GAA+B,UAAY,YAGzC,CAAChL,EAAM,OACL8L,KAAyB,SAC3BD,GAAA,EACAI,GAAqBH,GAAsBI,GAAiBJ,EAAoB,EAAG,CACjF,KAAM,KACN,OAAQ,SACT,OAEE,CACAC,EAAS,SACZD,GAAuBlN,GAAsB,OAE/C,KAAM,CACJ,aAAA8E,CAAA,EACEkG,EAAoB,MACpBlG,IAAiB,SACnBmI,GAAA,EACAI,GAAqBvI,EAAcwI,GAAiBxI,CAAY,EAAG,CACjE,KAAM,KACN,OAAQ,SACT,EACH,CAEJ,CACD,EACD,SAASyI,GAAe3N,EAAM,CAC5B,OAAO8J,GAAU,KAAM,OAAQ,OAAQ,WAAa,CAClD,KAAM,CACJ,OAAA7C,CAAA,EACEpS,EACJ,GAAI,CAACoS,EAAQ,CAIX,MAAM,QAAQ,UACd,OAEF,KAAM,CACJ,MAAO2G,CAAA,EACLjB,EACJ,GAAI,CAACiB,EAAY,IAAI5N,EAAK,GAAG,EAAG,CAC9B4N,EAAY,IAAI5N,EAAK,GAAG,EACxB,GAAI,EACiB,MAAMiH,EAAOjH,EAAK,OAAO,KACzB,IACjB6N,GAAA,CACF,OACOC,EAAW,CAClB,QAAQ,MAAMA,CAAS,EACvBD,GAAA,CAAqB,CAEvBD,EAAY,OAAO5N,EAAK,GAAG,EAC7B,CACD,EAEH0L,GAAY,IAAM,CAChB,IAAIzS,EACJ,KAAM,CACJ,MAAO8U,CAAA,EACL1C,EACJ,GAAI,CAAC0C,EAAiB,OACtB,KAAM,CACJ,QAAAC,CAAA,EACED,GACH9U,EAAKmH,GAAsB,SAAW,MAAQnH,IAAO,QAAkBA,EAAG,QAAQtF,GAAO,CACxF,MAAMqM,EAAOgO,EAAQra,CAAG,EACpBqM,GAAQ,CAACA,EAAK,eACX2N,GAAe3N,CAAI,CAC1B,CACD,EACF,EAED,MAAMiO,GAAStX,GAAI,EAAK,EAElBuX,GAAavX,GAAI,EAAE,EAMzBsW,GAAML,EAA2B,CAACpL,EAAO2M,IAAc,CACrD,GAAI,CAACtZ,EAAM,UAAYuY,GAAyB,CACzCF,GAASkB,EAAa,EAC3B,OAEF,GAAIpB,GACF,OAEF,MAAMqB,EAAaC,GAAKtX,EAAS,MAAM,KAAK,UAAU,EAChDuX,EAAW,IAAI,IAAIJ,CAAS,EAClC,IAAIK,EAAW,KACXC,GAAa,KACjB,UAAWC,KAAelN,EACxB,GAAI,CAAC+M,EAAS,IAAIG,CAAW,EAAG,CAC9B,GAAIF,IAAa,KAAM,OACvBA,EAAWE,CAAA,CAGf,MAAMC,GAAc,IAAI,IAAInN,CAAK,EACjC,UAAWkN,KAAeP,EACxB,GAAI,CAACQ,GAAY,IAAID,CAAW,EAAG,CACjC,GAAID,KAAe,KAAM,OACzBA,GAAaC,CAAA,CAGjB,GAAIF,IAAa,MAAQC,KAAe,KAGtC,OAEF,KAAM,CACJ,cAAAG,EAAA,EACE/Z,EACEga,IAAkBD,GAAgB5D,EAAmB,MAAM,UAAYD,EAAU,OAAO,aACxF+D,GAAoB,KAAK,KAAKD,GAAiBR,CAAU,EAAI,EAEnE,IAAIU,GAaJ,GAZIP,IAAa,OACfO,GAAmBZ,GAEjBM,KAAe,OACbM,KAAqB,OACvBA,GAAmBvN,EAEnBuN,GAAmBA,GAAiB,OAAOpb,GAAOA,IAAQ8a,EAAU,GAGxER,GAAO,MAAQ,GACfC,GAAW,MAAQ7C,EAAmB,MAAM,kBAAkB0D,EAAgB,EAC1EP,IAAa,KAAM,CACrB,MAAMQ,EAAoBd,GAAW,MAAM,UAAUlO,IAAQA,GAAK,MAAQwO,CAAQ,EAClF,GAAI,CAACQ,EAAmB,CACtB,MAAMnT,GAAWqS,GAAW,MAAMc,CAAiB,EAAE,SAErD,GAAInT,GAAU,CACZ,MAAMoT,GAAmBC,GAAQrT,GAAU2F,CAAK,EAChD0M,GAAW,MAAM,OAAOc,EAAoB,EAAG,EAAG,CAChD,SAAU,GACV,KAAM,SACN,OAAQJ,GAAgBK,GAAiB,OAASZ,EAAa,OAC/D,MAAOO,GAAgBK,GAAiB,MAAM,EAAGH,EAAiB,EAAIG,EAAA,CACvE,EACH,CACF,CAEF,GAAIR,KAAe,KAAM,CACvB,MAAMU,EAAqBjB,GAAW,MAAM,UAAUlO,IAAQA,GAAK,MAAQyO,EAAU,EACrF,GAAI,CAACU,EAAoB,CACvB,MAAMC,GAAwBlB,GAAW,MAAMiB,CAAkB,EAAE,SAGnE,GAAI,CAACC,GAAuB,OAE5BnB,GAAO,MAAQ,GACf,MAAMoB,GAAoBH,GAAQE,GAAuB5N,CAAK,EAC9D0M,GAAW,MAAM,OAAOiB,EAAqB,EAAG,EAAG,CACjD,SAAU,GACV,KAAM,WACN,OAAQP,GAAgBS,GAAkB,OAAShB,EAAa,OAChE,MAAOO,GAAgBS,GAAkB,MAAM,EAAGP,EAAiB,EAAIO,EAAA,CACxE,EACH,CACF,CACD,EACD,MAAMC,GAAezY,EAAS,IACrB0Y,GAAkBpP,GAAU,KAAK,CACzC,EACKqP,GAAkB3Y,EAAS,IAC3BoX,GAAO,MAAcC,GAAW,MAAkB/N,GAAU,KACjE,EACD,SAASiO,IAAgB,CACvB,KAAM,CACJ,MAAOqB,CAAA,EACLhS,EACAgS,KAA6B,MAAK,CAExC,SAASC,IAAmB,CAC1BzB,GAAO,MAAQ,GACXpZ,EAAM,eAIHqY,GAASkB,EAAa,CAC7B,CAEF,SAASV,GAAiBlJ,EAAM,CAC9B,KAAM,CACJ,QAAAwJ,CAAA,EACEzC,EAAgB,MACpB,OAAO/G,EAAK,IAAI7Q,GAAO,CACrB,IAAIsF,EACJ,QAASA,EAAK+U,EAAQra,CAAG,KAAO,MAAQsF,IAAO,OAAS,OAASA,EAAG,UAAY,KACjF,EAEH,SAASwU,GAAqBjM,EAAOmO,EAAQC,EAAM,CACjD,KAAM,CACJ,wBAAyBC,EACzB,qBAAAC,CAAA,EACEjb,EACJsX,GAA4B,MAAQ3K,EAChCqO,GACFvY,GAAKuY,EAAuBrO,EAAOmO,EAAQC,CAAI,EAE7CE,GACFxY,GAAKwY,EAAsBtO,EAAOmO,EAAQC,CAAI,CAChD,CAEF,SAASG,GAAoBvO,EAAOmO,EAAQC,EAAM,CAChD,KAAM,CACJ,uBAAwBI,EACxB,oBAAAC,CAAA,EACEpb,EACJ4W,EAA2B,MAAQjK,EAC/ByO,GACF3Y,GAAK2Y,EAAqBzO,EAAOmO,EAAQC,CAAI,EAE3CI,GACF1Y,GAAK0Y,EAAsBxO,EAAOmO,EAAQC,CAAI,CAChD,CAEF,SAASM,GAA0B1O,EAAOmO,EAAQ,CAChD,KAAM,CACJ,6BAA8BQ,EAC9B,0BAAAC,CAAA,EACEvb,EACAsb,GACF7Y,GAAK6Y,EAA4B3O,EAAOmO,CAAM,EAE5CS,GACF9Y,GAAK8Y,EAA2B5O,EAAOmO,CAAM,CAC/C,CAEF,SAASU,GAAqB7O,EAAOmO,EAAQC,EAAM,CACjD,KAAM,CACJ,wBAAyBU,EACzB,qBAAAC,CAAA,EACE1b,EACJoX,EAA4B,MAAQzK,EAChC+O,GACFjZ,GAAKiZ,EAAsB/O,EAAOmO,EAAQC,CAAI,EAE5CU,GACFhZ,GAAKgZ,EAAuB9O,EAAOmO,EAAQC,CAAI,CACjD,CAGF,SAASY,GAAYhZ,EAAM,CACzB,KAAM,CACJ,YAAAiZ,CAAA,EACE5b,EACA4b,GAAanZ,GAAKmZ,EAAajZ,CAAI,EAEzC,SAASkZ,GAAYlZ,EAAM,CACzB,KAAM,CACJ,YAAAmZ,CAAA,EACE9b,EACA8b,GAAarZ,GAAKqZ,EAAanZ,CAAI,EAEzC,SAASoZ,GAAUpZ,EAAM,CACvB,KAAM,CACJ,UAAAqZ,CAAA,EACEhc,EACAgc,GAAWvZ,GAAKuZ,EAAWrZ,CAAI,EAErC,SAASsZ,GAAYtZ,EAAM,CACzB,KAAM,CACJ,YAAAuL,CAAA,EACElO,EACAkO,GAAazL,GAAKyL,EAAavL,CAAI,EAEzC,SAASuZ,GAAWvZ,EAAM,CACxB,KAAM,CACJ,WAAAwZ,CAAA,EACEnc,EACAmc,GAAY1Z,GAAK0Z,EAAYxZ,CAAI,EAEvC,SAASyZ,GAAOzZ,EAAM,CACpB,KAAM,CACJ,OAAA0Z,CAAA,EACErc,EACAqc,GAAQ5Z,GAAK4Z,EAAQ1Z,CAAI,EAE/B,SAAS2V,IAAgB,CACvBgE,GAAA,EACAC,GAAA,CAAe,CAEjB,SAASD,IAAiB,CACxBpL,GAAgB,MAAQ,KAE1B,SAASqL,IAAiB,CACxBnL,GAAuB,MAAQ,EAC/B6G,GAAgB,MAAQ,KACxBhH,GAAqB,MAAQ,KAC7BE,GAAoB,MAAQ,KAC5B6H,GAAA,CAAqB,CAEvB,SAASA,IAAuB,CAC1BvB,KACF,OAAO,aAAaA,EAAa,EACjCA,GAAgB,MAElBC,EAAsB,KAExB,SAAShM,GAAYP,EAAM4B,EAAS,CAElC,GAAI/M,EAAM,UAAYgP,GAAe7D,EAAMnL,EAAM,aAAa,EAC5D,OAEF,GAAIA,EAAM,0BAA4B,CAACA,EAAM,SAAU,CACrD2L,GAAaR,CAAI,EACjB,OAEF,MAAMqR,EAAgBzP,EAAU,QAAU,UACpC,CACJ,YAAA0P,EACA,kBAAAtF,CAAA,EACET,EAAgB,MAAM8F,CAAa,EAAErR,EAAK,IAAK8L,EAAwB,MAAO,CAChF,QAASjX,EAAM,QACf,cAAegX,EAAuB,MACtC,eAAgBhX,EAAM,uBACvB,EACDkb,GAAoBuB,EAAa5D,GAAiB4D,CAAW,EAAG,CAC9D,KAAMtR,EAAK,QACX,OAAQqR,CAAA,CACT,EACDnB,GAA0BlE,EAAmB0B,GAAiB1B,CAAiB,CAAC,EAElF,SAASuF,GAAavR,EAAM,CAC1B,GAAInL,EAAM,SAAU,OACpB,KAAM,CACJ,IAAAlB,CAAA,EACEqM,EACE,CACJ,MAAOwR,CAAA,EACLpR,GACEnI,EAAQuZ,EAAmB,UAAUC,GAAgBA,IAAiB9d,CAAG,EAC/E,GAAI,CAACsE,EAAO,CACV,MAAMuV,EAA0B,MAAM,KAAKgE,CAAkB,EAC7DhE,EAAwB,OAAOvV,EAAO,CAAC,EACvCwV,GAAqBD,EAAyBE,GAAiBF,CAAuB,EAAG,CACvF,KAAMxN,EAAK,QACX,OAAQ,WACT,MACI,CACL,MAAM0R,EAAmBrG,EAAmB,MAAM,QAAQ1X,CAAG,EAC7D,GAAI,CAAC+d,GAAoBA,EAAiB,OACxC,OAEF,IAAIC,GACJ,GAAI9c,EAAM,UAAW,CACnB,MAAM+c,GAAgB,IAAI,IAAI5R,EAAK,SAAS,IAAI,CAAC,CAC/C,IAAArM,EAAA,IACIA,EAAG,CAAC,EACVge,GAAWH,EAAmB,OAAO9C,IAC5B,CAACkD,GAAc,IAAIlD,EAAW,CACtC,EACDiD,GAAS,KAAKhe,CAAG,OAEjBge,GAAWH,EAAmB,OAAO7d,CAAG,EAE1C8Z,GAAqBkE,GAAUjE,GAAiBiE,EAAQ,EAAG,CACzD,KAAM3R,EAAK,QACX,OAAQ,SACT,EACH,CAEF,SAASS,GAAoBT,EAAM,CAC7BnL,EAAM,UAAYoZ,GAAO,OAC7BsD,GAAavR,CAAI,EAEnB,SAASQ,GAAaR,EAAM,CAC1B,GAAI,EAAAnL,EAAM,UAAY,CAACA,EAAM,YAI7B,IADA+L,GAAkB,MAAQZ,EAAK,IAC3BnL,EAAM,yBAA0B,CAClC,KAAM,CACJ,MAAO,CACL,YAAAyc,EACA,kBAAAtF,CAAA,CACF,EACEJ,EACA/W,EAAM,SACR0L,GAAYP,EAAM,EAAEsR,EAAY,SAAStR,EAAK,GAAG,GAAKgM,EAAkB,SAAShM,EAAK,GAAG,EAAE,EAE3F+P,GAAoB,CAAC/P,EAAK,GAAG,EAAG0N,GAAiB,CAAC1N,EAAK,GAAG,CAAC,EAAG,CAC5D,KAAMA,EAAK,QACX,OAAQ,QACT,CACH,CAEF,GAAInL,EAAM,SAAU,CAClB,MAAMgd,EAAe,MAAM,KAAKxR,EAAsB,KAAK,EACrDpI,EAAQ4Z,EAAa,UAAUle,GAAOA,IAAQqM,EAAK,GAAG,EACxD,CAAC/H,EACCpD,EAAM,YACRgd,EAAa,OAAO5Z,EAAO,CAAC,EAEpB,CAACA,GACX4Z,EAAa,KAAK7R,EAAK,GAAG,EAE5BqQ,GAAqBwB,EAAcnE,GAAiBmE,CAAY,EAAG,CACjE,KAAM7R,EAAK,QACX,OAAQ,CAAC/H,EAAQ,WAAa,SAC/B,OAEoBoI,EAAsB,MAC1B,SAASL,EAAK,GAAG,EAC5BnL,EAAM,YACRwb,GAAqB,GAAI,GAAI,CAC3B,KAAMrQ,EAAK,QACX,OAAQ,WACT,EAGHqQ,GAAqB,CAACrQ,EAAK,GAAG,EAAG0N,GAAiB,CAAC1N,EAAK,GAAG,CAAC,EAAG,CAC7D,KAAMA,EAAK,QACX,OAAQ,SACT,EAEL,CAEF,SAAS8R,GAAoB9R,EAAM,CAMjC,GALIsM,KACF,OAAO,aAAaA,EAAa,EACjCA,GAAgB,MAGdtM,EAAK,OAAQ,OACjBuM,EAAsBvM,EAAK,IAC3B,MAAM+R,EAAS,IAAM,CACnB,GAAIxF,IAAwBvM,EAAK,IAAK,OACtC,KAAM,CACJ,MAAO6I,CAAA,EACL/C,GACJ,GAAI+C,GAAqBA,EAAkB,MAAQ7I,EAAK,KAAO,CAACI,GAAsB,MAAM,SAASJ,EAAK,GAAG,EAAG,CAC9G,MAAM2R,EAAWvR,GAAsB,MAAM,OAAOJ,EAAK,GAAG,EAC5DyN,GAAqBkE,EAAUjE,GAAiBiE,CAAQ,EAAG,CACzD,KAAM3R,EAAK,QACX,OAAQ,SACT,EAEHsM,GAAgB,KAChBC,EAAsB,MAEnBvM,EAAK,cAORsM,GAAgB,OAAO,WAAW,IAAM,CACtCyF,EAAA,CAAO,EACN,GAAI,EARPzF,GAAgB,OAAO,WAAW,IAAM,CACjCqB,GAAe3N,CAAI,EAAE,KAAK,IAAM,CACnC+R,EAAA,CAAO,CACR,GACA,GAAI,CAKT,CAGF,SAAS5J,GAAgB,CACvB,MAAAtQ,EACA,KAAAmI,CAAA,EACC,CAEG,CAACnL,EAAM,WAAaA,EAAM,UAAYgP,GAAe7D,EAAMnL,EAAM,aAAa,IAGlFuT,GAAe,CACb,MAAAvQ,EACA,KAAAmI,CAAA,EACC,EAAK,EACRwQ,GAAY,CACV,MAAA3Y,EACA,KAAMmI,EAAK,QACZ,GAEH,SAASsI,GAAgB,CACvB,MAAAzQ,EACA,KAAAmI,CAAA,EACC,CACG,CAACnL,EAAM,WAAaA,EAAM,UAAYgP,GAAe7D,EAAMnL,EAAM,aAAa,GAGlF6b,GAAY,CACV,MAAA7Y,EACA,KAAMmI,EAAK,QACZ,EAEH,SAASgS,GAAoBrX,EAAG,CAC1BA,EAAE,SAAWA,EAAE,eACnByW,GAAA,CAAe,CAGjB,SAAS/I,GAAc,CACrB,MAAAxQ,EACA,KAAAmI,CAAA,EACC,CACDmN,GAAA,EACI,GAACtY,EAAM,WAAaA,EAAM,UAAYgP,GAAe7D,EAAMnL,EAAM,aAAa,IAGlF+b,GAAU,CACR,MAAA/Y,EACA,KAAMmI,EAAK,QACZ,EAEH,SAASkI,GAAgB,CACvB,MAAArQ,EACA,KAAAmI,CAAA,EACC,CAEG,CAACnL,EAAM,WAAaA,EAAM,UAAYgP,GAAe7D,EAAMnL,EAAM,aAAa,IAOlFgY,GAAahV,EAAM,QACnBkO,GAAgB,MAAQ/F,EACxB8Q,GAAY,CACV,MAAAjZ,EACA,KAAMmI,EAAK,QACZ,GAEH,SAASoI,GAAe,CACtB,MAAAvQ,EACA,KAAAmI,CAAA,EACCiS,EAAO,GAAM,CACd,IAAIhZ,EACJ,GAAI,CAACpE,EAAM,WAAaA,EAAM,UAAYgP,GAAe7D,EAAMnL,EAAM,aAAa,EAChF,OAEF,KAAM,CACJ,MAAO8T,CAAA,EACL5C,GACJ,GAAI,CAAC4C,EAAc,OACnB,KAAM,CACJ,UAAAuJ,GACA,OAAAvS,EAAA,EACE9K,EACAod,GAAMlB,GAAW,CACnB,MAAAlZ,EACA,KAAMmI,EAAK,QACZ,EAED,MAAMJ,GAAK/H,EAAM,cACX,CACJ,OAAQsa,GACR,IAAKC,EAAA,EACHxS,GAAG,wBACDyS,GAAexa,EAAM,QAAUua,GACrC,IAAIE,EACoBJ,GAAU,CAChC,KAAMlS,EAAK,QACX,aAAc,SACd,MAAO,OACR,EAEKqS,IAAgB,EAClBC,EAAgB,SACPD,IAAgBF,GAAiB,EAC1CG,EAAgB,QAEhBA,EAAgB,SAGdD,IAAgBF,GAAiB,EACnCG,EAAgB,SAEhBA,EAAgB,QAGpB,KAAM,CACJ,MAAOC,EAAA,EACLjD,GAQJ,IAAIkD,EACAC,GACJ,MAAMC,GAAkBH,GAAUvS,EAAK,GAAG,EAC1C,GAAI0S,KAAoB,KAAM,CAC5BtB,GAAA,EACA,OAEF,IAAIuB,GAA6B,GAC7BL,IAAkB,UACpBE,EAAgBxS,EAChByS,GAAoB,UAEhBH,IAAkB,SAChBtS,EAAK,cACPwS,EAAgBxS,EAChByS,GAAoB,WAEpBD,EAAgBrS,GAAU,MAAMuS,GAAkB,CAAC,EACnDD,GAAoB,UAGtBD,EAAgBxS,EAChByS,GAAoB,SAKpB,CAACD,EAAc,QAAUpS,GAAsB,MAAM,SAASoS,EAAc,GAAG,IACjFG,GAA6B,GACzBF,KAAsB,UACxBD,EAAgBrS,GAAU,MAAMuS,GAAkB,CAAC,EAC9CF,EAMHC,GAAoB,UAHpBD,EAAgBxS,EAChByS,GAAoB,YAM1B,MAAM5J,GAAoB2J,EAU1B,GATA1M,GAAqB,MAAQ+C,GAMzB,CAAC8J,IAA8BhK,EAAa,aAAeA,EAAa,MAAQ6J,EAAc,MAChGC,GAAoB,SAElBA,KAAsB,QAAS,CACjC,IAAIG,GAAS/F,GAAahV,EAAM,QAC5B6H,GAAc,EAClB,KAAOkT,IAAUjT,GAAS,GACvB6S,EAAc,SAAW,MAAQA,EAAc,aAAe9S,GAAc,GAC7EkT,IAAUjT,GACVD,IAAe,EACf8S,EAAgBA,EAAc,OAEhCvM,GAAuB,MAAQvG,EAAA,MAE/BuG,GAAuB,MAAQ,EAKjC,IAAI0C,EAAa,SAAS6J,CAAa,GAAKC,KAAsB,YAAcxZ,EAAK0P,EAAa,UAAY,MAAQ1P,IAAO,OAAS,OAASA,EAAG,OAASuZ,EAAc,MACnK,EAAA7J,EAAa,MAAQE,GAAkB,KAAOF,EAAa,MAAQ6J,EAAc,KAK9E,CACLpB,GAAA,EACA,OAIJ,GAAI,CAACc,GAAU,CACb,KAAMM,EAAc,QACpB,aAAcC,GACd,MAAO,OACR,EAAG,CACFrB,GAAA,EACA,OAEF,GAAIzI,EAAa,MAAQ6J,EAAc,IAErC3E,GAAA,UAEItB,IAAwBiG,EAAc,IACxC,GAAIC,KAAsB,UACxB,GAAI5d,EAAM,mBAIR,GAHAid,GAAoBU,CAAa,EAG7B,CAACA,EAAc,eAAiBjG,IAAwBiG,EAAc,IAAK,CAC7ErF,GAAA,EACA,gBAKE,CAACqF,EAAc,cAAe,CAChCrF,GAAA,EACA,aAIJU,GAAA,OAGE4E,KAAsB,UACxB5E,GAAA,EAIN7H,GAAoB,MAAQyM,GAC5B3F,GAAgB,MAAQ0F,CAAA,CAE1B,SAASjK,GAAW,CAClB,MAAA1Q,EACA,KAAAmI,EACA,aAAAD,CAAA,EACC,CACD,GAAI,CAAClL,EAAM,WAAaA,EAAM,UAAYgP,GAAe7D,EAAMnL,EAAM,aAAa,EAChF,OAEF,KAAM,CACJ,MAAO8T,CAAA,EACL5C,GACE,CACJ,MAAOgH,CAAA,EACLD,GACE,CACJ,MAAOlE,EAAA,EACL5C,GACJ,GAAI,GAAC2C,GAAgB,CAACoE,GAAgB,CAACnE,KAIlC/T,EAAM,UAAU,CACnB,KAAMkY,EAAa,QACnB,aAAcnE,GACd,MAAO,OACR,GAMGD,EAAa,MAAQoE,EAAa,IAMtC,IAAInE,KAAqB,SAAU,CACjC,MAAMiK,GAAWlK,EAAa,QAAQ,CACpC,gBAAiB,GAClB,EACD,GAAIkK,IACEA,GAAS,MAAQ9F,EAAa,IAAK,CACrCqE,GAAA,EACA,OAEJ,CAEF,GAAIxI,KAAqB,QAAS,CAChC,MAAMkK,GAAWnK,EAAa,QAAQ,CACpC,gBAAiB,GAClB,EACD,GAAImK,IACEA,GAAS,MAAQ/F,EAAa,IAAK,CACrCqE,GAAA,EACA,OAEJ,CAEFH,GAAO,CACL,MAAApZ,EACA,KAAMkV,EAAa,QACnB,SAAUpE,EAAa,QACvB,aAAA5I,CAAA,CACD,EACDoN,GAAA,EAAc,CAEhB,SAAS4F,IAAe,CACtB3E,GAAA,CAAc,CAEhB,SAAS4E,IAAe,CACtB5E,GAAA,CAAc,CAEhB,SAAS6E,GAAetY,EAAG,CACzB,IAAI1B,EACJ,GAAIpE,EAAM,eAAiBA,EAAM,mBAAoB,CACnD,KAAM,CACJ,MAAO4a,CAAA,EACLhS,EACJ,GAAK,GAAAxE,EAAKwW,GAAkB,KAAmC,OAASA,EAAc,gBAAkB,MAAQxW,IAAO,SAAkBA,EAAG,SAAS0B,EAAE,aAAa,EAClK,OAEFiG,GAAkB,MAAQ,SACrB,CACL,KAAM,CACJ,MAAOsS,CAAA,EACLnI,EACJ,GAAImI,GAAW,MAAqCA,EAAO,SAASvY,EAAE,aAAa,EAAG,OACtFiG,GAAkB,MAAQ,KAC5B,CAEFqM,GAAMrM,GAAmBY,GAAS,CAChC,IAAIvI,EAAI4O,EACR,GAAIrG,IAAU,MACd,GAAI3M,EAAM,eACPoE,EAAK+R,EAAmB,SAAW,MAAQ/R,IAAO,QAAkBA,EAAG,SAAS,CAC/E,IAAKuI,CAAA,CACN,UACQ3M,EAAM,mBAAoB,CACnC,KAAM,CACJ,MAAO4a,CAAA,EACLhS,EACJ,GAAIgS,IAAkB,KAAM,OAC5B,MAAM0D,GAAYtL,EAAK4H,EAAc,cAAgB,MAAQ5H,IAAO,OAAS,OAASA,EAAG,cAAc,cAAcnU,GAAc8N,CAAK,CAAC,IAAI,EAC7I,GAAI,CAAC2R,EAAU,OACf1D,EAAc,SAAS,CACrB,GAAI0D,CAAA,CACL,GACH,CACD,EACDhe,GAAQ8K,GAAkB,CACxB,eAAA0M,EACA,mBAAoBD,GACpB,wBAAAZ,EACA,8BAAAC,EACA,sBAAA1L,EACA,sBAAAD,GACA,eAAgBpJ,EAChB,uBAAA6U,EACA,aAAczS,EAAMvE,EAAO,WAAW,EACtC,YAAauE,EAAMvE,EAAO,UAAU,EACpC,aAAcuE,EAAMvE,EAAO,WAAW,EACtC,cAAeuE,EAAMvE,EAAO,YAAY,EACxC,iBAAkBuE,EAAMvE,EAAO,eAAe,EAC9C,UAAWuE,EAAMvE,EAAO,QAAQ,EAChC,aAAcuE,EAAMvE,EAAO,WAAW,EACtC,aAAcuE,EAAMvE,EAAO,WAAW,EACtC,UAAWuE,EAAMvE,EAAO,QAAQ,EAChC,WAAYuE,EAAMvE,EAAO,SAAS,EAClC,gBAAiBuE,EAAMvE,EAAO,cAAc,EAC5C,qBAAsBA,EAAM,kBAC5B,qBAAAiR,GACA,sBAAAD,GACA,gBAAAE,GACA,oBAAAC,GACA,uBAAAC,GACA,UAAA9F,GACA,kBAAAS,GACA,YAAaxH,EAAMvE,EAAO,UAAU,EACpC,iBAAkBuE,EAAMvE,EAAO,eAAe,EAC9C,sBAAuBuE,EAAMvE,EAAO,oBAAoB,EACxD,6BAA8BuE,EAAMvE,EAAO,2BAA2B,EACtE,mBAAoBA,EAAM,mBAC1B,eAAgBuE,EAAMvE,EAAO,aAAa,EAC1C,gBAAiBuE,EAAMvE,EAAO,cAAc,EAC5C,gBAAiBuE,EAAMvE,EAAO,cAAc,EAC5C,sBAAuBuE,EAAMvE,EAAO,oBAAoB,EACxD,cAAeuE,EAAMvE,EAAO,YAAY,EACxC,YAAauE,EAAMvE,EAAO,UAAU,EACpC,oCAAqCuE,EAAMvE,EAAO,kCAAkC,EACpF,oBAAA4L,GACA,cAAA4H,GACA,gBAAAF,GACA,gBAAAG,GACA,gBAAAJ,GACA,WAAAK,GACA,eAAAH,GACA,aAAA5H,GACA,YAAAD,EAAA,CACD,EACD,SAAS6S,GAASC,EAAS,EAAG,CAC5B,IAAIpa,EAAI4O,EACJ,OAAOwL,GAAY,UACpBpa,EAAK+R,EAAmB,SAAW,MAAQ/R,IAAO,QAAkBA,EAAG,SAASoa,EAAS,GAAK,CAAC,GAE/FxL,EAAKmD,EAAmB,SAAW,MAAQnD,IAAO,QAAkBA,EAAG,SAASwL,CAAO,CAC1F,CAEF,MAAMC,GAAiB,CACrB,cAAAzS,GACA,SAAAuS,GACA,eAAgB,IAAM,CACpB,GAAI,CAACve,EAAM,UAAW,MAAO,CAC3B,KAAM,GACN,QAAS,EAAC,EAEZ,KAAM,CACJ,YAAAyc,CAAA,EACE1F,EAAiB,MACrB,MAAO,CACL,KAAM0F,EACN,QAAS5D,GAAiB4D,CAAW,EACvC,EAEF,qBAAsB,IAAM,CAC1B,GAAI,CAACzc,EAAM,UAAW,MAAO,CAC3B,KAAM,GACN,QAAS,EAAC,EAEZ,KAAM,CACJ,kBAAAmX,CAAA,EACEJ,EAAiB,MACrB,MAAO,CACL,KAAMI,EACN,QAAS0B,GAAiB1B,CAAiB,EAC7C,CACF,EAEI5T,GAAavB,EAAS,IAAM,CAChC,KAAM,CACJ,OAAQ,CACN,qBAAAwB,CAAA,EAEF,KAAM,CACJ,SAAAvC,EACA,iBAAAyd,EACA,eAAAC,EACA,iBAAAC,EACA,gBAAAC,GACA,WAAA/a,GACA,aAAAgb,GACA,cAAAC,GACA,sBAAAC,GACA,cAAAC,GACA,mBAAAC,EACA,WAAA1F,GACA,WAAA/R,GACA,UAAA0X,CAAA,CACF,EACEhd,EAAS,MACPid,GAAgBC,GAAWH,EAAoB,KAAK,EACpDI,GAAmBD,GAAWH,EAAoB,QAAQ,EAC1DK,GAAoBzK,GAAK2E,GAAKD,EAAU,EAAIC,GAAK2F,EAAa,EAAI3F,GAAK6F,EAAgB,CAAC,EAC9F,MAAO,CACL,kBAAmBxb,GACnB,oBAAqBgb,GACrB,aAActb,EACd,gBAAiBvC,EACjB,yBAA0Byd,EAC1B,wBAAyBG,GACzB,uBAAwBF,EACxB,yBAA0BC,EAC1B,sBAAuBG,GACvB,+BAAgCC,GAChC,sBAAuBC,GACvB,2BAA4BC,EAC5B,sBAAuB,IAAIE,EAAa,GACxC,yBAA0B,IAAIE,EAAgB,GAC9C,0BAA2BC,GAC3B,kBAAmB9X,GACnB,iBAAkB0X,CAAA,CACpB,CACD,EACKjb,GAAmBtC,EAAsBuC,GAAc,OAAQ,OAAWZ,GAAYvD,CAAK,EAAI,OACrG,OAAO,OAAO,OAAO,OAAO,OAAO,GAAIye,EAAc,EAAG,CACtD,gBAAiBxe,EACjB,YAAakC,EACb,WAAYmB,EACZ,OAAQqX,GACR,IAAKvB,GACL,UAAAlD,EACA,mBAAAC,EACA,iBAAAvN,EACA,eAAAwV,GACA,oBAAAjB,GACA,aAAAe,GACA,mBAAA9H,EACA,iBAAAC,EACA,iBAAAwE,GACA,aAAAsD,GACA,QAASvc,EAAsB,OAAY2B,GAC3C,WAAYW,IAAqB,KAAsC,OAASA,GAAiB,WACjG,SAAUA,IAAqB,KAAsC,OAASA,GAAiB,SAChG,GAEH,QAAS,CACP,IAAIE,EACJ,KAAM,CACJ,OAAA+H,EACA,oBAAAqT,CAAA,EACE,KACJ,GAAI,CAACrT,EAAO,QAAUqT,EACpB,OAAOA,EAAA,EAET,KAAM,CACJ,gBAAA/e,EACA,UAAAgf,EACA,UAAArL,EACA,UAAAD,EACA,SAAA9N,EACA,kBAAAqZ,EACA,UAAAjN,EACA,cAAAzG,EACA,WAAA2T,EACA,eAAAvB,EACA,eAAA1V,CAAA,EACE,KACEkX,EAAkBF,GAAqB,CAACrZ,EACxCwZ,EAAWD,EAAkB,IAAM,OACnCE,EAAY,CAAC,GAAGrf,CAAe,QAASkf,GAAc,GAAGlf,CAAe,aAAcgS,GAAa,GAAGhS,CAAe,oBAAqB2T,GAAaqL,IAAc,GAAGhf,CAAe,oBAAqB2T,GAAa,GAAG3T,CAAe,mBAAmB,EAC9Psf,EAAa1T,GACV,aAAcA,EAASpN,EAAE2V,GAAe,CAC7C,OAAQvI,EAAO,OACf,MAAOA,EAAO,MACd,UAAW5L,EACX,KAAM4L,EAAO,KACb,aAAc,KAAK,iBACpB,EAAIpN,EAAE+gB,GAAW,CAChB,IAAK3T,EAAO,IACZ,OAAAA,EACA,UAAW5L,CAAA,CACZ,EAEH,GAAI,KAAK,cAAe,CACtB,KAAM,CACJ,YAAAqM,EACA,0BAAAmT,CAAA,EACE,KACEC,EAAUb,GAAWY,GAA6B,GAAG,EAC3D,OAAOhhB,EAAEkhB,GAAa,OAAO,OAAO,GAAIzX,EAAgB,CACtD,IAAK,mBACL,YAAayL,EAAY,KAAK,oBAAsB,OACpD,UAAW,KAAK,mBAChB,QAAS,KAAK,iBACd,MAAO2L,EACP,MAAOhT,EAAY,MAAM,UACzB,eAAgBA,EAAY,cAAc,UAC1C,SAAA+S,EACA,UAAWD,EAAkB5T,EAAgB,OAC7C,WAAY4T,EAAkBxB,EAAiB,OAChD,EAAG,CACF,QAAS,IAAM,CACb,IAAIha,EACJ,OAACA,EAAK,KAAK,YAAc,MAAQA,IAAO,QAAkBA,EAAG,KAAK,IAAI,EAC9D+H,EAAO,OAIRlN,EAAEmhB,GAAc,CACrB,IAAK,qBACL,MAAO,KAAK,OACZ,SAAU3G,GAAK3M,EAAY,KAAK,UAAU,EAC1C,iBAAkB,KAAK,IACvB,WAAYoT,EAAQ,IACpB,cAAeA,EAAQ,OACvB,MAAO,KAAK,WACZ,MAAO,CAAC,KAAK,QAAS,CACpB,YAAaA,EAAQ,KACrB,aAAcA,EAAQ,MACvB,EACD,SAAU,KAAK,aACf,SAAU,KAAK,aACf,cAAe,GACf,cAAe,IACd,CACD,QAAS,CAAC,CACR,KAAAG,CAAA,IACIN,EAAWM,CAAI,EACtB,EAxBuBC,GAAY,KAAK,OAAO,MAAO,IAAM,CAACrhB,EAAEshB,GAAQ,CACtE,MAAO,GAAG9f,CAAe,eACzB,MAAO,KAAK,YAAY,MAAM,MAC9B,eAAgB,KAAK,YAAY,cAAc,MAChD,CAAC,CAAC,CAoBF,CACH,CACD,EAEH,KAAM,CACJ,mBAAA6T,CAAA,EACE,KAGJ,OAFAwL,EAAU,KAAK,KAAK,UAAU,GAC7B1b,EAAK,KAAK,YAAc,MAAQA,IAAO,QAAkBA,EAAG,KAAK,IAAI,EAClEkQ,EACKrV,EAAEkhB,GAAa,OAAO,OAAO,GAAIzX,EAAgB,CACtD,MAAOoX,EACP,SAAAD,EACA,UAAWD,EAAkB5T,EAAgB,OAC7C,WAAY4T,EAAkBxB,EAAiB,OAC/C,MAAO,KAAK,QACZ,aAAc,CACZ,QAAS,KAAK,0BAChB,CACD,EAAG,CACF,QAAS,IAAMnf,EAAE,MAAO,CACtB,YAAakV,EAAY,KAAK,oBAAsB,OACpD,IAAK,aACJ,KAAK,OAAO,IAAI4L,CAAU,CAAC,EAC/B,EAEM9gB,EAAE,MAAO,CACd,MAAO6gB,EACP,SAAAD,EACA,IAAK,YACL,MAAO,KAAK,QACZ,UAAWD,EAAkB5T,EAAgB,OAC7C,WAAY4T,EAAkBxB,EAAiB,OAC/C,YAAajK,EAAY,KAAK,oBAAsB,QAClDhI,EAAO,OAIJA,EAAO,IAAI4T,CAAU,EAJRO,GAAY,KAAK,OAAO,MAAO,IAAM,CAACrhB,EAAEshB,GAAQ,CAClE,MAAO,GAAG9f,CAAe,eACzB,MAAO,KAAK,YAAY,MAAM,MAC9B,eAAgB,KAAK,YAAY,cAAc,MAChD,CAAC,CAAC,CAA0B,CAC/B,CAEJ,CAAC,kdCv+CK+f,GAAmB,IAAAC,GAAA,IAAM,OAAO,0BAA6B,kDAC7DC,GAAaC,GAAqB,CACtC,OAAQH,GACR,MAAO,CACT,CAAC,EACD,WAAWA,GAAkB,GAAI,yHAUjC,MAAMxgB,EAAQ4gB,EAYRC,EAAiB7e,EAAS,IACzBhC,EAAM,YACJA,EAAM,YAAY,YAAY,wBAAwB,SAD9B,EAEhC,EAEK8gB,EAAoB9e,EAAS,IAC1B6e,EAAe,MAAM,OAAQE,GAAM,CAACA,EAAE,QAAQ,IAAI,CAC1D,EAEKC,EAAkBhf,EAAS,IACxB6e,EAAe,MAAM,OAAQE,GAAMA,EAAE,QAAQ,IAAI,CACzD,EAEKE,EAAoBC,EAA8C,EAAE,EAC1ErK,GAAY,IAAM,CAChBoK,EAAkB,MAAQD,EAAgB,MAC3C,EACD,MAAMG,EAAoBC,GAAgD,CACpEH,EAAkB,MAAM,SAASG,CAAU,EAC7CH,EAAkB,MAAQA,EAAkB,MAAM,OAC/CF,GAAMA,IAAMK,CAAA,EAGfH,EAAkB,MAAQA,EAAkB,MAAM,OAAOG,CAAU,CACrE,EAGIC,EAAgBlW,GAAmC,CACvD,MAAMwB,EAAQxB,EAAK,MACnB,OACEwB,aAAiB2U,IACjBT,EAAe,MAAM,KAAMU,GAAMA,EAAE,aAAe5U,CAAK,GACvD,CAACxB,EAAK,YAAY,KAAM4V,GAAMA,EAAE,iBAAiBO,EAAsB,EAEhE,CACL,QAAS,kBAGN,kDAIP,OAAAE,EAAA,EAAAC,EAgGM,MAhGNC,GAgGM,CAtFJC,EAQM,MARNC,GAQM,CAPJD,EAGM,MAHNE,GAGM,CAFJC,EAAgCC,EAAA,CAAvB,KAAK,OAAO,EAAE,qBACvBJ,EAA6C,OAAxC,KAAK,YAAY,gBAAU,UAAO,OAEzCG,EAEUE,EAAA,CAFD,QAAM,QAAOC,sBACpB,IAAiC,CAAjCH,EAAiCC,EAAA,CAAxB,KAAK,QAAQ,EAAE,iCAG5BJ,EA4EM,MA5ENO,GA4EM,CA3EJP,EAcM,MAdNQ,GAcM,CAZIhT,QAAM,QAAUiT,mBADxBC,GAOEC,EAAA5B,EAAA,SALC,MAAOvR,QACP,YAAaiT,cACb,gBAAiBE,EAAAtB,CAAA,EACjB,kBAAmBsB,EAAArB,CAAA,EACpB,MAAM,iIAERU,EAIM,OAJD,YAAS,yBAAoB,WAChCA,EAEM,OAFD,YAAS,cAAS,gBAAW,KAAK,qBAAoB,iBAE3D,UAGJG,EA2DaS,EAAA,CA3DD,MAAM,uDAAqD,WACrE,IAMM,CANNZ,EAMM,MANNa,GAMM,CALJV,EAIEW,GAAA,CAHC,OAAQC,WAAS,OACjB,KAAMA,WAAS,IACf,aAAArB,CAAA,8BAGLM,EAkDM,MAlDNgB,GAkDM,CAjDOL,EAAAxB,CAAA,EAAkB,QAA7BU,IAAAC,EAgBM,MAhBNmB,GAgBM,EAfJpB,EAAA,IAAAC,EAcMoB,GAAA,KAAAC,GAbsBR,EAAAxB,CAAA,EAAiB,CAAnCM,EAAYtR,SADtB2R,EAcM,OAZH,IAAK3R,EACN,eACA,YACA,YACA,WACA,aACA,EAAE,SAEFgS,EAGEW,GAAA,CAFC,OAAQC,WAAS,OACjB,KAAMA,WAAS,QAAQtB,EAAW,UAAU,qDAInDI,EAAA,IAAAC,EA+BMoB,GAAA,KAAAC,GA9BsBR,EAAAtB,CAAA,EAAe,CAAjCI,EAAYtR,SADtB2R,EA+BM,OA7BH,IAAK3R,EACN,oBACA,eACA,YACA,YACA,WACA,aACA,uBACC,MAAKiT,GAAA,CAA+B,YAAAT,EAAAU,EAAA,EAAUlT,EAAIwS,EAAAU,EAAA,EAAU,MAAM,kBAAkCV,EAAArB,CAAA,EAAkB,SAASG,CAAU,SAA6C,SAMtL,QAAK6B,GAAE9B,EAAiBC,CAAU,IAEnCO,EAOE,OANA,kBACA,kBACA,eACC,MAAKoB,GAAA,CAAqC,gBAAAT,EAAAU,EAAA,EAAUlT,EAAIwS,EAAAU,EAAA,EAAU,MAAM,yBAI3ErB,EAAe,QAAT,aAAM,UACZG,EAGEW,GAAA,CAFC,OAAQC,WAAS,OACjB,KAAMA,WAAS,QAAQtB,EAAW,UAAU,sNC5J3D,MAAMphB,EAAQ4gB,EAeRsC,EAAYphB,GAAI,EAAK,EACrBqhB,EAAarhB,GAAgB,CAAC,EACpC,OAAAshB,GACE,IAAMpjB,EAAM,KACZ,SAAY,CACNA,EAAM,MACRkjB,EAAU,MAAQ,GAClBC,EAAW,MAAQ,GACnB,MAAM,IAAI,QAASE,GAAM,WAAWA,EAAG,GAAG,CAAC,EAC3CF,EAAW,MAAQ,IAEnBA,EAAW,MAAQ,EACnB,MAAM,IAAI,QAASE,GAAM,WAAWA,EAAG,GAAG,CAAC,EAC3CH,EAAU,MAAQ,GAClBC,EAAW,MAAQ,EACnBnjB,EAAM,eACR,CACF,EAGFsjB,GAAiB,QAAUxd,GAAM,CAC3BA,EAAE,MAAQ,UACZ9F,EAAM,aAAa,EAAK,CAC1B,CACD,SAISsiB,EAAAY,CAAA,OADRzB,EAgBM,aAdJ,UAAM,aAAY,qBAQmBa,EAAAa,CAAA,IAAU,sBAAmCb,EAAAa,CAAA,IAAU,KAP5F,YACA,YACA,WACA,cACA,YACA,EAAE,YACF,EAAE,cAMeI,YAAjBlB,GAAoEmB,GAApEC,GAAoE,QAArCF,OAAI,CAAG,uBAAOG,eAAY,yFC7DhDC,GAAeC,GAAoC,CAC9D,MAAMC,EAAS3C,EAAA,EACT4C,EAAa,CACjB,EAAG,EACH,EAAG,GAGC/F,EAASgG,GAAgB,CAAE,GAAGD,EAAY,EAChD,IAAIE,EACJ,MAAMC,EAAoBC,GAAc,CAClCF,GACFE,EAAG,gBACL,EAEIC,EAAaD,GAAqB,CACtCF,EAASE,EACTJ,EAAW,EAAI/F,EAAO,EACtB+F,EAAW,EAAI/F,EAAO,GAElBqG,EAAQF,GAAqB,CACjC,GAAI,CAACF,GAAU,CAACH,EAAO,MAAO,OAE9B,MAAMQ,EAAKH,EAAG,QAAUF,EAAO,QACzBM,EAAKJ,EAAG,QAAUF,EAAO,QAE3BJ,EAAQS,CAAE,IACZtG,EAAO,EAAI+F,EAAW,EAAIO,GAE5BtG,EAAO,EAAI+F,EAAW,EAAIQ,CAAA,EAEtBC,EAAU,IAAM,CACpBP,EAAS,QAELQ,EAAgB,IAAM,CAC1B,GAAI,CAACX,EAAO,OAAS,CAACG,EAAQ,OAC9BO,EAAA,EACA,KAAM,CAAE,IAAAE,EAAK,OAAAC,EAAQ,KAAAC,EAAM,MAAAC,GAAUf,EAAO,MAAM,yBAEhDe,EAAQ,GACRD,EAAO,OAAO,YACdD,EAAS,GACTD,EAAM,OAAO,eAGb1G,EAAO,EAAI+F,EAAW,EACtB/F,EAAO,EAAI+F,EAAW,EACxB,EAEF,OAAA3R,GAAU,IAAM,CACd,OAAO,iBAAiB,cAAeiS,CAAI,EAC3C,OAAO,iBAAiB,YAAaI,CAAa,EAClD,SAAS,iBAAiB,cAAeP,CAAgB,EAC1D,EACDY,GAAY,IAAM,CAChB,OAAO,oBAAoB,cAAeT,CAAI,EAC9C,OAAO,oBAAoB,YAAaI,CAAa,EACrD,SAAS,oBAAoB,cAAeP,CAAgB,EAC5DM,EAAA,CAAQ,CACT,EACDnM,GAAMyL,EAAQ,CAACiB,EAAUpM,IAAa,CAChCoM,IACFA,EAAS,iBAAiB,cAAeX,CAAS,EAClDW,EAAS,iBAAiB,YAAaP,CAAO,GAE5C7L,IACFA,EAAS,oBAAoB,cAAeyL,CAAS,EACrDzL,EAAS,oBAAoB,YAAa6L,CAAO,EACnD,CACD,EACDM,GAAY,IAAM,CACXhB,EAAO,QACZA,EAAO,MAAM,oBAAoB,cAAeM,CAAS,EACzDN,EAAO,MAAM,oBAAoB,YAAaU,CAAO,GACtD,EACM,CACL,OAAAV,EACA,OAAA9F,CAAA,CAEJ,EAEA,IAAIgH,GAAmB,IAChB,MAAMC,GAAY,IAAM,CAC7BD,KACA,MAAME,EAAS/D,EAAW6D,EAAgB,EAM1C,MAAO,CACL,OAAAE,EACA,OAPa,IAAM,CACfA,EAAO,QAAUF,KACrBA,KACAE,EAAO,MAAQF,GAAA,CAIf,CAEJ,ECDMG,GAAa,sMAzFnB,MAAMllB,EAAQ4gB,EAkBRuE,EAASnlB,EAAM,aAAa,OAAS,OACrColB,EAAQplB,EAAM,aAAa,MAAQ,OACnC8jB,EAAa,CACjB,GAAIqB,EAASnlB,EAAM,aAAa,KAAOA,EAAM,aAAa,QAAU,EACpE,GAAIolB,EAAQplB,EAAM,aAAa,IAAMA,EAAM,aAAa,SAAW,GAG/DqlB,EAAc1B,GAAaU,GAAO,CACtC,MAAMiB,GACHtlB,EAAM,aAAa,OAAS,GAC7BulB,EAAa,OAAO,EACpB,CAACF,EAAY,OAAO,EACpBhB,EACF,OAAQrkB,EAAM,UAAY,GAAKslB,CAAA,CAChC,EACKC,EAAe5B,GAAaU,GAAO,CACvC,MAAMiB,GACHtlB,EAAM,aAAa,OAAS,GAC7BulB,EAAa,OAAO,EACpBlB,EACAgB,EAAY,OAAO,EAErB,OAAQrlB,EAAM,UAAY,GAAKslB,CAAA,CAChC,EAEKvH,EAASgG,GAAgB,CAAE,GAAGD,EAAY,EAC1C0B,EAAexjB,EAAS,IAAM,CAClC,MAAMyjB,GACHzlB,EAAM,aAAa,OAAS,GAC7BulB,EAAa,OAAO,EACpBF,EAAY,OAAO,EACfK,EAAa1lB,EAAM,aAAa,MAAQ,SAASylB,CAAK,MAAQ,GAC9DE,EAASP,EAAQ,OAAOrH,EAAO,CAAC,MAAQ,UAAUA,EAAO,CAAC,MAChE,OAAIoH,EACK,QAAQpH,EAAO,EAAIsH,EAAY,OAAO,CAAC,MAAQM,EAASD,EAExD,SAAS3H,EAAO,EAAIwH,EAAa,OAAO,CAAC,MAAQI,EAASD,CACnE,CACD,EAID,IAAI1B,EACJ,MAAM4B,EAAQ1E,EAAW,EAAK,EACxBiD,EAAaD,GAAqB,CACtCF,EAASE,EACTJ,EAAW,EAAI/F,EAAO,EACtB+F,EAAW,EAAI/F,EAAO,EACtB6H,EAAM,MAAQ,IAEVxB,EAAQF,GAAqB,CACjC,GAAI,CAACL,EAAO,OAAS,CAACG,EAAQ,OAE9B,MAAMK,EAAKH,EAAG,QAAUF,EAAO,QACzBM,EAAKJ,EAAG,QAAUF,EAAO,QAE/BjG,EAAO,EAAI+F,EAAW,GAAKqB,EAASd,EAAK,CAACA,GAC1CtG,EAAO,EAAI+F,EAAW,GAAKsB,EAAQd,EAAK,CAACA,GAEzCsB,EAAM,MAAQ,IAEVrB,EAAU,IAAM,CACpBP,EAAS,QAEL6B,EAAM3E,EAAA,EACN2C,EAAS3C,EAAA,EACT+C,EAAoBC,GAAc,CAClCF,GACFE,EAAG,gBACL,EAGIM,EAAgB,IAAM,CAC1B,GAAI,CAACX,EAAO,OAAS,CAACG,EAAQ,OAC9BO,EAAA,EACA,KAAM,CAAE,IAAAE,EAAK,OAAAC,EAAQ,KAAAC,EAAM,MAAAC,GAAUf,EAAO,MAAM,wBAClD,GACEe,EAAQ,GACRD,EAAO,OAAO,YACdD,EAAS,GACTD,EAAM,OAAO,YACb,CAEA1G,EAAO,EAAI+F,EAAW,EACtB/F,EAAO,EAAI+F,EAAW,EAEtB,MAAMgC,EAASD,EAAI,MACfC,IACFA,EAAO,UAAU,IAAIZ,EAAU,EAC/B,WAAW,IAAM,CACfY,EAAO,UAAU,OAAOZ,EAAU,GACjC,GAAG,EACR,CACF,EAIF/S,GAAU,IAAM,CACd,OAAO,iBAAiB,cAAeiS,CAAI,EAC3C,OAAO,iBAAiB,YAAaI,CAAa,EAClD,SAAS,iBAAiB,cAAeP,CAAgB,EAC1D,EACDY,GAAY,IAAM,CAChB,OAAO,oBAAoB,cAAeT,CAAI,EAC9C,OAAO,oBAAoB,YAAaI,CAAa,EACrD,SAAS,oBAAoB,cAAeP,CAAgB,EAC5DM,EAAA,CAAQ,CACT,EAEDnM,GAAMyL,EAAQ,CAACiB,EAAUpM,IAAa,CAChCoM,IACFA,EAAS,iBAAiB,cAAeX,CAAS,EAClDW,EAAS,iBAAiB,YAAaP,CAAO,GAE5C7L,IACFA,EAAS,oBAAoB,cAAeyL,CAAS,EACrDzL,EAAS,oBAAoB,YAAa6L,CAAO,EACnD,CACD,EACDM,GAAY,IAAM,CACXhB,EAAO,QACZA,EAAO,MAAM,oBAAoB,cAAeM,CAAS,EACzDN,EAAO,MAAM,oBAAoB,YAAaU,CAAO,GACtD,EACD,MAAMwB,EAAgBC,GAAiB,CACjCA,aAAe,YACjBnC,EAAO,MAAQmC,EAEfnC,EAAO,MAAQ,MACjB,EAGI,CAAE,OAAAoC,EAAQ,OAAAhB,CAAA,EAAWD,GAAA,EAC3B,OAAA5M,GACE,IAAMpY,EAAM,KACZ,IAAM,CACAA,EAAM,MACRimB,EAAA,CACF,CACF,cAIA5D,GAiCW6D,GAAA,CAjCD,GAAG,QAAM,CAETzhB,YADRgd,EA+BM,qBA7BA,MAAJ,IAAIoE,EACJ,SACA,MAAKM,GAAA,CAAC,gBAEEnmB,EAAM,KAAK,GADlB,MAAK+iB,GAAA,CAAGT,EAAAkD,CAAA,EAAY,QAAIlD,EAAA2C,CAAA,EAAM,GAE9B,YAASmB,EAAA,KAAAA,EAAA,WAAE9D,EAAA2D,CAAA,GAAA3D,EAAA2D,CAAA,KAAApd,CAAA,KAEZwd,GAA6CC,EAAA,kBAAtC,MAAOP,EAAe,MAAOzD,EAAAsD,CAAA,IAEpBW,qBAAhB9E,EAmBWoB,GAAA,SAlBTlB,EAQE,OAPC,IAAKW,EAAA+C,CAAA,EAAY,OAClB,YACA,gBACA,WACA,cACA,WACA,iCAEF1D,EAQE,OAPC,IAAKW,EAAAiD,CAAA,EAAa,OACnB,YACA,eACA,WACA,cACA,WACA,uEC9KJiB,GAAoB,MAAOC,GACxB,MAAM,4CAA8CA,CAAE,EAC1D,KAAMpD,GAAMA,EAAE,MAAM,EACpB,MAAM,IAAM,CAAC,EAGLqD,GAAmBC,GAAuB,IAAM,CAC3D,MAAMC,EAAQC,GAAA,EACRC,EAASC,GAAA,EAETC,EAAa9F,EAAA,EACnBkC,GACE,IAAMwD,EAAM,OAAO,WAClB7F,GAAM,CACLiG,EAAW,MAAQC,GAAUlG,CAAC,EAChC,EAEF,MAAMmG,EAAWllB,EAAS,IAAM,CAC9B,GAAIglB,EAAW,MAAO,OAAOG,GAAiBH,EAAW,KAAK,CACvD,CACR,EACKI,EAAUplB,EAAS,IAAM,CAC7B,GAAIglB,EAAW,MAAO,OAAOK,GAAgBL,EAAW,KAAK,CACtD,CACR,EACKM,EAAWpG,EAAA,EACjBrK,GAAY,IAAM,CACZyQ,EAAS,QACX,SAAS,MACP,OAASC,GAAWD,EAAS,KAAK,EAAE,MAAQA,EAAS,MAAM,OAC/D,CACD,EACD,MAAME,EAAatG,EAAA,EACbuG,EAAgBzlB,EAAS,IAAM,CACnC,GAAIwlB,EAAW,MACb,OAAO,IAAI,gBACT,IAAI,KAAK,CAACA,EAAW,KAAK,EAAG,CAC3B,KAAM,YACP,EAGE,CACR,EACKE,EAAaxG,EAAW,EAAK,EAC7ByG,EAASC,GAAQ,MAAOnB,GAA2B,CAEvD,GADAiB,EAAW,MAAQ,GACf,CAACjB,EAAI,CACPa,EAAS,MAAQ,OACjBE,EAAW,MAAQ,OACnB,OAUF,GARA,MAAM,QAAQ,IAAI,CAChBK,GAAgB,QAAQpB,CAAE,EAAE,KAAMpD,GAAM,CACtCiE,EAAS,MAAQjE,GAAK,OACvB,EACDyE,GAAkB,QAAQrB,CAAE,EAAE,KAAMpD,GAAM,CACxCmE,EAAW,MAAQnE,GAAK,OACzB,EACF,EACG,CAACiE,EAAS,MAAO,CACnB,MAAMS,EACJZ,GAAiBV,CAAE,GAAM,MAAMD,GAAkBC,CAAE,EACrD,GAAIsB,GAAkB,OAAO,cAAcA,CAAc,EAAG,CAC1DL,EAAW,MAAQ,GACnBZ,EAAO,QAAQ,CACb,KAAM,MAAQiB,EACd,MAAOnB,EAAM,MACd,EACD,OACF,CACF,CACD,EACKoB,EAAUhmB,EAAS,IAAM2lB,EAAO,OAAO,EAC7CvE,GAAe,IAAM4D,EAAW,MAAOW,EAAO,MAAM,EACpD9Q,GAAY,IAAM,CAEdqQ,EAAS,OACT,CAACe,GAAiBf,EAAS,KAAK,GAChCF,EAAW,OAEX,MACE,qDAAuDE,EAAS,MAEpE,CACD,EACD,MAAMgB,EAAalmB,EAAS,IACnBmmB,GAAA,GAAUC,GAAc,gBAChC,EACDvR,GAAY,IAAM,CACZqR,EAAW,OAASZ,EAAS,OAAS,CAACF,EAAQ,OACjDiB,GAAwBf,EAAS,KAAK,EAEpCY,EAAW,OAASZ,EAAS,OAAS,CAACJ,EAAS,OAClDoB,GAAyBhB,EAAS,KAAK,EAErCY,EAAW,OAASZ,EAAS,OAASJ,EAAS,OACjDqB,GAAejB,EAAS,MAAM,GAAIJ,EAAS,KAAK,CAClD,CACD,EACD,MAAM/X,EAAQnN,EAAS,IACjBslB,EAAS,MACPA,EAAS,MAAM,MAAM,QAAUc,GAAc,gBACxC,gBAAgBd,EAAS,MAAM,KAAK,EAEpC,gBACLA,EAAS,MAAM,MAAM,MAAM,EAAGc,GAAc,eAAe,GAI1D,EACR,EACKI,EAAWxmB,EAAS,IAAM,CAC9B,GAAImN,EAAM,MAAM,OACd,OAAOsZ,GAAWtZ,EAAM,KAAK,CAExB,CACR,EACKuZ,EAAe1mB,EAAS,IACxBslB,EAAS,MACJA,EAAS,MAAM,MAAM,OAASc,GAAc,gBAE9C,CACR,EACKO,EAAYzH,EAAA,EACZ0H,EAAY1H,EAAW,CAAC,EACxB2H,EAAgB3H,EAAA,EAChB4H,EAAe5H,EAAA,EACf6H,EAAkB,MAAO5d,GAAkB,CAC/Cwd,EAAU,MAAQxd,EAClByd,EAAU,MAAQ,KAAK,MACvB,MAAMvQ,GAAA,EACFyQ,EAAa,OAAS,CAACA,EAAa,MAAM,SAAS3d,CAAI,IACzD0d,EAAc,MAAQ,OACtBC,EAAa,MAAQ,OACvB,EAEFjS,GAAY,IAAM,CACZ2R,EAAS,OACXO,EAAgBP,EAAS,KAAK,CAChC,CACD,EACD,MAAMQ,EAAkBpe,GAAuB,CAC7Cie,EAAc,MAAQje,EACtB,MAAMqe,EAAcC,GAAc/Z,EAAM,MAAO0Z,EAAc,KAAK,EAC9DI,EAAY,QACdF,EAAgBE,EAAY,CAAC,CAAC,EAE5BA,EAAY,OAAS,EACvBH,EAAa,MAAQG,EAErBH,EAAa,MAAQ,MACvB,EAGIK,EAAYrnB,GAAI,EAAK,EACrBsnB,EAAYlI,EAAA,EAalB,MAAO,CACL,WAAA8F,EACA,SAAAM,EACA,SAAAkB,EACA,cAAAf,EACA,QAAAO,EACA,WAAAN,EACA,SAAAR,EACA,QAAAE,EACA,UAAAuB,EACA,gBAAAI,EACA,UAAAH,EACA,aAAAE,EACA,aAAAJ,EACA,cAAAG,EACA,eAAAG,EACA,UAAAI,EACA,UAAAD,EACA,UA9BgB,CAChBzG,EACA9M,IACG,CACHuT,EAAU,MAAQ,GAClBC,EAAU,MAAQ,CAChB,SAAA1G,EACA,MAAOvT,EAAM,MACb,YAAayG,CAAA,CACf,CAqBA,CAEJ,CAAC,+SC/LD,KAAM,CAAE,UAAA+S,CAAA,EAAcjC,GAAA,EAOhB2C,EAAUrnB,EAAqB,IAAM,CACzC,MAAMmJ,EAAOwd,EAAU,MACvB,OAAKxd,EACE,CACL,IAAK,CACH,KAAM,yBACN,KAAM,OACN,KAAM,IAER,KAAM,CACJ,KAAM,uBACN,KAAM,OACN,KAAM,IAER,UAAW,CACT,KAAM,uCACN,KAAM,OACN,KAAM,IAER,MAAO,CACL,KAAM,wBACN,KAAM,OACN,KAAM,IAER,GAAI,CACF,KAAM,QACN,KAAM,YACN,KAAM,IAASA,EAAK,WAAaA,EAAK,OAASA,EAAK,KAAK,GAAE,EAE7D,IAAK,CACH,KAAM,QACN,KAAM,YACN,KAAM,IAASA,EAAK,WAAaA,EAAK,OAASA,EAAK,KAAK,IAAG,EAE9D,KAAM,CACJ,KAAM,QACN,KAAM,YACN,KAAM,IAASA,EAAK,WAAaA,EAAK,SAAWA,EAAK,KAAK,KAAI,CACjE,EApCgB,EAqClB,CACD,EAEKme,EAAe,CAAC,OAAQ,MAAM,EAC9BC,EAAQvnB,EAAS,IAChB2mB,EAAU,MACR,OAAO,QAAQA,EAAU,MAAM,IAAI,EACvC,IAAI,CAAC,CAAC5lB,EAAM4J,CAAK,IAAM,OACtB,MAAM6c,EAAO,CACX,KAAAzmB,EACA,MAAA4J,EACA,KAAM,KAAK,UAAUA,CAAK,EAC1B,KAAKvI,EAAAilB,EAAQ,MAAMtmB,CAAI,IAAlB,MAAAqB,EAAqB,KAAOilB,EAAQ,MAAMtmB,CAAI,EAAI,QAEzD,OAAIumB,EAAa,SAASvmB,CAAI,EACrB,CACLymB,EACA,CACE,KAAMzmB,EAAO,UACb,OAAQ4J,GAAA,YAAAA,EAAkB,SAAU,KACpC,KAAM,KAAK,WAAWA,GAAA,YAAAA,EAAkB,SAAU,IAAI,EACtD,IAAK,OACP,EAGG6c,CAAA,CACR,EACA,OAtB0B,EAuB9B,EAEKC,EAAaznB,EAAS,IACrB2mB,EAAU,MACRe,GAAoBf,EAAU,KAAK,EADb,EAE9B,yFAICtG,GAwFgBsH,GAAA,CAtFb,aAAc,kBACf,MAAM,iBACL,KAAMllB,QAAQ,EAAQ6d,EAAAqG,CAAA,CAAS,GAEhC,QAAAiB,EAAA,CAMM,CAXI,MAAAC,KAAK,CAKflI,EAMM,MANND,GAMM,CALJI,EAIUE,EAAA,CAJD,QAAK,MAAM,MAAO,QAAKoE,EAAA,KAAAA,EAAA,GAAAnD,GAAES,eAAY,CAAEjf,MAAI,KACvC,OACT,IAAwB,CAAxBqd,EAAwBC,EAAA,CAAf,KAAK,QAAO,YAKnBO,EAAAqG,CAAA,OADRtG,GA0ESyH,EAAA,OAxEP,KAAK,QACL,WACC,WAAY,GACb,MAAM,WACL,eAAgB,mDAGhB,aAED,IAKQ,CALRnI,EAKQ,cAJNA,EAGK,MAHA,IAAKkI,EAAO,+BACflI,EAAa,UAAT,OAAI,IACRA,EAAc,UAAV,QAAK,aAGbG,EAwDSiI,EAAA,gBAvDF,IAAsB,QAA3BtI,EAkCMoB,GAAA,KAAAC,GAlCeR,EAAAiH,CAAA,EAATS,QAAZ3H,GAkCM4H,EAAA,CAlCuB,IAAKD,EAAM,iBACtC,IAqBM,CArBNlI,EAqBMoI,EAAA,CArBA,QAAKjH,GAAEX,MAAI,GAAI0H,EAAM,IAAI,IAAIA,EAAM,IAAI,gBAC3C,IAgBM,CAhBKA,EAAM,KAAjBxI,EAAA,EAAAC,EAgBM,MAhBNG,GAgBM,CAfJD,EAEM,WAAAwI,EADDH,EAAM,IAAI,KAEflI,EAWWsI,EAAA,MAVE,UACT,IAMQ,CANRtI,EAMQuI,EAAA,CAND,KAAK,MAAI,WACd,IAAuD,CAAxCL,EAAM,IAAI,MAAI,YAA7B3H,GAAuDN,EAAA,OAAd,KAAK,UAEjCiI,EAAM,IAAI,MAAI,iBAD3B3H,GAGEN,EAAA,OADA,KAAK,2CAGA,IACX,CADWuI,EAAA,IACXH,EAAGH,EAAM,IAAI,IAAI,0BAGrBvI,EAEWoB,GAAA,SADNyH,EAAAH,EAAAH,EAAM,IAAI,oCAGjBlI,EAUMoI,EAAA,gBATJ,IAQY,CARZpI,EAQYyI,EAAA,CAPV,UAAM,8BAA6B,CACkB,0BAAAP,EAAM,MAAI,KAAwC,aAAAA,EAAM,QAAK,oBAKlH,IAAgB,CAAbM,EAAAH,EAAAH,EAAM,IAAI,8DAInBlI,EAmBMmI,EAAA,gBAlBJ,IAiBM,CAjBNnI,EAiBMoI,EAAA,CAjBD,QAAQ,KAAG,WACd,IAeM,CAfNvI,EAeM,MAfNE,GAeM,CAdJC,EAaWsI,EAAA,MAZE,UACT,IAMU,CANVtI,EAMUE,EAAA,CAND,QAAM,QAAKoE,EAAA,KAAAA,EAAA,GAAAnD,GAAEX,EAAAkI,EAAA,EAAKlI,EAAAmH,CAAA,CAAU,KACxB,OACT,IAEQ,CAFR3H,EAEQuI,EAAA,CAFD,KAAK,MAAI,WACd,IAAuB,CAAvBvI,EAAuBC,EAAA,CAAd,KAAK,OAAM,8BAK5B,IAEM,CAFNJ,EAEM,MAFNO,GAEMiI,EADD7H,EAAAmH,CAAA,CAAU,qJC9K/B,KAAM,CAAE,UAAAd,EAAW,aAAAG,EAAc,cAAAD,EAAe,gBAAAE,CAAA,EAC9CrC,GAAA,EAEI/B,EADO,SAAS,gBAAgB,YAAc,IAChC,mDAGlBtC,GAoCgBsH,GAAA,CAlCb,8BACD,MAAM,yBACL,KAAM,GAAQrH,EAAAwG,CAAA,GAAgBxG,EAAAuG,CAAA,EAAa,GAE5C,QAAAe,EAAA,CA6BQ,CAlCE,MAAAC,KAAK,CAMPvH,EAAAwG,CAAA,GAAgBxG,EAAAuG,CAAA,OADxBxG,GA6BQoI,EAAA,OA3BN,KAAK,QACL,YACC,QAAKrE,EAAA,KAAAA,EAAA,GAAAnD,GAAE6F,EAAA,MAAe,UAEZ,SACT,IAMM,CANNnH,EAMM,OANA,IAAKkI,EAAO,iCAAY,MAE5B,GAAAlI,EAES,OAFTD,GAESyI,EAAA,GADJ7H,EAAAuG,CAAA,EAAc,EAAE,QAAO,MAAOvG,EAAAuG,CAAA,EAAc,EAAE,QAAO,SACjDyB,EAAA,OACNH,EAAG7H,EAAAwG,CAAA,EAAa,MAAM,EAAG,UAC9B,qBAEF,IAaS,CAbThH,EAaS4I,EAAA,CAZP,2EACA,MAAM,+BAGJ,IAAkC,QADpCjJ,EAQUoB,GAAA,KAAAC,GAPaR,EAAAwG,CAAA,EAAd6B,QADTtI,GAQUL,EAAA,CANP,IAAK2I,EAAW,GACjB,KAAK,QACJ,MAAK5H,GAAET,EAAAjB,EAAA,EAAasJ,EAAYrI,EAAAqG,CAAA,CAAS,GACzC,QAAK1F,GAAEX,EAAAyG,CAAA,EAAgB4B,CAAU,cAElC,IAA8B,CAA3BL,EAAAH,EAAA7H,EAAAsI,EAAA,EAAaD,CAAU,qHC3C9BE,GAAaC,GAAA,EACNC,GAAK/oB,EAAS,IAAM6oB,GAAW,MAAM,MAAQ,GAAG,EAIhDG,GAAWhpB,EAAS,IAAM,KAAK,IAAI,KAAM6oB,GAAW,MAAM,KAAK,CAAC,EAGpD7oB,EAAS,IAAM,KAAK,IAAI,IAAK6oB,GAAW,OAAO,KAAK,CAAC,6SCY9E,MAAMI,EAAgBvE,GAAA,EAChB,CAAE,SAAA8B,EAAU,UAAAG,CAAA,EAAcsC,EAC1B3D,EAAW2D,EAAc,SAEzBC,EAAOhK,EAAW,EAAE,EACpBiK,EAAWC,GAAaF,EAAM,GAAG,EAQjCG,EAAWtK,GAAiC,CAChD,GAAuBA,GAAM,WAAa,GAC1C,GAAI,OAAOA,GAAM,SAAU,MAAO,CAACA,CAAC,EACpC,GAAI,MAAM,QAAQA,CAAC,GAAKA,EAAE,MAAOuK,GAAM,OAAOA,GAAM,QAAQ,EAAG,OAAOvK,CAAA,EAElEwK,EAAaC,GAAwC,CACzD,MAAMC,EAAUJ,EAAQG,EAAI,OAAO,EACnC,GAAI,CAACC,EACH,MAAO,gBAET,MAAMC,EAAaL,EAAQG,EAAI,UAAU,EACzC,GAAI,CAACE,EACH,MAAO,mBAET,MAAMC,EAAiBN,EAAQG,EAAI,cAAc,EACjD,GAAI,CAACG,EACH,MAAO,uBAGT,MAAMC,EAAsC,GAC5C,QAAS9b,EAAI,EAAGA,EAAI2b,EAAQ,OAAQ3b,IAAK,CACvC,MAAMiR,EAAI0K,EAAQ3b,CAAC,EACnB,GAAI,CACF8b,EAAgB,KAAKC,GAAc9K,CAAC,CAAC,QAC9Bjb,EAAG,CACV,MAAMgmB,EAAUhmB,aAAa,MAAQA,EAAE,QAAU,OAAOA,CAAC,EACzD,MAAO,kBAAkBgK,CAAC;AAAA,MAAUgc,CAAO,GAC7C,CAEF,MAAMC,EAAgBH,EAAgB,IAAKN,GACzCA,EAAE,uBAAuB9C,EAAS,KAAK,GAEzC,GAAIoD,EAAgB,OAAQ,CAC1B,MAAMI,EAAWD,EAAc,UAAWT,GAAMA,EAAE,SAAW,CAAC,EAC9D,GAAIU,GAAY,EACd,MAAO,iBAAiBA,CAAQ,UAClC,CAGF,MAAMC,EAAyC,GAC/C,QAASnc,EAAI,EAAGA,EAAI4b,EAAW,OAAQ5b,IAAK,CAC1C,MAAMiR,EAAI2K,EAAW5b,CAAC,EACtB,GAAI,CACFmc,EAAmB,KAAKJ,GAAc9K,CAAC,CAAC,QACjCjb,EAAG,CACV,MAAMgmB,EAAUhmB,aAAa,MAAQA,EAAE,QAAU,OAAOA,CAAC,EACzD,MAAO,qBAAqBgK,CAAC;AAAA,MAAUgc,CAAO,GAChD,CAEF,MAAMI,EAAmBD,EAAmB,IAAKX,GAC/CA,EAAE,uBAAuB9C,EAAS,KAAK,GAEzC,GAAIyD,EAAmB,QACjBC,EAAiB,MAAOZ,GAAMA,EAAE,SAAW,CAAC,EAC9C,MAAO,0BAIX,GAAI,CAACG,EAAQ,QAAU,CAACC,EAAW,OACjC,MAAO,oCAGT,MAAMS,EAA6C,GACnD,QAASrc,EAAI,EAAGA,EAAI6b,EAAe,OAAQ7b,IAAK,CAC9C,MAAMiR,EAAI4K,EAAe7b,CAAC,EAC1B,GAAI,CACFqc,EAAuB,KAAKN,GAAc9K,CAAC,CAAC,QACrCjb,EAAG,CACV,MAAMgmB,EAAUhmB,aAAa,MAAQA,EAAE,QAAU,OAAOA,CAAC,EACzD,MAAO,yBAAyBgK,CAAC;AAAA,MAAUgc,CAAO,GACpD,CAEF,MAAMM,EAAuBD,EAAuB,IAAKb,GACvDA,EAAE,uBAAuB9C,EAAS,KAAK,GAEzC,GAAI2D,EAAuB,OAAQ,CACjC,MAAM/oB,EAAQgpB,EAAqB,UAAWd,GAAMA,EAAE,SAAW,CAAC,EAClE,GAAIloB,GAAS,EACX,MAAO,wBAAwBA,CAAK,WACtC,CAEF,OAAK2oB,EAAc,OAGZA,EAAc,GAAG,EAAE,EAAG,CAAC,EAFrBG,EAAiB,CAAC,EAAE,CAAC,CAEA,EAG1BG,EAAStL,GACN,OAAOA,GAAM,UAAYA,IAAM,MAAQ,CAAC,MAAM,QAAQA,CAAC,EAG1DuL,EAAUtqB,EAA2B,IAAM,CAC/C,GAAI,CAACmpB,EAAS,MAAO,MAAO,GAC5B,MAAMK,GAAO,IAAM,CACjB,GAAI,CACF,OAAOe,GAAM,MAAMpB,EAAS,KAAK,QAC1BrlB,EAAG,CACV,OAAOA,CAAA,CACT,GACF,EACA,GAAI0lB,aAAe,MACjB,MAAO,SAASA,EAAI,OAAO,GAE7B,GAAI,CAACa,EAAMb,CAAG,EACZ,MAAO,gBAET,GAAI,OAAOA,EAAI,IAAO,SAAU,CAC9B,GAAIA,EAAI,KAAOlE,EAAS,MAAM,MAC5B,MAAO,qBAET,GAAI,CAAC,MAAM,QAAQkE,EAAI,MAAM,EAC3B,MAAO,oBAET,GAAIA,EAAI,OAAO,SAAW,EACxB,MAAO,sBAET,MAAMgB,EAAQhB,EAAI,OAAO,CAAC,EAC1B,GAAI,EAACgB,GAAA,MAAAA,EAAO,OACV,MAAO,2BAET,MAAMC,EAAQ,MAAM,QAAQD,EAAM,KAAK,EAAIA,EAAM,MAAQ,CAACA,EAAM,KAAK,EACrE,GAAIC,EAAM,SAAW,EACnB,MAAO,+BAET,MAAMC,EACJ,OAAOD,EAAM,CAAC,GAAM,SAAW,CAAE,QAASA,EAAM,CAAC,GAAMA,EAAM,CAAC,EAChE,OAAKJ,EAAMK,CAAI,EAGRnB,EAAUmB,CAAoB,EAF5B,mBAE4B,CAEvC,GAAIlB,EAAI,MAAO,CACb,MAAMiB,EAAQ,MAAM,QAAQjB,EAAI,KAAK,EAAIA,EAAI,MAAQ,CAACA,EAAI,KAAK,EAC/D,GAAIiB,EAAM,SAAW,EACnB,MAAO,qBAET,MAAMC,EACJ,OAAOD,EAAM,CAAC,GAAM,SAAW,CAAE,QAASA,EAAM,CAAC,GAAMA,EAAM,CAAC,EAChE,OAAKJ,EAAMK,CAAI,EAGRnB,EAAUmB,CAAoB,EAF5B,mBAE4B,CAEvC,OAAOnB,EAAUC,CAAmB,EACrC,EACKmB,EAAY3qB,EAAS,IACrBkpB,EAAK,OAASC,EAAS,OAAS,OAAOmB,EAAQ,OAAU,SACpDA,EAAQ,MAEV,EACR,EACKM,EAAa5qB,EAAS,IACtB,OAAOsqB,EAAQ,OAAU,SAAiB,KACvCA,EAAQ,KAChB,2DAGCjK,GAgDgBsH,GAAA,CA9Cb,aAAY,cAAgC,KAAK,IAAG,OAAWrH,EAAAyI,EAAA,EAAE,WAAsB,KAAK,IAAG,IAAMzI,EAAA0I,EAAA,EAAQ,KAK7G,SAAU,IACX,iBACA,MAAM,iBACL,KAAMvmB,SAEP,QAAAmlB,EAAA,CAmCM,CA9CI,MAAAC,KAAK,CAWflI,EAmCM,MAnCND,GAmCM,CAlCJC,EAQM,MARNC,GAQM,CAPJwE,EAAA,KAAAA,EAAA,GAAAzE,EAAe,WAAV,OAAI,KACTA,EAAuC,OAAjC,IAAKkI,EAAO,YAAO,4BACzB/H,EAIUE,EAAA,CAJD,QAAK,MAAM,MAAO,QAAKoE,EAAA,KAAAA,EAAA,GAAAnD,GAAES,eAAY,CAAEjf,MAAI,KACvC,OACT,IAAwB,CAAxBqd,EAAwBC,EAAA,CAAf,KAAK,QAAO,YAI3BD,EAUE+K,EAAA,CATQ,MAAOvK,EAAA4I,CAAA,wCAAAA,EAAI,MAAAjI,EAAA,MACnB,KAAK,WACL,YAAY,YACZ,KAAK,QACL,MAAM,mBACL,SAAU,uBAGV,oBAEHtB,EAaM,MAbNE,GAaM,CAZOS,EAAAqK,CAAA,OAAXlL,EAEM,MAFNS,GAEMiI,EADD7H,EAAAqK,CAAA,CAAS,MAIDrK,EAAAsK,CAAA,OADbvK,GAOUL,EAAA,OALR,KAAK,QACJ,MAAKe,GAAET,EAAAjB,EAAA,EAAaiB,EAAAsK,CAAA,EAAYtK,EAAAqG,CAAA,CAAS,GACzC,QAAKvC,EAAA,KAAAA,EAAA,GAAAnD,GAAEX,EAAA2I,CAAA,EAAc,gBAAgB3I,EAAAsK,CAAA,CAAU,eAEhD,IAA8B,CAA3BtC,EAAAH,EAAA7H,EAAAsI,EAAA,EAAatI,EAAAsK,CAAA,CAAU,mvBCzOpC,MAAM5sB,EAAQ4gB,EA0BRkM,EAAcC,GAAmB/qB,EAAS,IAAMhC,EAAM,MAAM,CAAC,oBAKjEqiB,GAwHW6D,GAAA,CAxHD,GAAG,QAAM,IAEjBvE,EAqHM,OAnHH,MAAKoB,GAAA,MAAkBT,EAAAwK,CAAA,EAAY,MAAM,MAAK,WAA0BxK,EAAAwK,CAAA,EAAY,IAAI,MAAK,OAI9F,yBACA,SACA,qBACA,SACA,cACA,aACA,aACA,gBACA,uBACA,qBAEAnL,EAQE,OAPC,IAAK8F,gBACN,oBACA,YACA,YACA,WACC,SAAOuF,oBAAkB,EAC1B,2BAEFrL,EAUM,MAVNC,GAUMuI,EAAA,GADE8C,gBAAc,GAAG,QAAO,OAAQA,gBAAc,GAAG,QAAO,SAGxDC,oBADR1L,EAAA,EAAAC,EAsBM,MAtBNI,GAsBM,CATJF,EAAgD,WAAAwI,EAAxC+C,mBAAiB,IAAI,QAAO,OACpCvL,EAMM,WAAAwI,EAJF+C,mBAAiB,KAAK,QAAO,QAAqCA,mBAAiB,MAAM,QAAO,OAKpGvL,EAAmD,WAAAwI,EAA3C+C,mBAAiB,OAAO,QAAO,oBAGjCC,uBADR3L,EAAA,EAAAC,EAkBM,MAlBNS,GAkBM,CALJP,EAAwC,WAAAwI,EAAhCgD,sBAAoB,GAAG,KAC/BxL,EAEM,aADDwL,sBAAoB,KAAI,KAAUA,sBAAoB,KAAK,KAEhExL,EAA2C,WAAAwI,EAAnCgD,sBAAoB,MAAM,8BAEpCxL,EAkBE,OAjBA,MAAM,2CACN,YACA,YACA,aACA,WACA,iBACA,0BACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qEAWFA,EAkBE,OAjBA,MAAM,4CACN,YACA,WACA,cACA,WACA,iBACA,0BACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kEAzGMyL,UAAQ,mfC5BtB,KAAM,CAAE,eAAApE,EAAgB,UAAAL,EAAW,cAAAlB,CAAA,EAAkBf,GAAA,EAE/CY,EAAWZ,KAAmB,SAE9B2G,EAASnM,EAAA,EACToM,EAAcpM,EAAW,EAAK,EAE9BqM,EAAYrJ,GAAmB,CACnC,MAAMsJ,EAAMH,EAAO,MACnB,GAAI,CAACG,EACH,OAGF,MAAMC,EAAUD,EAAI,wBAEdE,EAAeD,EAAQ,MAAQD,EAAI,aAAgBA,EAAI,cACvDG,GAAaF,EAAQ,OAASC,GAAe,EAE7CE,GAAM1J,EAAG,QAAUuJ,EAAQ,MAAQA,EAAQ,MAASD,EAAI,aACxDK,GACF3J,EAAG,QAAUuJ,EAAQ,IAAME,GAAaD,EAAeF,EAAI,cAE/DxE,EAAe,CAAE,EAAA4E,EAAG,EAAAC,EAAG,GAGnBC,EAAWrd,GACR,GAAGA,EAAI,GAAG,IAGbsd,EAAUC,GAAeX,CAAM,EAE/BY,EAAgBjsB,EAAS,IAAM,OACnC,MAAMwrB,EAAMH,EAAO,MAEb7D,GAAOplB,EAAAukB,EAAU,QAAV,YAAAvkB,EAAiB,KAC9B,GAAI,CAACukB,EAAU,OAAS,CAAC6E,GAAO,CAAChE,GAAQ,CAAC8D,EAAY,MACpD,MAAO,GAET,MAAMY,EAAWH,EAAQ,MAAM,MACzBI,EAAYJ,EAAQ,OAAO,MAC3BL,EAAeQ,EAAWV,EAAI,aAAgBA,EAAI,cACxD,MAAO,CACL,KAAM,QAAQM,EAAQtE,EAAK,KAAOgE,EAAI,YAAY,CAAC,UACnD,MAAO,QAAQM,GACZtE,EAAK,MAAQA,EAAK,MAAQgE,EAAI,aAChC,UAED,IAAK,QAAQM,GACTtE,EAAK,IAAMgE,EAAI,cAAiBE,GAC/BS,EAAYT,GAAe,GAC5BS,CAAA,CACH,UACD,OAAQ,QAAQL,GACXtE,EAAK,OAASA,EAAK,KAAOgE,EAAI,cAAiBE,EAChDS,CAAA,CACH,UACH,CACD,EACKf,EAAWlM,EAAW,EAAK,EAC3B+L,EAAgB/L,EAAW,CAAE,GAAI,EAAG,GAAI,EAAG,EAC3CgM,EAAmBlrB,EAAS,IAAM,OACtC,MAAMwnB,GAAOplB,EAAAukB,EAAU,QAAV,YAAAvkB,EAAiB,KAC9B,GAAI,CAAColB,EACH,OAEF,KAAM,CAAE,GAAA4E,EAAI,GAAAC,CAAA,EAAOpB,EAAc,MACjC,MAAO,CACL,KAAMmB,EAAK5E,EAAK,KAChB,MAAOA,EAAK,MAAQ4E,EACpB,IAAKC,EAAK7E,EAAK,IACf,OAAQA,EAAK,OAAS6E,CAAA,CACxB,CACD,EACKlB,EAAsBnrB,EAAS,IAAM,OACzC,MAAMwnB,GAAOplB,EAAAukB,EAAU,QAAV,YAAAvkB,EAAiB,KAI9B,GAHI,CAAColB,GAAQ,CAAC0D,EAAiB,OAG3B1D,EAAK,OAAS,GAAKA,EAAK,QAAU,EACpC,OAEF,KAAM,CAAE,OAAA9E,EAAQ,KAAAC,EAAM,MAAAC,EAAO,IAAAH,CAAA,EAAQyI,EAAiB,MACtD,MAAO,CACL,KAAMoB,GAAc3J,GAAQC,EAAQD,GAAO,CAAC,EAC5C,MAAO2J,GAAc1J,GAASA,EAAQD,GAAO,CAAC,EAC9C,IAAK2J,GAAc7J,GAAOA,EAAMC,GAAS,CAAC,EAC1C,OAAQ4J,GAAc5J,GAAUD,EAAMC,GAAS,CAAC,EAClD,CACD,EACKsI,EAAqB9L,EAAW,CAAE,KAAM,IAAK,IAAK,IAAK,EAEvDqN,EAAWrK,GAAmB,CAClC,MAAMsJ,EAAMH,EAAO,MACnB,GAAI,CAACG,EAAK,OACV,MAAMC,EAAUD,EAAI,wBAEdE,EAAeD,EAAQ,MAAQD,EAAI,aAAgBA,EAAI,cACvDG,GAAaF,EAAQ,OAASC,GAAe,EAE7CU,GAAOlK,EAAG,QAAUuJ,EAAQ,MAAQA,EAAQ,MAASD,EAAI,aACzDa,GACFnK,EAAG,QAAUuJ,EAAQ,IAAME,GAAaD,EAAeF,EAAI,cAC/DP,EAAc,MAAQ,CAAE,GAAAmB,EAAI,GAAAC,CAAA,EAC5BrB,EAAmB,MAAQ,CACzB,KAAO,EAAEoB,EAAK,GAAMZ,EAAI,cAAgBA,EAAI,aAAgB,IAAO,KACnE,IAAM,EAAEa,EAAK,GAAMb,EAAI,cAAgBA,EAAI,aAAgB,IAAO,KACpE,eAMQlL,EAAAmF,CAAA,GADRjG,IAAAC,EA+DM,MA/DNC,GA+DM,CArDJC,EAYE,eAXI,SAAJ,IAAI0L,EACH,IAAK/K,EAAAmF,CAAA,EACN,sBACA,oBACA,YACA,MAAM,kCACL,QAAO8F,EACP,2BAAWH,EAAA,MAAQ,IACnB,4BAAYA,EAAA,MAAQ,IACpB,YAAWmB,EACX,sBAAMjB,EAAA,MAAW,iBAEpB3L,EAWM,MAXNE,GAWM,CAVJF,EASM,OARH,SAAOW,EAAA2L,CAAA,CAAa,EACrB,YACA,wBACA,WACA,YACA,2BAEAtM,EAAkE,OAA7D,YAAS,YAAO,WAAM,cAAS,aAAQ,aAAQ,WAAM,4BAG9DA,EAiBM,MAjBNO,GAiBM,CANJP,EAEM,MAFNQ,GAEMgI,EAAA,GADE7H,EAAAgF,CAAA,EAAS,WAAW,IAAIhF,EAAAgF,CAAA,EAAS,YAAY,OAErD3F,EAEM,MAFNa,GAEM2H,EADD7H,EAAAkM,EAAA,EAAMlM,EAAAgF,CAAA,EAAS,EAAE,EAAE,OAAM,6BAIxBhF,EAAA+K,CAAA,OADRhL,GASEoM,GAAA,OAPC,SAAUnM,EAAA8K,CAAA,EACV,OAAQ9K,EAAA+K,CAAA,EACR,oBAAqB/K,EAAA6K,CAAA,EACrB,iBAAkB7K,EAAA4K,CAAA,EAClB,mBAAoB5K,EAAA0K,CAAA,EACpB,cAAe1K,EAAA2K,CAAA,EACf,cAAe3K,EAAAmF,CAAA,shBCxJtB,MAAMb,EAAQC,GAAA,EACR,CAAE,iBAAAM,EAAkB,gBAAAE,CAAA,EAAoBqH,GAAA,EAExCzD,EAAgBvE,GAAA,EAChBY,EAAW2D,EAAc,SACzBzC,EAAWyC,EAAc,SACzB,CAAE,UAAAtC,EAAW,gBAAAI,CAAA,EAAoBkC,EAEjC0D,EAAazN,EAAW,EAAE,EAE1B0N,EAAkB7K,GAAgC,EAAE,EACpD1T,EAAe6Q,EAAqB,EAAE,EACtC2N,EAAkB3D,GAAiB,CACvC,MAAMxI,EAAWoM,GACf,IAAMjD,GAAcX,CAAI,EACvBplB,GACK,OAAOA,GAAK,SACPA,EAELA,aAAaipB,GACR,SAAWjpB,EAAE,WAEf,UAAYA,aAAa,MAAQA,EAAE,QAAUA,EACtD,EAEF,GACE8oB,EAAgB,KACbtD,GACC,OAAOA,EAAE,UAAY,UACrBA,EAAE,SAAS,YAAc5I,EAAS,UAAS,EAE/C,CACAoJ,GAAQ,QAAQ,QAAQ,EACxB,OAGF,MAAMkD,EAAUtM,EAAS,8BAA8B8F,EAAS,KAAK,EACrE,GAAIwG,EAAQ,QAAU,EAAG,CACvBlD,GAAQ,QAAQ,SAAS,EACzB,OAEF,OAAAA,GAAQ,QAAQ,OAAOkD,EAAQ,MAAM,MAAM,EAC3CJ,EAAgB,QAAQ,CACtB,SAAAlM,EACA,MAAOsM,EAAQ,IAAK3L,GAAMA,EAAE,MAAM,EAClC,QAAA2L,EACA,IAAK,KAAK,MACV,IAAK,GACN,EACMA,EAAQ,QAEXC,EAAgB/D,GAAiB,CACrC,GACE0D,EAAgB,KACbtD,GAAM,OAAOA,EAAE,UAAY,UAAYA,EAAE,SAAS,YAAcJ,CAAA,EAEnE,CACAY,GAAQ,QAAQ,QAAQ,EACxB,OAEF,MAAMkD,EAAqB,GACrBE,EAAmB,CAAC1G,EAAS,KAAK,EACxC,KAAO0G,EAAM,OAAS,GAAG,CACvB,MAAMze,EAAIye,EAAM,MACZtE,GAAana,CAAC,EAAE,SAASya,CAAI,GAC/B8D,EAAQ,KAAKve,CAAC,EAEhBye,EAAM,KAAK,GAAG,CAAC,GAAGze,EAAE,QAAQ,EAAE,SAAS,EAEzC,GAAIue,EAAQ,QAAU,EAAG,CACvBlD,GAAQ,QAAQ,SAAS,EACzB,OAEF,OAAAA,GAAQ,QAAQ,OAAOkD,EAAQ,MAAM,MAAM,EAC3CJ,EAAgB,QAAQ,CACtB,IAAK,GACL,SAAU1D,EACV,MAAO8D,EACP,IAAK,KAAK,KAAI,CACf,EACMA,EAAQ,QAEXG,EAAsB,IAAM,CAChC,MAAMC,EAAYR,EAAgB,CAAC,EAC7BS,EAAUD,EAAU,MAAM,CAAC,EAC5B,MAAM,QAAQC,CAAO,EAEf,OAAOD,EAAU,UAAY,UACtCrG,EAAgBsG,CAAO,EAFvBtG,EAAgBsG,CAAO,EAIzB,MAAMC,EAAU,IAAI,IAAIV,EAAgB,IAAKtD,GAAMA,EAAE,GAAG,CAAC,EACnDiE,EAAUlf,EAAa,MAAM,OAAQmf,GAAMF,EAAQ,IAAIE,CAAC,CAAC,EAC/DD,EAAQ,KAAKH,EAAU,GAAG,EAC1B/e,EAAa,MAAQkf,CAAA,EAEjBE,EAAmBC,GAAS,IAAM,CACtC,MAAMxE,EAAOyD,EAAW,MAAM,OAC9B,GAAKzD,EACL,IAAIyE,EAAuB,OACzB,GAAI,CAACd,EAAe3D,CAAI,EAAG,eAEvB,CAAC+D,EAAa/D,CAAI,EAAG,OAE3BiE,EAAA,EAAoB,CACrB,EAEDhd,GAAU,SAAY,CACpB,MAAMyd,GACN,IAAIC,EAAQ,EACRjJ,EAAM,MAAM,MACdiJ,GAAShB,EAAeiB,UAAiBlJ,EAAM,MAAM,GAAa,CAAC,GAAK,GAEtEA,EAAM,MAAM,MACdiJ,GAASZ,EAAarI,EAAM,MAAM,GAAa,GAAK,GAElDiJ,EAAQ,GACVV,EAAA,CACF,CACD,EAED,MAAMY,EAAgBL,GAAS,MAAO9Z,GAAiC,CACrE,MAAMwR,EAAUC,EAAgBC,EAAS,MAAM,EAAE,EAC3CJ,EAAWC,EAAiBG,EAAS,MAAM,EAAE,EAC7C0I,EAAe9I,EAAW+I,GAAa/I,CAAQ,EAAI,OACnDgJ,EAAc9I,EAAU+I,GAAW/I,CAAO,EAAI,OAE9CkE,EAAI1V,EAAO,SACXpF,EAAIoF,EAAO,QAAQ,IAAKmL,IAAMA,GAAE,QAAQ,UAAU,GAAG,EAAE,CAAE,EAAE,CAAC,EAE5DqP,GAAY,EACf5f,EAAE,WAAaA,EAAE,OAChBA,EAAE,KAAK,IACP8a,EAAE,cAAc,KACbvK,IAAMA,cAAasP,GAAU,IAAMtP,GAAE,WAAWvQ,EAAE,KAAK,EAAG,IAE9DA,EAAE,WAAaA,EAAE,OAChBA,EAAE,KAAK,KACP8a,EAAE,cAAc,KACbvK,IAAMA,cAAasP,GAAU,KAAOtP,GAAE,WAAWvQ,EAAE,KAAK,GAAI,IAEhEA,EAAE,WAAaA,EAAE,SAChBA,EAAE,KAAK,MACP8a,EAAE,cAAc,KACbvK,IAAMA,cAAasP,GAAU,MAAQtP,GAAE,WAAWvQ,EAAE,KAAK,IAAK,EACjE,EACF,KAAK,OAAO,EACRkc,GAAO,CACX,GAAIpF,EAAS,MAAM,MACnB,KAAMC,GAAWD,EAAS,KAAK,EAAE,KACjC,OAAQ,CACN,CACE,IAAK,EACL,KAAM,kBAAkBkH,GAAA,EAAQ,OAAO,qBAAqB,CAAC,GAC7D,KAAM,6BACN,MAAO,CACL,CACE,UAAW4B,IAAa,OACxB,YAAa9I,EAAS,MAAM,WAC5B,QAASgE,EAAE,WACX,YAAA4E,EACA,aAAAF,CAAA,CACF,CACF,CACF,CACF,EAGFxF,GAAK+B,GAAM,UAAUG,GAAM,OAAW,CAAC,CAAC,EACzC,EACKiD,EAAyBzO,EAAW,EAAI,EACxCoP,EAAWtuB,EAAS,IACjBmlB,EAAiBG,EAAS,MAAM,EAAE,CAC1C,EACKiJ,EAAe3a,GAAyB,CAC5C,GAAI,CAAC0a,EAAS,MAAO,OACrB,MAAME,EAAY,IAAI,IAAIP,GAAa9I,EAAiBG,EAAS,MAAM,EAAE,CAAC,CAAC,EACvE,OAAO1R,EAAO,UAAY,SAC5B4a,EAAU,aAAa,IACrB,MACAC,UAAiB7a,EAAO,SAAS,UAAU,GAG7C4a,EAAU,aAAa,IAAI,MAAO5a,EAAO,SAAS,UAAU,EAE9D4U,GAAKgG,EAAU,UAAU,gHAIzBnO,GA0JgBsH,GAAA,CAxJb,aAAY,cAAgC,KAAK,IAAG,OAAWrH,EAAAyI,EAAA,EAAE,WAAsB,KAAK,IAAG,IAAMzI,EAAA0I,EAAA,EAAQ,KAK7G,SAAU,IACX,iBACA,MAAM,iBACL,KAAMvmB,SAEP,QAAAmlB,EAAA,CA6IM,CAxJI,MAAAC,MAAK,CAWflI,EA6IM,MA7IND,GA6IM,CA5IJC,EAaM,MAbNC,GAaM,CAZJE,EAKc4O,EAAA,CALO,MAAOpO,EAAAqN,CAAA,wCAAAA,EAAsB,MAAA1M,EAAA,kBAChD,IAGS,CAHTnB,EAGS4I,EAAA,gBAFP,IAAsC,CAAtC5I,EAAsC6O,EAAA,CAA7B,MAAO,IAAK,WAAE,IAAMvK,EAAA,KAAAA,EAAA,MAAN,QAAM,kBAC7BtE,EAAsC6O,EAAA,CAA7B,MAAO,IAAI,WAAE,IAAOvK,EAAA,KAAAA,EAAA,MAAP,SAAO,8CAGjCzE,EAAuC,OAAjC,IAAKkI,GAAO,YAAO,4BACzB/H,EAIUE,EAAA,CAJD,QAAK,MAAM,MAAO,QAAKoE,EAAA,KAAAA,EAAA,GAAAnD,GAAES,eAAY,CAAEjf,MAAI,KACvC,OACT,IAAwB,CAAxBqd,EAAwBC,EAAA,CAAf,KAAK,QAAO,YAI3BD,EAYc8O,GAAA,gBAXZ,IAKE,CALF9O,EAKE+K,GAAA,CAJQ,MAAOvK,EAAAqM,CAAA,wCAAAA,EAAU,MAAA1L,EAAA,MACxB,YAAaX,EAAAqN,CAAA,EAAsB,iBACnC,WAAY,mBACZ,WAAarN,EAAAmN,CAAA,EAAgB,sDAEhC3N,EAIUE,EAAA,CAJA,QAAOM,EAAAmN,CAAA,GAAgB,CACpB,OACT,IAAyB,CAAzB3N,EAAyBC,EAAA,CAAhB,KAAK,SAAQ,4CAI5BJ,EAAa,OAAR,YAAK,UACVG,EA+GY+O,GAAA,CA/GO,cAAevO,EAAAjS,CAAA,gDAAAA,EAAY,MAAA4S,EAAA,kBAE1C,IAA0C,EAD5CzB,EAAA,IAAAC,EA6GgBoB,GAAA,KAAAC,GA5GYR,EAAAsM,CAAA,EAAe,CAAjChZ,EAAQxS,UADlBif,GA6GgByO,GAAA,CA3Gb,IAAKlb,EAAO,IACZ,KAAMA,EAAO,MAEH,SACT,IAUO,CATCA,EAAO,MAAM,OAAM,GAD3B4L,IAAAC,EAUO,OAVPI,GAUOsI,EADFvU,EAAO,MAAM,MAAM,gBAExB+L,EAcO,QAbL,eACA,YACA,kBACA,GAAG,OACH,YACC,MAAO/L,EAAO,IAAG,eAGVA,EAAO,SADfyM,GAIEI,GAAA,OAFC,KAAM7M,EAAO,SAAS,IACtB,OAAQA,EAAO,SAAS,wCAE3B6L,EAAiDoB,GAAA,SAA7ByH,EAAAH,EAAAvU,EAAO,QAAQ,8BAErC+L,EAAe,QAAT,aAAM,YAEH,iBACT,IA8Be,CA9BfG,EA8BeiP,GAAA,gBA7Bb,IASU,CARFnb,EAAO,KAAOA,EAAO,SAAS,aADtCyM,GASUL,EAAA,OAPR,KAAK,QACL,MAAM,OACL,QAAKgP,GAAA/N,IAAOX,EAAAyN,CAAA,EAAcna,CAAM,cAEtB,OACT,IAAuB,CAAvBkM,EAAuBC,EAAA,CAAd,KAAK,OAAM,sCAIhBO,EAAAgO,CAAA,OADRjO,GASUL,EAAA,OAPR,KAAK,QACJ,MAAOpM,EAAO,IAAG,kBACjB,QAAKob,GAAA/N,IAAOsN,EAAY3a,CAAM,cAEpB,OACT,IAAwB,CAAxBkM,EAAwBC,EAAA,CAAf,KAAK,QAAO,8CAGzBD,EAQUE,EAAA,CAPR,KAAK,QACL,MAAM,OACL,QAAKgP,GAAA/N,IAAOX,EAAAsM,CAAA,EAAgB,OAAOxrB,GAAK,eAE9B,OACT,IAAyB,CAAzB0e,EAAyBC,EAAA,CAAhB,KAAK,SAAQ,oDAK9B,IAyCa,CAzCbD,EAyCaS,GAAA,CAzCD,eAAY,yCACtB,IAsCM,CAtCNZ,EAsCM,MAtCNQ,GAsCM,EApCKvM,EAAO,KAAOA,EAAO,SAAS,YAAY,SAAM,GAEvD4L,EAAA,IAAAC,EAQUoB,GAAA,QAAAC,GAPalN,EAAO,MAArB+U,SADTtI,GAQUL,EAAA,CANP,IAAK2I,GAAW,GACjB,KAAK,QACJ,MAAK5H,GAAET,EAAAjB,EAAA,EAAasJ,GAAYrI,EAAAqG,CAAA,CAAS,GACzC,QAAK1F,IAAEX,EAAAyG,CAAA,EAAgB4B,EAAU,cAElC,IAA8B,CAA3BL,EAAAH,EAAA7H,EAAAsI,EAAA,EAAaD,EAAU,gDAI5BnJ,EAAA,IAAAC,EAqBeoB,cArByBjN,EAAO,MAAK,CAA9B+U,GAAY7a,UAAlCuS,GAqBe0O,GAAA,CArBwC,IAAKjhB,IAAC,WAC3D,IAYU,CAZVgS,EAYUE,EAAA,CAXR,KAAK,QACJ,QAAKiB,GAAyBX,EAAA2I,CAAA,EAAc,UAAmCrV,EAAO,SAAkCA,EAAO,QAAQ9F,EAAC,eAOzI,IAEQ,CAFRgS,EAEQuI,GAAA,gBADN,IAAuB,CAAvBvI,EAAuBC,EAAA,CAAd,KAAK,OAAM,mCAGxBD,EAMUE,EAAA,CALR,KAAK,QACJ,MAAKe,GAAET,EAAAjB,EAAA,EAAasJ,GAAYrI,EAAAqG,CAAA,CAAS,GACzC,QAAK1F,GAAEX,EAAAyG,CAAA,EAAgB4B,EAAU,cAElC,IAA8B,CAA3BL,EAAAH,EAAA7H,EAAAsI,EAAA,EAAaD,EAAU,0EAKlChJ,EAAmB,OAAd,GAAG,UAAQ,gIC1WtBsP,GAAa,GACbC,GAAUlyB,EAQd,CAACgB,EAAOmxB,IACD,IAAM,aACX,MAAMC,KAAgBpe,GAAA5O,EAAA+sB,EAAI,OAAM,UAAV,YAAAne,EAAA,KAAA5O,KAAyB6sB,IAAY,OAAQxgB,GAC1D,OAAOA,EAAE,MAAS,QAC1B,EACKtB,EAA6B,GAInC,GAHIiiB,EAAa,OAAS,GACxBjiB,EAAM,KAAKiiB,EAAa,CAAC,CAAC,EAExBA,EAAa,OAAS,EACxB,QAASthB,EAAI,EAAGA,EAAIshB,EAAa,OAAQthB,IAAK,CAC5C,MAAMuhB,IAAWC,GAAAC,EAAAJ,EAAI,OAAM,MAAV,YAAAG,EAAA,KAAAC,EAAgB,CAAE,MAAOzhB,EAAI,MAAQmhB,GACtD9hB,EAAM,KAAK,GAAGkiB,CAAQ,EACtBliB,EAAM,KAAKiiB,EAAathB,CAAC,CAAC,EAG9B,OAAO7Q,EAAE,MAAOe,EAAOmP,CAAK,EAE/B,6LCbD,MAAM2X,EAASC,GAAS,EAElBkE,EAAgBvE,GAAgB,EAChC,CAAEqC,kBAAiBJ,YAAWC,WAAU,EAAIqC,EAC5C3D,EAAW2D,EAAc3D,SACzBkB,EAAWyC,EAAczC,SAE/B,IAAIgJ,EAAcC,OAAOC,IACzB,MAAMrhB,EAAe6Q,EAAqB,EAAE,EACtClE,EAAekE,EAAqB,EAAE,EAC5C9I,GAAM,CAAC,IAAMuQ,EAAUhc,MAAO,IAAMic,EAAUjc,KAAK,EAAG,SAAY,CAChE,GAAI,CAACgc,EAAUhc,MAAO,OACtB,MAAM7N,EAAM6pB,EAAUhc,MAAM8Z,GAC5BpO,GAAQ,EAAGsZ,KAAK,SAAY,OAE1B,GADA,MAAMC,GAAM,GAAG,EACX9yB,MAAQ6pB,IAAUhc,QAAVgc,cAAiBlC,IAAI,CAC/B,GAAI+K,IAAgB1yB,EAAK,CAEvB0yB,EAAcC,OAAOC,IACrB,MACF,CAEA,MAAMrR,EAAOwR,SAASC,cACpB,kBAAkBhzB,CAAG,IACvB,EACA,GAAI,CAACuhB,EAAM,OACXrD,EAAarQ,MAAQ,CAAC7N,CAAG,EACzBuhB,EAAK0R,eAAe,CAAEC,SAAU,SAAUC,MAAO,QAAS,CAAC,CAC7D,CACF,CAAC,EACD,IAAIC,EAASvJ,EAAUhc,MAAMulB,OAC7B,GAAI,CAACA,EACH,OAEF,MAAM5G,EAAI,IAAI6G,IAAI9hB,EAAa1D,KAAK,EACpC,KAAOulB,GACL5G,EAAE8G,IAAIF,EAAOzL,EAAE,EACfyL,EAASA,EAAOA,OAGhB5G,EAAEliB,MAAQiH,EAAa1D,MAAM0lB,QAC7BhiB,EAAa1D,MAAM2lB,MAAOvR,GAAMuK,EAAEiH,IAAIxR,CAAC,CAAC,IAI1C1Q,EAAa1D,MAAQ,CAAC,GAAG2e,CAAC,EAC5B,CAAC,EAED,MAAMkH,EAAUtR,EAAU,EAEpBuR,EAAaA,CAACjjB,EAAiBrE,IAAkB,OACrD,OAAOA,EAAKsb,OAAOkC,IAAUhc,QAAVgc,cAAiBlC,KAEhCiM,EAAiB/vB,GAEyB,CAC9C,MAAMtC,EAAQghB,GAAa1e,EAAKmY,OAAQ6N,EAAUhc,KAAK,EACvD,MAAO,CACLe,QAASA,IAAM,CACb8jB,EAAc7uB,EAAKmY,OAAO2L,GAC1BsC,EAAgBpmB,EAAKmY,MAAM,GAE7Bza,MAAO,CACL,sBAAuBA,EAAMsyB,MAC7B,GAAGtyB,GAELuyB,MAAO,oBACP,eAAgBC,OAAOlwB,EAAKmY,OAAO2L,EAAE,IAInC1Y,EAAepL,GAKZioB,GAAajoB,EAAKmY,MAAM,EAG3BgY,EAAa9wB,EAAS,IACnB,GAAG+wB,GAAUzL,EAAS3a,KAAK,EAAEqmB,YAAY,YAAYD,GAAUzL,EAAS3a,KAAK,EAAEsmB,SAAW,EAAE,EACpG,EAEKC,EAAWlxB,EAAS,IACjBulB,GAAWD,EAAS3a,KAAK,EAAEumB,QACnC,EACKC,EAAanxB,EAAS,IAAM,CAChC,MAAM+e,EAAIuG,EAAS3a,MAAMwmB,WACnBC,EAAQ9L,EAAS3a,MAAMymB,MAC7B,MAAI,CAACrS,GAAK,CAACqS,EAAc,GACrBrS,EAAEsS,WAAWD,CAAK,GAAKrS,EAAEqS,EAAMf,MAAM,IAAM,IACtCtR,EAAEuS,UAAUF,EAAMf,MAAM,EAE1BtR,CACT,CAAC,EAEKwS,EAAW,SAAY,CAC3BzH,GAAQ0H,QAAQ,aAAa,EAC7B,MAAM5B,GAAM,GAAI,EAChB9K,EAAO2M,QAAQ,CACb5jB,KAAM,GACR,CAAC,GAEG6jB,EAAiB1xB,EAAS,IAAM,CACpC,MAAM+e,EAAI4S,GAAcrM,EAAS3a,KAAK,EAAEinB,YACxC,OAAO7S,EAAI,OAAOA,CAAC,GAAK8S,MAC1B,CAAC,qDAIC,OAAArS,EAAA,EAAAC,EAgHM,MAhHNC,GAgHM,CA/GJC,EA4FM,MA5FNC,GA4FM,CA3FJE,EAmFUQ,EAAA4O,EAAA,GAnFD0B,MAAM,8CAA8C,GAChDkB,MACT,IAA4B1N,EAAA,KAAAA,EAAA,IAA5BzE,EAA4B,OAAvB,WAAM,aAAQ,mCAErB,IAOW,CAPXG,EAOWsI,EAAA,MANE2J,UACT,IAEM,CAFNpS,EAEM,OAFAjU,QAAK0Y,EAAA,KAAAA,EAAA,GAAAnD,GAAEX,EAAAkI,EAAA,EAAKlI,EAAAwQ,CAAA,CAAU,MACvBxQ,EAAAwQ,CAAA,CAAU,iBAEN,IAEb,eAFa,QAEb,kBAEAhR,EAWWsI,EAAA,MAVE2J,UACT,IAMM,CANNpS,EAMM,OALHiR,MAAKzM,GAAA,eAAmC7D,EAAAoR,CAAA,OAItCpR,EAAAoR,CAAA,GAAc,uBAEV,IAEb,iBAFa,UAEb,mBAEA/R,EAeM,MAfNE,GAeM,CAdYS,EAAA4Q,CAAA,OAAhB7Q,GAKW+H,EAAA,CAAAtrB,IAAA,IAJEi1B,UACT,IAAyB,CAAzBjS,EAAyBC,EAAA,CAAhBhf,KAAK,SAAQ,cACb,IACX,CADWunB,EAAA,IACXH,EAAA,GAAM7H,EAAAiF,EAAA,EAAWjF,EAAAgF,CAAA,CAAQ,EAAEvkB,IAAI,kCAEjC+e,EAOWsI,EAAA,MANE2J,UACT,IAEM,CAFNpS,EAEM,OAFAjU,uBAAO4U,EAAAkI,EAAA,EAAKlI,MAAWA,EAAAgF,CAAA,CAAQ,EAAEvkB,IAAI,MACtCuf,EAAAiF,EAAA,EAAWjF,EAAAgF,CAAA,CAAQ,EAAEvkB,IAAI,iBAErB,IAEb,iBAFa,QAEb,qBAGF+e,EAOWsI,EAAA,MANE2J,UACT,IAEM,CAFNpS,EAEM,OAFAjU,uBAAO4U,EAAAkI,EAAA,EAAKlI,MAAWA,EAAAgF,CAAA,CAAQ,EAAEsM,WAAW,MAC7CtR,EAAAiF,EAAA,EAAWjF,EAAAgF,CAAA,CAAQ,EAAEsM,WAAW,iBAE5B,IAEb,iBAFa,QAEb,mBAEA9R,EAOWsI,EAAA,MANE2J,UACT,IAEM,CAFNpS,EAEM,OAFAjU,QAAK0Y,EAAA,KAAAA,EAAA,GAAAnD,GAAEX,MAAKA,EAAAiF,EAAA,EAAWjF,EAAAgF,CAAA,CAAQ,EAAE0M,YAAYC,UAAQ,MACtD3R,EAAAiF,EAAA,EAAWjF,EAAAgF,CAAA,CAAQ,EAAE0M,WAAW,iBAE5B,IAEb,iBAFa,QAEb,mBAEAlS,EAOWsI,EAAA,MANE2J,UACT,IAEM,CAFNpS,EAEM,OAFAjU,QAAK0Y,EAAA,KAAAA,EAAA,GAAAnD,GAAEX,EAAAkI,EAAA,EAAKlI,EAAAgF,CAAA,EAAS8L,KAAK,EAC3B,EAAAjJ,EAAA7H,EAAAgF,CAAA,EAAS8L,KAAK,iBAEV,IAEb,iBAFa,QAEb,mBAEAtR,EAYWsI,EAAA,MAXE2J,UACT,IAOM,CAPNpS,EAOM,OANHiR,MAAKzM,GAAA,eAAmC7D,EAAA6Q,CAAA,IAGxCzlB,QAAK0Y,EAAA,KAAAA,EAAA,GAAAnD,GAAEX,EAAAkI,EAAA,EAAKlI,EAAA6Q,CAAA,CAAU,MAEpB7Q,EAAA6Q,CAAA,GAAU,uBAEN,IAEb,iBAFa,QAEb,yCAEFxR,EAAc,OAAT,aAAM,UACXG,EAKEoS,GAAA,CAJAtB,MAAM,SACLtL,SAAUhF,EAAAgF,CAAA,EACV6M,YAAa,GACbZ,SAAQA,wCAGb5R,EAAiC,OAA5B,WAAM,YAAOyS,GAAG,qBAErBtS,EAeaS,EAAA,CAfD8R,YAAA,GAAYzB,MAAM,qBAC5B,IAaE,CAbF9Q,EAaEwS,EAAA,SAZI,UAAJxyB,IAAI0wB,EACIniB,aAAciS,EAAAjS,CAAA,+CAAAA,EAAY1D,MAAAsW,EAAA,MAC1BjG,aAAcsF,EAAAtF,CAAA,+CAAAA,EAAYrQ,MAAAsW,EAAA,MAClC2P,MAAM,kBACN7Y,cAAA,GACAwa,SAAA,GACAngB,UAAA,GACA3E,SAAS,KACR8T,MAAOjB,EAAAkG,CAAA,CAAQ,EACf9Y,OAAS+iB,EACT5kB,UAAY6kB,EACZ3kB,YAAcA,smBChOvB,KAAM,CAAE,SAAAuZ,EAAU,SAAAkB,EAAU,QAAAR,EAAS,WAAAN,EAAY,UAAA0B,EAAW,UAAAD,CAAA,EAC1DzC,GAAA,EAEF7P,GAAY,IAAM,CACZmR,EAAQ,MACVwM,GAAW,QAEXA,GAAW,QACb,CACD,EAED,MAAMC,EAAaC,GAAW,aAAc,GAAM,cAAc,EAC1DC,EAAWD,GAAW,WAAY,GAAO,cAAc,EACvDE,EAAWF,GAAW,WAAY,GAAM,cAAc,EAEtDG,EAAgB,IAAM,CAC1B/I,GAAQ,KAAK,MAAM,oEAIH,OAAAxJ,EAAAgF,CAAA,GAAYhF,EAAAkG,CAAA,OAA5B/G,EAuGWoB,GAAA,SAtGTlB,EAyFM,MAzFND,GAyFM,CAxFJC,EAqFM,MArFNC,GAqFM,CA5EJE,EASWsI,EAAA,CATD,UAAU,SAAO,CACd,UACT,IAIU,CAJVtI,EAIUE,EAAA,CAJD,SAAI,WACX,IAEa,CAFbF,EAEagT,EAAA,CAFD,GAAG,KAAG,WAChB,IAAuB,CAAvBhT,EAAuBC,EAAA,CAAd,KAAK,OAAM,8BAGf,IAEb,eAFa,QAEb,kBACAD,EAOWsI,EAAA,CAPD,UAAU,SAAO,CACd,UACT,IAEU,CAFVtI,EAEUE,EAAA,CAFD,QAAM,QAAO6S,CAAA,aACpB,IAA2B,CAA3B/S,EAA2BC,EAAA,CAAlB,KAAK,WAAU,sBAEjB,IAEb,eAFa,MAEb,gCACAJ,EAAO,qBACPG,EAOWsI,EAAA,CAPD,UAAU,SAAO,CACd,UACT,IAEU,CAFVtI,EAEUE,EAAA,CAFD,QAAM,QAAKoE,EAAA,KAAAA,EAAA,GAAAnD,GAAEwR,EAAA,MAAU,CAAInS,EAAAmS,CAAA,eAClC,IAA8B,CAA9B3S,EAA8BC,EAAA,CAArB,KAAK,cAAa,sBAEpB,IAEb,iBAFa,QAEb,mBACAD,EAOWsI,EAAA,CAPD,UAAU,SAAO,CACd,UACT,IAEU,CAFVtI,EAEUE,EAAA,CAFD,QAAM,QAAKoE,EAAA,KAAAA,EAAA,GAAAnD,GAAE2R,EAAA,MAAQ,CAAItS,EAAAsS,CAAA,eAChC,IAAuB,CAAvB9S,EAAuBC,EAAA,CAAd,KAAK,OAAM,sBAEb,IAEb,iBAFa,QAEb,mBACAD,EAOWsI,EAAA,CAPD,UAAU,SAAO,CACd,UACT,IAEU,CAFVtI,EAEUE,EAAA,CAFD,QAAM,QAAKoE,EAAA,KAAAA,EAAA,GAAAnD,GAAE0R,EAAA,MAAQ,CAAIrS,EAAAqS,CAAA,eAChC,IAAuB,CAAvB7S,EAAuBC,EAAA,CAAd,KAAK,OAAM,sBAEb,IAEb,iBAFa,QAEb,iCACAJ,EAAO,qBACPG,EAeWsI,EAAA,CAfD,UAAU,SAAO,CACd,UACT,IAUI,CAVJzI,EAUI,IAVJE,GAUI,CAHFC,EAEUE,EAAA,CAFD,SAAI,WACX,IAA6B,CAA7BF,EAA6BC,EAAA,CAApB,KAAK,aAAY,wBAGrB,IAEb,iBAFa,QAEb,mBACAD,EAeWsI,EAAA,CAfD,UAAU,SAAO,CACd,UACT,IAUI,CAVJzI,EAUI,IAVJO,GAUI,CAHFJ,EAEUE,EAAA,CAFD,SAAI,WACX,IAAuB,CAAvBF,EAAuBC,EAAA,CAAd,KAAK,OAAM,wBAGf,IAEb,iBAFa,QAEb,qBAEFD,EAAkBiT,EAAA,EAClBjT,EAA6BkT,GAAA,CAAjB,MAAM,SAAQ,IAG5BlT,EAAmEmT,GAAA,CAAtD,KAAM3S,EAAAmS,CAAA,EAAa,aAAUrO,EAAA,KAAAA,EAAA,GAAAnD,GAAEwR,EAAA,MAAaxR,EAAA,mBACzDnB,EAA6DoT,GAAA,CAAlD,KAAM5S,EAAAqS,CAAA,EAAW,aAAUvO,EAAA,KAAAA,EAAA,GAAAnD,GAAE0R,EAAA,MAAW1R,EAAA,mBACnDnB,EAA6DqT,GAAA,CAAlD,KAAM7S,EAAAsS,CAAA,EAAW,aAAUxO,EAAA,KAAAA,EAAA,GAAAnD,GAAE2R,EAAA,MAAW3R,EAAA,mBACnDnB,EAAesT,EAAA,EAEftT,EAKEuT,GAAA,CAJC,KAAM/S,EAAA6G,CAAA,EACN,KAAM7G,EAAA8G,CAAA,EACN,aAAUhD,EAAA,KAAAA,EAAA,GAAAnD,GAAEkG,EAAA,MAAYlG,GACxB,aAAUmD,EAAA,KAAAA,EAAA,GAAAnD,GAAEmG,EAAA,MAAYnG,EAAA,gCAIf,CAAAX,EAAA0F,CAAA,IAAY1F,EAAAoF,CAAA,GAD1BlG,EAAA,EAAAC,EAiBM,MAjBNU,GAiBMiE,EAAA,MAAAA,EAAA,KATJzE,EAQM,OARD,aAAM,CACTA,EAAoB,YAAd,SAAO,EACbA,EAKC,KAJC,KAAK,2CACL,OAAO,SACP,eAAe,eACd,MAAI","names":["createDataKey","key","ChevronLeftIcon","defineComponent","h","SwitcherIcon","zero","n1","createLeftBorderStyle","type","cM","c","cB","cE","createTopBorderStyle","style$3","cNotM","buttonGroupProps","__unplugin_components_6$1","props","mergedClsPrefixRef","mergedRtlRef","useConfig","useStyle","style","provide","buttonGroupInjectionKey","useRtl","mergedClsPrefix","self","vars","fontWeight","textColor1","textColor2","textColorDisabled","dividerColor","fontSize","collapseLight","commonLight","style$2","fadeInHeightExpandTransition","collapseProps","useTheme","collapseInjectionKey","createInjectionKey","__unplugin_components_10","slots","inlineThemeDisabled","uncontrolledExpandedNamesRef","ref","controlledExpandedNamesRef","computed","mergedExpandedNamesRef","useMergedState","themeRef","doUpdateExpandedNames","names","_onUpdateExpandedNames","onUpdateExpandedNames","onExpandedNamesChange","call","doItemHeaderClick","info","onItemHeaderClick","toggleItem","collapse","name","event","accordion","expandedNames","activeNames","index","activeName","rtlEnabledRef","cssVarsRef","cubicBezierEaseInOut","titleFontWeight","titlePadding","titleTextColor","titleTextColorDisabled","textColor","arrowColor","titleFontSize","arrowColorDisabled","itemMargin","themeClassHandle","useThemeClass","_a","NCollapseItemContent","useFalseUntilTruthy","toRef","NFadeInExpandTransition","show","displayDirective","onceTrue","clsPrefix","useVShow","contentNode","withDirectives","vShow","collapseItemProps","__unplugin_components_9","randomName","createId","mergedNameRef","useMemo","NCollapse","inject","throwError","expandedNamesRef","collapseSlots","collapsedRef","expandedName","e","happensInArea","happensIn","$slots","arrowPlacement","collapsed","mergedDisplayDirective","disabled","triggerAreas","headerNode","resolveSlotWithTypedProps","headerExtraSlot","arrowSlot","area","NBaseIcon","ArrowLeftIcon","ArrowRightIcon","resolveWrappedSlotWithProps","children","sizeVariables","cardColor","modalColor","popoverColor","tableHeaderColor","tableColorStriped","borderRadius","fontWeightStrong","lineHeight","fontSizeSmall","fontSizeMedium","fontSizeLarge","composite","tableLight","borderRadiusSmall","hoverColor","pressedColor","primaryColor","textColor3","changeColor","treeLight","createTheme","checkboxLight","scrollbarLight","emptyLight","scrollbarProps","Scrollbar","scrollbarInstRef","args","NScrollbar","style$1","insideModal","insidePopover","tableProps","__unplugin_components_7","size","borderColor","tdColor","tdColorModal","tdColorPopover","thColor","thColorModal","thColorPopover","thTextColor","tdTextColor","thFontWeight","borderColorModal","borderColorPopover","tdColorStriped","tdColorStripedModal","tdColorStripedPopover","createKey","tdPadding","thPadding","__unplugin_components_6","__unplugin_components_3","__unplugin_components_5","treeSelectInjectionKey","renderDropMark","position","offsetLevel","indent","el","cssPosition","defaultAllowDrop","dropPosition","node","treeInjectionKey","useKeyboard","fNodesRef","mergedExpandedKeysRef","mergedSelectedKeysRef","mergedCheckedKeysRef","handleCheck","handleSelect","handleSwitcherClick","mergedSelectedKeys","treeSelectInjection","pendingNodeKeyRef","handleKeydown","pendingNodeKey","enterBehavior","fNodes","fIndex","tmNode","pendingNode","parentTmNode","NTreeNodeCheckbox","NTree","doCheck","value","onCheck","handleUpdateValue","mergedTheme","checked","indeterminate","focusable","NCheckbox","NTreeNodeContent","renderLabelRef","renderPrefixRef","renderSuffixRef","labelFieldRef","selfRef","doClick","onClick","handleClick","labelField","nodeProps","selected","renderLabel","renderPrefix","renderSuffix","onDragstart","rawNode","prefix","suffix","label","render","NTreeNodeSwitcher","renderSwitcherIconRef","expanded","hide","NIconSwitchTransition","NBaseLoading","renderSwitcherIcon","useMergedCheckStrategy","isNodeDisabled","disabledField","traverse","nodes","childrenField","callback","callbackAfter","keysWithFilter","pattern","keyField","filter","keys","highlightKeySet","path","i","isBrowser","emptyImage","filterTree","tree","visitedTailKeys","visitedNonTailKeys","expandedKeys","filteredTree","visit","t","n","build","sibs","isVisitedTail","isVisitedNonTail","clonedNode","TreeNode","droppingNodeParentRef","droppingMouseNodeRef","draggingNodeRef","droppingPositionRef","droppingOffsetLevelRef","nodePropsRef","indentRef","blockLineRef","checkboxPlacementRef","checkOnClickRef","disabledFieldRef","showLineRef","overrideDefaultNodeClickBehaviorRef","checkboxDisabledRef","nodeIsDisabledRef","disabledRef","resolvedNodePropsRef","contentInstRef","contentElRef","onMounted","onLoad","selectableRef","checkableRef","checkedRef","mergedCheckOnClickRef","checkable","checkOnClick","_handleClick","expandOnClick","selectable","mergedCheckOnClick","handleNodeClick","_b","overrideDefaultNodeClickBehavior","shouldOverride","handleContentClick","handleLineClick","handleDragStart","handleDragEnter","handleDragOver","handleDragEnd","handleDragLeave","handleDrop","indentNodes","cursor","repeat","draggingNode","droppingPosition","droppingMouseNode","droppingNodeParent","highlight","draggable","blockLine","pending","internalScrollable","checkboxPlacement","dragEventHandlers","dataKey","checkboxOnRight","checkboxNode","MotionWrapper","FadeInExpandTransition","pxfy","iconSwitchTransitionNode","iconSwitchTransition","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","rejected","result","createTreeMateOptions","getChildren","treeSharedProps","treeProps","__unplugin_components_1","selfElRef","virtualListInstRef","getScrollContainer","getScrollContent","mergedFilterRef","filteredTreeInfoRef","displayTreeMateRef","createTreeMate","dataTreeMateRef","watchProps","uncontrolledCheckedKeysRef","watchEffect","controlledCheckedKeysRef","checkedStatusRef","mergedCheckStrategyRef","displayedCheckedKeysRef","displayedIndeterminateKeysRef","indeterminateKeys","uncontrolledSelectedKeysRef","controlledSelectedKeysRef","uncontrolledExpandedKeysRef","initUncontrolledExpandedKeys","controlledExpandedKeysRef","expandTimerId","nodeKeyToBeExpanded","uncontrolledHighlightKeySetRef","controlledHighlightKeySetRef","mergedHighlightKeySetRef","loadingKeysRef","expandedNonLoadingKeysRef","dragStartX","droppingNodeRef","droppingNode","isDataReset","watch","nextTick","resetDndState","expandAnimationDisabled","disableExpandAnimationForOneTick","memoizedExpandedKeys","oldValue","expandedKeysAfterChange","doUpdateExpandedKeys","getOptionsByKeys","triggerLoading","loadingKeys","resetDragExpandState","loadError","displayTreeMate","getNode","aipRef","afNodesRef","prevValue","syncScrollbar","nodeHeight","depx","prevVSet","addedKey","removedKey","expandedKey","currentVSet","virtualScroll","viewportHeight","viewportItemCount","baseExpandedKeys","expandedNodeIndex","expandedChildren","flatten","collapsedNodeIndex","collapsedNodeChildren","collapsedChildren","getFIndexRef","createIndexGetter","mergedFNodesRef","scrollbarInst","handleAfterEnter","option","meta","_onUpdateExpandedKeys","onUpdateExpandedKeys","doUpdateCheckedKeys","_onUpdateCheckedKeys","onUpdateCheckedKeys","doUpdateIndeterminateKeys","_onUpdateIndeterminateKeys","onUpdateIndeterminateKeys","doUpdateSelectedKeys","_onUpdateSelectedKeys","onUpdateSelectedKeys","doDragEnter","onDragenter","doDragLeave","onDragleave","doDragEnd","onDragend","doDragStart","doDragOver","onDragover","doDrop","onDrop","resetDragState","resetDropState","checkedAction","checkedKeys","toggleExpand","mergedExpandedKeys","expandNodeId","nodeToBeExpanded","nextKeys","siblingKeySet","selectedKeys","expandDragEnterNode","expand","handleDragLeaveTree","emit","allowDrop","elOffsetHeight","elClientTop","eventOffsetY","mousePosition","getFindex","finalDropNode","finalDropPosition","hoverNodeFIndex","mouseAtExpandedNonLeafNode","offset","nextNode","prevNode","handleScroll","handleResize","handleFocusout","selfEl","targetEl","scrollTo","options","exposedMethods","nodeBorderRadius","nodeColorHover","nodeColorPressed","nodeColorActive","loadingColor","nodeTextColor","nodeTextColorDisabled","dropMarkColor","nodeWrapperPadding","lineColor","lineOffsetTop","getPadding","lineOffsetBottom","nodeContentHeight","internalRenderEmpty","blockNode","internalFocusable","rtlEnabled","mergedFocusable","tabindex","treeClass","createNode","NTreeNode","internalScrollablePadding","padding","NxScrollbar","VVirtualList","item","resolveSlot","NEmpty","TrackGraphLoader","__vitePreload","TrackGraph","defineAsyncComponent","__props","allUnitResults","singleUnitResults","v","showUnitResults","filterUnitResults","shallowRef","switchUnitResult","unitResult","getNodeStyle","UnitSelectorExpression","u","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_SvgIcon","_component_NButton","onClose","_hoisted_4","_hoisted_5","queryResult","_createBlock","_unref","_component_NScrollbar","_hoisted_6","SelectorText","selector","_hoisted_7","_hoisted_8","_Fragment","_renderList","_normalizeStyle","colorList","$event","innerShow","showStatus","watchImmediate","r","useEventListener","data","TrackCard","_mergeProps","onUpdateShow","useDragMove","xFilter","target","prevOffset","shallowReactive","prevEv","preventSelection","ev","startMove","move","dx","dy","endMove","windowEndMove","top","bottom","left","right","onUnmounted","newValue","currentMaxZIndex","useZindex","zIndex","transition","isLeft","isTop","leftDragBar","w","rightDragBar","currentStyle","width","widthStyle","yStyle","moved","box","boxDiv","updateTarget","arg","setTop","_Teleport","_normalizeClass","_cache","_renderSlot","_ctx","sizeDraggable","getRemoteImportId","id","useSnapshotStore","createSharedComposable","route","useRoute","router","useRouter","snapshotId","toInteger","importId","snapshotImportId","imageId","snapshotImageId","snapshot","getAppInfo","screenshot","screenshotUrl","redirected","update","useTask","snapshotStorage","screenshotStorage","remoteImportId","loading","importSnapshotId","autoUpload","gmOk","settingsStore","exportSnapshotAsImageId","exportSnapshotAsImportId","detectSnapshot","rootNode","listToTree","missNodeSize","focusNode","focusTime","focusPosition","overlapNodes","updateFocusNode","updatePosition","resultNodes","findNodesByXy","trackShow","trackData","attrTip","lenAttrNames","attrs","attr","selectText","getNodeSelectorText","DraggableCard","_withCtx","onRef","_component_NTable","_component_NTbody","attrx","_component_NTr","_component_NTd","_toDisplayString","_component_NTooltip","_component_NIcon","_createTextVNode","_component_NEllipsis","copy","_component_NCard","_component_NSpace","resultNode","getNodeLabel","windowSize","useWindowSize","vw","gkdWidth","snapshotStore","text","lazyText","refDebounced","toArray","s","checkRule","obj","matches","anyMatches","excludeMatches","resolvedMatches","parseSelector","message","matchesResult","notIndex","resolvedAnyMatches","anyMatchesResult","resolvedExcludeMatches","excludeMatchesResult","isObj","dataRef","JSON5","group","rules","rule","errorText","targetNode","_component_NInput","imgBounding","useElementBounding","hoverPositionStyle","hoverPosition","boxHoverPosition","boxHoverPerPosition","imgHover","imgRef","imgLoadTime","clickImg","img","imgRect","innerHeight","offsetTop","x","y","percent","imgSize","useElementSize","positionStyle","imgWidth","imgHeight","ox","oy","toFixedNumber","imgMove","dayjs","MiniHoverImg","useStorageStore","searchText","selectorResults","searchSelector","errorWrap","GkdException","results","searchString","stack","refreshExpandedKeys","newResult","newNode","allKeys","newKeys","k","searchBySelector","errorTry","enableSearchBySelector","wasmLoadTask","count","base64url.decode","generateRules","snapshotUrls","getImportUrl","exampleUrls","getImagUrl","fastQuery","FastQuery","hasZipId","shareResult","importUrl","base64url.encode","_component_NRadioGroup","_component_NRadio","_component_NInputGroup","_component_NCollapse","_component_NCollapseItem","_component_NButtonGroup","_withModifiers","emptyArray","GapList","ctx","defaultNodes","gapNodes","_d","_c","lastClickId","Number","NaN","then","delay","document","querySelector","scrollIntoView","behavior","block","parent","Set","add","length","every","has","treeRef","treeFilter","treeNodeProps","color","class","String","deviceName","getDevice","manufacturer","release","isSystem","activityId","appId","startsWith","substring","onDelete","success","replace","gkdVersionName","getGkdAppInfo","versionName","undefined","gap","trigger","versionCode","toString","ActionCard","showPreview","bg","xScrollable","_component_NTree","showLine","loadingBar","searchShow","useStorage","ruleShow","attrShow","clickSettings","_component_RouterLink","ScreenshotCard","WindowCard","SearchCard","RuleCard","AttrCard","OverlapCard","TrackModal"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],"sources":["../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/_utils/vue/create-data-key.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/_internal/icons/ChevronLeft.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/_internal/icons/Switcher.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/button-group/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/button-group/src/ButtonGroup.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/collapse/styles/light.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/collapse/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/collapse/src/Collapse.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/collapse/src/CollapseItemContent.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/collapse/src/CollapseItem.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/table/styles/_common.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/table/styles/light.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/tree/styles/light.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/scrollbar/src/Scrollbar.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/table/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/table/src/Table.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/table/src/Tbody.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/table/src/Td.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/table/src/Tr.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/tree-select/src/interface.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/tree/src/dnd.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/tree/src/interface.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/tree/src/keyboard.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/tree/src/TreeNodeCheckbox.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/tree/src/TreeNodeContent.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/tree/src/TreeNodeSwitcher.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/tree/src/utils.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/tree/src/TreeNode.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/tree/src/MotionWrapper.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/tree/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/tree/src/Tree.mjs","../../src/components/TrackCard.vue","../../src/components/TrackModal.vue","../../src/utils/draggable.ts","../../src/components/DraggableCard.vue","../../src/views/snapshot/snapshot.ts","../../src/views/snapshot/AttrCard.vue","../../src/views/snapshot/OverlapCard.vue","../../src/utils/size.ts","../../src/views/snapshot/RuleCard.vue","../../src/views/snapshot/MiniHoverImg.vue","../../src/views/snapshot/ScreenshotCard.vue","../../src/views/snapshot/SearchCard.vue","../../src/components/GapList.ts","../../src/views/snapshot/WindowCard.vue","../../src/views/snapshot/SnapshotPage.vue"],"sourcesContent":["export function createDataKey(key) {\n return typeof key === 'string' ? `s-${key}` : `n-${key}`;\n}","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'ChevronLeft',\n render() {\n return h(\"svg\", {\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, h(\"path\", {\n d: \"M10.3536 3.14645C10.5488 3.34171 10.5488 3.65829 10.3536 3.85355L6.20711 8L10.3536 12.1464C10.5488 12.3417 10.5488 12.6583 10.3536 12.8536C10.1583 13.0488 9.84171 13.0488 9.64645 12.8536L5.14645 8.35355C4.95118 8.15829 4.95118 7.84171 5.14645 7.64645L9.64645 3.14645C9.84171 2.95118 10.1583 2.95118 10.3536 3.14645Z\",\n fill: \"currentColor\"\n }));\n }\n});","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Switcher',\n render() {\n return h(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\"\n }, h(\"path\", {\n d: \"M12 8l10 8l-10 8z\"\n }));\n }\n});","import { c, cB, cE, cM, cNotM } from \"../../../_utils/cssr/index.mjs\";\nexport const zero = '0!important';\nexport const n1 = '-1px!important';\nfunction createLeftBorderStyle(type) {\n return cM(`${type}-type`, [c('& +', [cB('button', {}, [cM(`${type}-type`, [cE('border', {\n borderLeftWidth: zero\n }), cE('state-border', {\n left: n1\n })])])])]);\n}\nfunction createTopBorderStyle(type) {\n return cM(`${type}-type`, [c('& +', [cB('button', [cM(`${type}-type`, [cE('border', {\n borderTopWidth: zero\n }), cE('state-border', {\n top: n1\n })])])])]);\n}\nexport default cB('button-group', `\n flex-wrap: nowrap;\n display: inline-flex;\n position: relative;\n`, [cNotM('vertical', {\n flexDirection: 'row'\n}, [cNotM('rtl', [cB('button', [c('&:first-child:not(:last-child)', `\n margin-right: ${zero};\n border-top-right-radius: ${zero};\n border-bottom-right-radius: ${zero};\n `), c('&:last-child:not(:first-child)', `\n margin-left: ${zero};\n border-top-left-radius: ${zero};\n border-bottom-left-radius: ${zero};\n `), c('&:not(:first-child):not(:last-child)', `\n margin-left: ${zero};\n margin-right: ${zero};\n border-radius: ${zero};\n `), createLeftBorderStyle('default'), cM('ghost', [createLeftBorderStyle('primary'), createLeftBorderStyle('info'), createLeftBorderStyle('success'), createLeftBorderStyle('warning'), createLeftBorderStyle('error')])])])]), cM('vertical', {\n flexDirection: 'column'\n}, [cB('button', [c('&:first-child:not(:last-child)', `\n margin-bottom: ${zero};\n margin-left: ${zero};\n margin-right: ${zero};\n border-bottom-left-radius: ${zero};\n border-bottom-right-radius: ${zero};\n `), c('&:last-child:not(:first-child)', `\n margin-top: ${zero};\n margin-left: ${zero};\n margin-right: ${zero};\n border-top-left-radius: ${zero};\n border-top-right-radius: ${zero};\n `), c('&:not(:first-child):not(:last-child)', `\n margin: ${zero};\n border-radius: ${zero};\n `), createTopBorderStyle('default'), cM('ghost', [createTopBorderStyle('primary'), createTopBorderStyle('info'), createTopBorderStyle('success'), createTopBorderStyle('warning'), createTopBorderStyle('error')])])])]);","import { defineComponent, h, provide } from 'vue';\nimport { useConfig, useStyle } from \"../../_mixins/index.mjs\";\nimport { useRtl } from \"../../_mixins/use-rtl.mjs\";\nimport { buttonGroupInjectionKey } from \"./context.mjs\";\nimport style from \"./styles/index.cssr.mjs\";\nexport const buttonGroupProps = {\n size: {\n type: String,\n default: undefined\n },\n vertical: Boolean\n};\nexport default defineComponent({\n name: 'ButtonGroup',\n props: buttonGroupProps,\n setup(props) {\n const {\n mergedClsPrefixRef,\n mergedRtlRef\n } = useConfig(props);\n useStyle('-button-group', style, mergedClsPrefixRef);\n provide(buttonGroupInjectionKey, props);\n const rtlEnabledRef = useRtl('ButtonGroup', mergedRtlRef, mergedClsPrefixRef);\n return {\n rtlEnabled: rtlEnabledRef,\n mergedClsPrefix: mergedClsPrefixRef\n };\n },\n render() {\n const {\n mergedClsPrefix\n } = this;\n return h(\"div\", {\n class: [`${mergedClsPrefix}-button-group`, this.rtlEnabled && `${mergedClsPrefix}-button-group--rtl`, this.vertical && `${mergedClsPrefix}-button-group--vertical`],\n role: \"group\"\n }, this.$slots);\n }\n});","import { commonLight } from \"../../_styles/common/index.mjs\";\nexport function self(vars) {\n const {\n fontWeight,\n textColor1,\n textColor2,\n textColorDisabled,\n dividerColor,\n fontSize\n } = vars;\n return {\n titleFontSize: fontSize,\n titleFontWeight: fontWeight,\n dividerColor,\n titleTextColor: textColor1,\n titleTextColorDisabled: textColorDisabled,\n fontSize,\n textColor: textColor2,\n arrowColor: textColor2,\n arrowColorDisabled: textColorDisabled,\n itemMargin: '16px 0 0 0',\n titlePadding: '16px 0 0 0'\n };\n}\nconst collapseLight = {\n name: 'Collapse',\n common: commonLight,\n self\n};\nexport default collapseLight;","import { fadeInHeightExpandTransition } from \"../../../_styles/transitions/fade-in-height-expand.cssr.mjs\";\nimport { c, cB, cE, cM, cNotM } from \"../../../_utils/cssr/index.mjs\";\n// vars:\n// --n-font-size\n// --n-bezier\n// --n-text-color\n// --n-divider-color\n// --n-title-padding\n// --n-title-font-size\n// --n-title-text-color\n// --n-title-font-weight\n// --n-arrow-color\n// --n-arrow-color-disabled\n// --n-title-text-color-disabled\n// --n-item-margin\nexport default cB('collapse', 'width: 100%;', [cB('collapse-item', `\n font-size: var(--n-font-size);\n color: var(--n-text-color);\n transition:\n color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n margin: var(--n-item-margin);\n `, [cM('disabled', [cE('header', 'cursor: not-allowed;', [cE('header-main', `\n color: var(--n-title-text-color-disabled);\n `), cB('collapse-item-arrow', `\n color: var(--n-arrow-color-disabled);\n `)])]), cB('collapse-item', 'margin-left: 32px;'), c('&:first-child', 'margin-top: 0;'), c('&:first-child >', [cE('header', 'padding-top: 0;')]), cM('left-arrow-placement', [cE('header', [cB('collapse-item-arrow', 'margin-right: 4px;')])]), cM('right-arrow-placement', [cE('header', [cB('collapse-item-arrow', 'margin-left: 4px;')])]), cE('content-wrapper', [cE('content-inner', 'padding-top: 16px;'), fadeInHeightExpandTransition({\n duration: '0.15s'\n})]), cM('active', [cE('header', [cM('active', [cB('collapse-item-arrow', 'transform: rotate(90deg);')])])]), c('&:not(:first-child)', 'border-top: 1px solid var(--n-divider-color);'), cNotM('disabled', [cM('trigger-area-main', [cE('header', [cE('header-main', 'cursor: pointer;'), cB('collapse-item-arrow', 'cursor: default;')])]), cM('trigger-area-arrow', [cE('header', [cB('collapse-item-arrow', 'cursor: pointer;')])]), cM('trigger-area-extra', [cE('header', [cE('header-extra', 'cursor: pointer;')])])]), cE('header', `\n font-size: var(--n-title-font-size);\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n transition: color .3s var(--n-bezier);\n position: relative;\n padding: var(--n-title-padding);\n color: var(--n-title-text-color);\n `, [cE('header-main', `\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n font-weight: var(--n-title-font-weight);\n transition: color .3s var(--n-bezier);\n flex: 1;\n color: var(--n-title-text-color);\n `), cE('header-extra', `\n display: flex;\n align-items: center;\n transition: color .3s var(--n-bezier);\n color: var(--n-text-color);\n `), cB('collapse-item-arrow', `\n display: flex;\n transition:\n transform .15s var(--n-bezier),\n color .3s var(--n-bezier);\n font-size: 18px;\n color: var(--n-arrow-color);\n `)])])]);","import { useMergedState } from 'vooks';\nimport { computed, defineComponent, h, provide, ref } from 'vue';\nimport { useConfig, useTheme, useThemeClass } from \"../../_mixins/index.mjs\";\nimport { useRtl } from \"../../_mixins/use-rtl.mjs\";\nimport { call, createInjectionKey, warn } from \"../../_utils/index.mjs\";\nimport { collapseLight } from \"../styles/index.mjs\";\nimport style from \"./styles/index.cssr.mjs\";\nexport const collapseProps = Object.assign(Object.assign({}, useTheme.props), {\n defaultExpandedNames: {\n type: [Array, String],\n default: null\n },\n expandedNames: [Array, String],\n arrowPlacement: {\n type: String,\n default: 'left'\n },\n accordion: {\n type: Boolean,\n default: false\n },\n displayDirective: {\n type: String,\n default: 'if'\n },\n triggerAreas: {\n type: Array,\n default: () => ['main', 'extra', 'arrow']\n },\n onItemHeaderClick: [Function, Array],\n 'onUpdate:expandedNames': [Function, Array],\n onUpdateExpandedNames: [Function, Array],\n // deprecated\n onExpandedNamesChange: {\n type: [Function, Array],\n validator: () => {\n if (process.env.NODE_ENV !== 'production') {\n warn('collapse', '`on-expanded-names-change` is deprecated, please use `on-update:expanded-names` instead.');\n }\n return true;\n },\n default: undefined\n }\n});\nexport const collapseInjectionKey = createInjectionKey('n-collapse');\nexport default defineComponent({\n name: 'Collapse',\n props: collapseProps,\n slots: Object,\n setup(props, {\n slots\n }) {\n const {\n mergedClsPrefixRef,\n inlineThemeDisabled,\n mergedRtlRef\n } = useConfig(props);\n const uncontrolledExpandedNamesRef = ref(props.defaultExpandedNames);\n const controlledExpandedNamesRef = computed(() => props.expandedNames);\n const mergedExpandedNamesRef = useMergedState(controlledExpandedNamesRef, uncontrolledExpandedNamesRef);\n const themeRef = useTheme('Collapse', '-collapse', style, collapseLight, props, mergedClsPrefixRef);\n function doUpdateExpandedNames(names) {\n const {\n 'onUpdate:expandedNames': _onUpdateExpandedNames,\n onUpdateExpandedNames,\n onExpandedNamesChange\n } = props;\n if (onUpdateExpandedNames) {\n call(onUpdateExpandedNames, names);\n }\n if (_onUpdateExpandedNames) {\n call(_onUpdateExpandedNames, names);\n }\n if (onExpandedNamesChange) {\n call(onExpandedNamesChange, names);\n }\n uncontrolledExpandedNamesRef.value = names;\n }\n function doItemHeaderClick(info) {\n const {\n onItemHeaderClick\n } = props;\n if (onItemHeaderClick) {\n call(onItemHeaderClick, info);\n }\n }\n function toggleItem(collapse, name, event) {\n const {\n accordion\n } = props;\n const {\n value: expandedNames\n } = mergedExpandedNamesRef;\n if (accordion) {\n if (collapse) {\n doUpdateExpandedNames([name]);\n doItemHeaderClick({\n name,\n expanded: true,\n event\n });\n } else {\n doUpdateExpandedNames([]);\n doItemHeaderClick({\n name,\n expanded: false,\n event\n });\n }\n } else {\n if (!Array.isArray(expandedNames)) {\n doUpdateExpandedNames([name]);\n doItemHeaderClick({\n name,\n expanded: true,\n event\n });\n } else {\n const activeNames = expandedNames.slice();\n const index = activeNames.findIndex(activeName => name === activeName);\n if (~index) {\n activeNames.splice(index, 1);\n doUpdateExpandedNames(activeNames);\n doItemHeaderClick({\n name,\n expanded: false,\n event\n });\n } else {\n activeNames.push(name);\n doUpdateExpandedNames(activeNames);\n doItemHeaderClick({\n name,\n expanded: true,\n event\n });\n }\n }\n }\n }\n provide(collapseInjectionKey, {\n props,\n mergedClsPrefixRef,\n expandedNamesRef: mergedExpandedNamesRef,\n slots,\n toggleItem\n });\n const rtlEnabledRef = useRtl('Collapse', mergedRtlRef, mergedClsPrefixRef);\n const cssVarsRef = computed(() => {\n const {\n common: {\n cubicBezierEaseInOut\n },\n self: {\n titleFontWeight,\n dividerColor,\n titlePadding,\n titleTextColor,\n titleTextColorDisabled,\n textColor,\n arrowColor,\n fontSize,\n titleFontSize,\n arrowColorDisabled,\n itemMargin\n }\n } = themeRef.value;\n return {\n '--n-font-size': fontSize,\n '--n-bezier': cubicBezierEaseInOut,\n '--n-text-color': textColor,\n '--n-divider-color': dividerColor,\n '--n-title-padding': titlePadding,\n '--n-title-font-size': titleFontSize,\n '--n-title-text-color': titleTextColor,\n '--n-title-text-color-disabled': titleTextColorDisabled,\n '--n-title-font-weight': titleFontWeight,\n '--n-arrow-color': arrowColor,\n '--n-arrow-color-disabled': arrowColorDisabled,\n '--n-item-margin': itemMargin\n };\n });\n const themeClassHandle = inlineThemeDisabled ? useThemeClass('collapse', undefined, cssVarsRef, props) : undefined;\n return {\n rtlEnabled: rtlEnabledRef,\n mergedTheme: themeRef,\n mergedClsPrefix: mergedClsPrefixRef,\n cssVars: inlineThemeDisabled ? undefined : cssVarsRef,\n themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass,\n onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender\n };\n },\n render() {\n var _a;\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n return h(\"div\", {\n class: [`${this.mergedClsPrefix}-collapse`, this.rtlEnabled && `${this.mergedClsPrefix}-collapse--rtl`, this.themeClass],\n style: this.cssVars\n }, this.$slots);\n }\n});","import { useFalseUntilTruthy } from 'vooks';\nimport { defineComponent, h, toRef, vShow, withDirectives } from 'vue';\nimport { NFadeInExpandTransition } from \"../../_internal/index.mjs\";\nexport default defineComponent({\n name: 'CollapseItemContent',\n props: {\n displayDirective: {\n type: String,\n required: true\n },\n show: Boolean,\n clsPrefix: {\n type: String,\n required: true\n }\n },\n setup(props) {\n const onceTrueRef = useFalseUntilTruthy(toRef(props, 'show'));\n return {\n onceTrue: onceTrueRef\n };\n },\n render() {\n return h(NFadeInExpandTransition, null, {\n default: () => {\n const {\n show,\n displayDirective,\n onceTrue,\n clsPrefix\n } = this;\n const useVShow = displayDirective === 'show' && onceTrue;\n const contentNode = h(\"div\", {\n class: `${clsPrefix}-collapse-item__content-wrapper`\n }, h(\"div\", {\n class: `${clsPrefix}-collapse-item__content-inner`\n }, this.$slots));\n return useVShow ? withDirectives(contentNode, [[vShow, show]]) : show ? contentNode : null;\n }\n });\n }\n});","import { createId, happensIn } from 'seemly';\nimport { useMemo } from 'vooks';\nimport { computed, defineComponent, h, inject, toRef } from 'vue';\nimport { NBaseIcon } from \"../../_internal/index.mjs\";\nimport { ChevronLeftIcon as ArrowLeftIcon, ChevronRightIcon as ArrowRightIcon } from \"../../_internal/icons/index.mjs\";\nimport { useConfig } from \"../../_mixins/index.mjs\";\nimport { useRtl } from \"../../_mixins/use-rtl.mjs\";\nimport { resolveSlotWithTypedProps, resolveWrappedSlotWithProps, throwError } from \"../../_utils/index.mjs\";\nimport { collapseInjectionKey } from \"./Collapse.mjs\";\nimport NCollapseItemContent from \"./CollapseItemContent.mjs\";\nexport const collapseItemProps = {\n title: String,\n name: [String, Number],\n disabled: Boolean,\n displayDirective: String\n};\nexport default defineComponent({\n name: 'CollapseItem',\n props: collapseItemProps,\n setup(props) {\n const {\n mergedRtlRef\n } = useConfig(props);\n const randomName = createId();\n const mergedNameRef = useMemo(() => {\n var _a;\n return (_a = props.name) !== null && _a !== void 0 ? _a : randomName;\n });\n const NCollapse = inject(collapseInjectionKey);\n if (!NCollapse) {\n throwError('collapse-item', '`n-collapse-item` must be placed inside `n-collapse`.');\n }\n const {\n expandedNamesRef,\n props: collapseProps,\n mergedClsPrefixRef,\n slots: collapseSlots\n } = NCollapse;\n const collapsedRef = computed(() => {\n const {\n value: expandedNames\n } = expandedNamesRef;\n if (Array.isArray(expandedNames)) {\n const {\n value: name\n } = mergedNameRef;\n return !~expandedNames.findIndex(expandedName => expandedName === name);\n } else if (expandedNames) {\n const {\n value: name\n } = mergedNameRef;\n return name !== expandedNames;\n }\n return true;\n });\n const rtlEnabledRef = useRtl('Collapse', mergedRtlRef, mergedClsPrefixRef);\n return {\n rtlEnabled: rtlEnabledRef,\n collapseSlots,\n randomName,\n mergedClsPrefix: mergedClsPrefixRef,\n collapsed: collapsedRef,\n triggerAreas: toRef(collapseProps, 'triggerAreas'),\n mergedDisplayDirective: computed(() => {\n const {\n displayDirective\n } = props;\n if (displayDirective) {\n return displayDirective;\n } else {\n return collapseProps.displayDirective;\n }\n }),\n arrowPlacement: computed(() => {\n return collapseProps.arrowPlacement;\n }),\n handleClick(e) {\n let happensInArea = 'main';\n if (happensIn(e, 'arrow')) happensInArea = 'arrow';\n if (happensIn(e, 'extra')) happensInArea = 'extra';\n if (!collapseProps.triggerAreas.includes(happensInArea)) {\n return;\n }\n if (NCollapse && !props.disabled) {\n NCollapse.toggleItem(collapsedRef.value, mergedNameRef.value, e);\n }\n }\n };\n },\n render() {\n const {\n collapseSlots,\n $slots,\n arrowPlacement,\n collapsed,\n mergedDisplayDirective,\n mergedClsPrefix,\n disabled,\n triggerAreas\n } = this;\n const headerNode = resolveSlotWithTypedProps($slots.header, {\n collapsed\n }, () => [this.title]);\n const headerExtraSlot = $slots['header-extra'] || collapseSlots['header-extra'];\n const arrowSlot = $slots.arrow || collapseSlots.arrow;\n return h(\"div\", {\n class: [`${mergedClsPrefix}-collapse-item`, `${mergedClsPrefix}-collapse-item--${arrowPlacement}-arrow-placement`, disabled && `${mergedClsPrefix}-collapse-item--disabled`, !collapsed && `${mergedClsPrefix}-collapse-item--active`, triggerAreas.map(area => {\n return `${mergedClsPrefix}-collapse-item--trigger-area-${area}`;\n })]\n }, h(\"div\", {\n class: [`${mergedClsPrefix}-collapse-item__header`, !collapsed && `${mergedClsPrefix}-collapse-item__header--active`]\n }, h(\"div\", {\n class: `${mergedClsPrefix}-collapse-item__header-main`,\n onClick: this.handleClick\n }, arrowPlacement === 'right' && headerNode, h(\"div\", {\n class: `${mergedClsPrefix}-collapse-item-arrow`,\n key: this.rtlEnabled ? 0 : 1,\n \"data-arrow\": true\n }, resolveSlotWithTypedProps(arrowSlot, {\n collapsed\n }, () => [h(NBaseIcon, {\n clsPrefix: mergedClsPrefix\n }, {\n default: () => this.rtlEnabled ? h(ArrowLeftIcon, null) : h(ArrowRightIcon, null)\n })])), arrowPlacement === 'left' && headerNode), resolveWrappedSlotWithProps(headerExtraSlot, {\n collapsed\n }, children => h(\"div\", {\n class: `${mergedClsPrefix}-collapse-item__header-extra`,\n onClick: this.handleClick,\n \"data-extra\": true\n }, children))), h(NCollapseItemContent, {\n clsPrefix: mergedClsPrefix,\n displayDirective: mergedDisplayDirective,\n show: !collapsed\n }, $slots));\n }\n});","export default {\n thPaddingSmall: '6px',\n thPaddingMedium: '12px',\n thPaddingLarge: '12px',\n tdPaddingSmall: '6px',\n tdPaddingMedium: '12px',\n tdPaddingLarge: '12px'\n};","import { composite } from 'seemly';\nimport { commonLight } from \"../../_styles/common/index.mjs\";\nimport sizeVariables from \"./_common.mjs\";\nexport function self(vars) {\n const {\n dividerColor,\n cardColor,\n modalColor,\n popoverColor,\n tableHeaderColor,\n tableColorStriped,\n textColor1,\n textColor2,\n borderRadius,\n fontWeightStrong,\n lineHeight,\n fontSizeSmall,\n fontSizeMedium,\n fontSizeLarge\n } = vars;\n return Object.assign(Object.assign({}, sizeVariables), {\n fontSizeSmall,\n fontSizeMedium,\n fontSizeLarge,\n lineHeight,\n borderRadius,\n borderColor: composite(cardColor, dividerColor),\n borderColorModal: composite(modalColor, dividerColor),\n borderColorPopover: composite(popoverColor, dividerColor),\n tdColor: cardColor,\n tdColorModal: modalColor,\n tdColorPopover: popoverColor,\n tdColorStriped: composite(cardColor, tableColorStriped),\n tdColorStripedModal: composite(modalColor, tableColorStriped),\n tdColorStripedPopover: composite(popoverColor, tableColorStriped),\n thColor: composite(cardColor, tableHeaderColor),\n thColorModal: composite(modalColor, tableHeaderColor),\n thColorPopover: composite(popoverColor, tableHeaderColor),\n thTextColor: textColor1,\n tdTextColor: textColor2,\n thFontWeight: fontWeightStrong\n });\n}\nconst tableLight = {\n name: 'Table',\n common: commonLight,\n self\n};\nexport default tableLight;","import { changeColor } from 'seemly';\nimport { scrollbarLight } from \"../../_internal/scrollbar/styles/index.mjs\";\nimport { createTheme } from \"../../_mixins/use-theme.mjs\";\nimport { commonLight } from \"../../_styles/common/index.mjs\";\nimport { checkboxLight } from \"../../checkbox/styles/index.mjs\";\nimport { emptyLight } from \"../../empty/styles/index.mjs\";\nexport function self(vars) {\n const {\n borderRadiusSmall,\n dividerColor,\n hoverColor,\n pressedColor,\n primaryColor,\n textColor3,\n textColor2,\n textColorDisabled,\n fontSize\n } = vars;\n return {\n fontSize,\n lineHeight: '1.5',\n nodeHeight: '30px',\n nodeWrapperPadding: '3px 0',\n nodeBorderRadius: borderRadiusSmall,\n nodeColorHover: hoverColor,\n nodeColorPressed: pressedColor,\n nodeColorActive: changeColor(primaryColor, {\n alpha: 0.1\n }),\n arrowColor: textColor3,\n nodeTextColor: textColor2,\n nodeTextColorDisabled: textColorDisabled,\n loadingColor: primaryColor,\n dropMarkColor: primaryColor,\n lineColor: dividerColor\n };\n}\nconst treeLight = createTheme({\n name: 'Tree',\n common: commonLight,\n peers: {\n Checkbox: checkboxLight,\n Scrollbar: scrollbarLight,\n Empty: emptyLight\n },\n self\n});\nexport default treeLight;","import { defineComponent, h, ref } from 'vue';\nimport { NScrollbar } from \"../../_internal/index.mjs\";\nimport { useTheme } from \"../../_mixins/index.mjs\";\nexport const scrollbarProps = Object.assign(Object.assign({}, useTheme.props), {\n trigger: String,\n xScrollable: Boolean,\n onScroll: Function,\n contentClass: String,\n contentStyle: [Object, String],\n size: Number,\n yPlacement: {\n type: String,\n default: 'right'\n },\n xPlacement: {\n type: String,\n default: 'bottom'\n }\n});\nconst Scrollbar = defineComponent({\n name: 'Scrollbar',\n props: scrollbarProps,\n setup() {\n const scrollbarInstRef = ref(null);\n const exposedMethods = {\n scrollTo: (...args) => {\n var _a;\n (_a = scrollbarInstRef.value) === null || _a === void 0 ? void 0 : _a.scrollTo(args[0], args[1]);\n },\n scrollBy: (...args) => {\n var _a;\n (_a = scrollbarInstRef.value) === null || _a === void 0 ? void 0 : _a.scrollBy(args[0], args[1]);\n }\n };\n return Object.assign(Object.assign({}, exposedMethods), {\n scrollbarInstRef\n });\n },\n render() {\n return h(NScrollbar, Object.assign({\n ref: \"scrollbarInstRef\"\n }, this.$props), this.$slots);\n }\n});\nexport default Scrollbar;","import { c, cB, cM, cNotM, insideModal, insidePopover } from \"../../../_utils/cssr/index.mjs\";\n// vars:\n// --n-bezier\n// --n-td-color\n// --n-td-color-modal\n// --n-td-color-popover\n// --n-td-text-color\n// --n-border-color\n// --n-border-color-modal\n// --n-border-color-popover\n// --n-border-radius\n// --n-font-size\n// --n-th-color\n// --n-th-color-modal\n// --n-th-color-popover\n// --n-th-font-weight\n// --n-th-text-color\n// --n-line-height\n// --n-td-padding\n// --n-th-padding\nexport default c([cB('table', `\n font-size: var(--n-font-size);\n font-variant-numeric: tabular-nums;\n line-height: var(--n-line-height);\n width: 100%;\n border-radius: var(--n-border-radius) var(--n-border-radius) 0 0;\n text-align: left;\n border-collapse: separate;\n border-spacing: 0;\n overflow: hidden;\n background-color: var(--n-td-color);\n border-color: var(--n-merged-border-color);\n transition:\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier),\n color .3s var(--n-bezier);\n --n-merged-border-color: var(--n-border-color);\n `, [c('th', `\n white-space: nowrap;\n transition:\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier),\n color .3s var(--n-bezier);\n text-align: inherit;\n padding: var(--n-th-padding);\n vertical-align: inherit;\n text-transform: none;\n border: 0px solid var(--n-merged-border-color);\n font-weight: var(--n-th-font-weight);\n color: var(--n-th-text-color);\n background-color: var(--n-th-color);\n border-bottom: 1px solid var(--n-merged-border-color);\n border-right: 1px solid var(--n-merged-border-color);\n `, [c('&:last-child', `\n border-right: 0px solid var(--n-merged-border-color);\n `)]), c('td', `\n transition:\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier),\n color .3s var(--n-bezier);\n padding: var(--n-td-padding);\n color: var(--n-td-text-color);\n background-color: var(--n-td-color);\n border: 0px solid var(--n-merged-border-color);\n border-right: 1px solid var(--n-merged-border-color);\n border-bottom: 1px solid var(--n-merged-border-color);\n `, [c('&:last-child', `\n border-right: 0px solid var(--n-merged-border-color);\n `)]), cM('bordered', `\n border: 1px solid var(--n-merged-border-color);\n border-radius: var(--n-border-radius);\n `, [c('tr', [c('&:last-child', [c('td', `\n border-bottom: 0 solid var(--n-merged-border-color);\n `)])])]), cM('single-line', [c('th', `\n border-right: 0px solid var(--n-merged-border-color);\n `), c('td', `\n border-right: 0px solid var(--n-merged-border-color);\n `)]), cM('single-column', [c('tr', [c('&:not(:last-child)', [c('td', `\n border-bottom: 0px solid var(--n-merged-border-color);\n `)])])]), cM('striped', [c('tr:nth-of-type(even)', [c('td', 'background-color: var(--n-td-color-striped)')])]), cNotM('bottom-bordered', [c('tr', [c('&:last-child', [c('td', `\n border-bottom: 0px solid var(--n-merged-border-color);\n `)])])])]), insideModal(cB('table', `\n background-color: var(--n-td-color-modal);\n --n-merged-border-color: var(--n-border-color-modal);\n `, [c('th', `\n background-color: var(--n-th-color-modal);\n `), c('td', `\n background-color: var(--n-td-color-modal);\n `)])), insidePopover(cB('table', `\n background-color: var(--n-td-color-popover);\n --n-merged-border-color: var(--n-border-color-popover);\n `, [c('th', `\n background-color: var(--n-th-color-popover);\n `), c('td', `\n background-color: var(--n-td-color-popover);\n `)]))]);","import { computed, defineComponent, h } from 'vue';\nimport { useConfig, useTheme, useThemeClass } from \"../../_mixins/index.mjs\";\nimport { useRtl } from \"../../_mixins/use-rtl.mjs\";\nimport { createKey } from \"../../_utils/index.mjs\";\nimport { tableLight } from \"../styles/index.mjs\";\nimport style from \"./styles/index.cssr.mjs\";\nexport const tableProps = Object.assign(Object.assign({}, useTheme.props), {\n bordered: {\n type: Boolean,\n default: true\n },\n bottomBordered: {\n type: Boolean,\n default: true\n },\n singleLine: {\n type: Boolean,\n default: true\n },\n striped: Boolean,\n singleColumn: Boolean,\n size: {\n type: String,\n default: 'medium'\n }\n});\nexport default defineComponent({\n name: 'Table',\n props: tableProps,\n setup(props) {\n const {\n mergedClsPrefixRef,\n inlineThemeDisabled,\n mergedRtlRef\n } = useConfig(props);\n const themeRef = useTheme('Table', '-table', style, tableLight, props, mergedClsPrefixRef);\n const rtlEnabledRef = useRtl('Table', mergedRtlRef, mergedClsPrefixRef);\n const cssVarsRef = computed(() => {\n const {\n size\n } = props;\n const {\n self: {\n borderColor,\n tdColor,\n tdColorModal,\n tdColorPopover,\n thColor,\n thColorModal,\n thColorPopover,\n thTextColor,\n tdTextColor,\n borderRadius,\n thFontWeight,\n lineHeight,\n borderColorModal,\n borderColorPopover,\n tdColorStriped,\n tdColorStripedModal,\n tdColorStripedPopover,\n [createKey('fontSize', size)]: fontSize,\n [createKey('tdPadding', size)]: tdPadding,\n [createKey('thPadding', size)]: thPadding\n },\n common: {\n cubicBezierEaseInOut\n }\n } = themeRef.value;\n return {\n '--n-bezier': cubicBezierEaseInOut,\n '--n-td-color': tdColor,\n '--n-td-color-modal': tdColorModal,\n '--n-td-color-popover': tdColorPopover,\n '--n-td-text-color': tdTextColor,\n '--n-border-color': borderColor,\n '--n-border-color-modal': borderColorModal,\n '--n-border-color-popover': borderColorPopover,\n '--n-border-radius': borderRadius,\n '--n-font-size': fontSize,\n '--n-th-color': thColor,\n '--n-th-color-modal': thColorModal,\n '--n-th-color-popover': thColorPopover,\n '--n-th-font-weight': thFontWeight,\n '--n-th-text-color': thTextColor,\n '--n-line-height': lineHeight,\n '--n-td-padding': tdPadding,\n '--n-th-padding': thPadding,\n '--n-td-color-striped': tdColorStriped,\n '--n-td-color-striped-modal': tdColorStripedModal,\n '--n-td-color-striped-popover': tdColorStripedPopover\n };\n });\n const themeClassHandle = inlineThemeDisabled ? useThemeClass('table', computed(() => {\n return props.size[0];\n }), cssVarsRef, props) : undefined;\n return {\n rtlEnabled: rtlEnabledRef,\n mergedClsPrefix: mergedClsPrefixRef,\n cssVars: inlineThemeDisabled ? undefined : cssVarsRef,\n themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass,\n onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender\n };\n },\n render() {\n var _a;\n const {\n mergedClsPrefix\n } = this;\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n return h(\"table\", {\n class: [`${mergedClsPrefix}-table`, this.themeClass, {\n [`${mergedClsPrefix}-table--rtl`]: this.rtlEnabled,\n [`${mergedClsPrefix}-table--bottom-bordered`]: this.bottomBordered,\n [`${mergedClsPrefix}-table--bordered`]: this.bordered,\n [`${mergedClsPrefix}-table--single-line`]: this.singleLine,\n [`${mergedClsPrefix}-table--single-column`]: this.singleColumn,\n [`${mergedClsPrefix}-table--striped`]: this.striped\n }],\n style: this.cssVars\n }, this.$slots);\n }\n});","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Tbody',\n render() {\n return h(\"tbody\", null, this.$slots);\n }\n});","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Td',\n render() {\n return h(\"td\", null, this.$slots);\n }\n});","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Tr',\n render() {\n return h(\"tr\", null, this.$slots);\n }\n});","import { createInjectionKey } from \"../../_utils/index.mjs\";\nexport const treeSelectInjectionKey = createInjectionKey('n-tree-select');","import { h } from 'vue';\nexport function renderDropMark({\n position,\n offsetLevel,\n indent,\n el\n}) {\n const style = {\n position: 'absolute',\n boxSizing: 'border-box',\n right: 0\n };\n if (position === 'inside') {\n style.left = 0;\n style.top = 0;\n style.bottom = 0;\n style.borderRadius = 'inherit';\n style.boxShadow = 'inset 0 0 0 2px var(--n-drop-mark-color)';\n } else {\n const cssPosition = position === 'before' ? 'top' : 'bottom';\n style[cssPosition] = 0;\n // The left prop should be modified when tree's style is changed\n // Maybe it is possible to use content left\n style.left = `${el.offsetLeft + 6 - offsetLevel * indent}px`;\n style.height = '2px';\n style.backgroundColor = 'var(--n-drop-mark-color)';\n style.transformOrigin = cssPosition;\n style.borderRadius = '1px';\n style.transform = position === 'before' ? 'translateY(-4px)' : 'translateY(4px)';\n }\n return h(\"div\", {\n style: style\n });\n}\nexport function defaultAllowDrop({\n dropPosition,\n node\n}) {\n if (node.isLeaf === false) return true;\n if (node.children) {\n return true;\n }\n return dropPosition !== 'inside';\n}","import { createInjectionKey } from \"../../_utils/index.mjs\";\nexport const treeInjectionKey = createInjectionKey('n-tree');","import { inject, ref } from 'vue';\nimport { treeSelectInjectionKey } from \"../../tree-select/src/interface.mjs\";\nexport function useKeyboard({\n props,\n fNodesRef,\n mergedExpandedKeysRef,\n mergedSelectedKeysRef,\n mergedCheckedKeysRef,\n handleCheck,\n handleSelect,\n handleSwitcherClick\n}) {\n const {\n value: mergedSelectedKeys\n } = mergedSelectedKeysRef;\n // If it's used in tree-select, make it take over pending state\n const treeSelectInjection = inject(treeSelectInjectionKey, null);\n const pendingNodeKeyRef = treeSelectInjection ? treeSelectInjection.pendingNodeKeyRef : ref(mergedSelectedKeys.length ? mergedSelectedKeys[mergedSelectedKeys.length - 1] : null);\n function handleKeydown(e) {\n var _a;\n if (!props.keyboard) return {\n enterBehavior: null\n };\n const {\n value: pendingNodeKey\n } = pendingNodeKeyRef;\n let enterBehavior = null;\n if (pendingNodeKey === null) {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault();\n }\n if (['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight'].includes(e.key)) {\n if (pendingNodeKey === null) {\n const {\n value: fNodes\n } = fNodesRef;\n let fIndex = 0;\n while (fIndex < fNodes.length) {\n if (!fNodes[fIndex].disabled) {\n pendingNodeKeyRef.value = fNodes[fIndex].key;\n break;\n }\n fIndex += 1;\n }\n }\n }\n } else {\n const {\n value: fNodes\n } = fNodesRef;\n let fIndex = fNodes.findIndex(tmNode => tmNode.key === pendingNodeKey);\n if (!~fIndex) return {\n enterBehavior: null\n };\n if (e.key === 'Enter') {\n const tmNode = fNodes[fIndex];\n enterBehavior = ((_a = props.overrideDefaultNodeClickBehavior) === null || _a === void 0 ? void 0 : _a.call(props, {\n option: tmNode.rawNode\n })) || null;\n switch (enterBehavior) {\n case 'toggleCheck':\n handleCheck(tmNode, !mergedCheckedKeysRef.value.includes(tmNode.key));\n break;\n case 'toggleSelect':\n handleSelect(tmNode);\n break;\n case 'toggleExpand':\n handleSwitcherClick(tmNode);\n break;\n case 'none':\n break;\n case 'default':\n default:\n enterBehavior = 'default';\n handleSelect(tmNode);\n }\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n fIndex += 1;\n while (fIndex < fNodes.length) {\n if (!fNodes[fIndex].disabled) {\n pendingNodeKeyRef.value = fNodes[fIndex].key;\n break;\n }\n fIndex += 1;\n }\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n fIndex -= 1;\n while (fIndex >= 0) {\n if (!fNodes[fIndex].disabled) {\n pendingNodeKeyRef.value = fNodes[fIndex].key;\n break;\n }\n fIndex -= 1;\n }\n } else if (e.key === 'ArrowLeft') {\n const pendingNode = fNodes[fIndex];\n if (pendingNode.isLeaf || !mergedExpandedKeysRef.value.includes(pendingNodeKey)) {\n const parentTmNode = pendingNode.getParent();\n if (parentTmNode) {\n pendingNodeKeyRef.value = parentTmNode.key;\n }\n } else {\n handleSwitcherClick(pendingNode);\n }\n } else if (e.key === 'ArrowRight') {\n const pendingNode = fNodes[fIndex];\n if (pendingNode.isLeaf) return {\n enterBehavior: null\n };\n if (!mergedExpandedKeysRef.value.includes(pendingNodeKey)) {\n handleSwitcherClick(pendingNode);\n } else {\n // Tha same as ArrowDown\n fIndex += 1;\n while (fIndex < fNodes.length) {\n if (!fNodes[fIndex].disabled) {\n pendingNodeKeyRef.value = fNodes[fIndex].key;\n break;\n }\n fIndex += 1;\n }\n }\n }\n }\n return {\n enterBehavior\n };\n }\n return {\n pendingNodeKeyRef,\n handleKeydown\n };\n}","import { defineComponent, h, inject } from 'vue';\nimport { NCheckbox } from \"../../checkbox/index.mjs\";\nimport { treeInjectionKey } from \"./interface.mjs\";\nexport default defineComponent({\n name: 'NTreeNodeCheckbox',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n indent: {\n type: Number,\n required: true\n },\n right: Boolean,\n focusable: Boolean,\n disabled: Boolean,\n checked: Boolean,\n indeterminate: Boolean,\n onCheck: Function\n },\n setup(props) {\n const NTree = inject(treeInjectionKey);\n function doCheck(value) {\n const {\n onCheck\n } = props;\n if (onCheck) {\n onCheck(value);\n }\n }\n function handleUpdateValue(value) {\n doCheck(value);\n }\n return {\n handleUpdateValue,\n mergedTheme: NTree.mergedThemeRef\n };\n },\n render() {\n const {\n clsPrefix,\n mergedTheme,\n checked,\n indeterminate,\n disabled,\n focusable,\n indent,\n handleUpdateValue\n } = this;\n return h(\"span\", {\n class: [`${clsPrefix}-tree-node-checkbox`, this.right && `${clsPrefix}-tree-node-checkbox--right`],\n style: {\n width: `${indent}px`\n },\n \"data-checkbox\": true\n }, h(NCheckbox, {\n focusable: focusable,\n disabled: disabled,\n theme: mergedTheme.peers.Checkbox,\n themeOverrides: mergedTheme.peerOverrides.Checkbox,\n checked: checked,\n indeterminate: indeterminate,\n onUpdateChecked: handleUpdateValue\n }));\n }\n});","import { defineComponent, h, inject, ref } from 'vue';\nimport { render } from \"../../_utils/index.mjs\";\nimport { treeInjectionKey } from \"./interface.mjs\";\nexport default defineComponent({\n name: 'TreeNodeContent',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n disabled: Boolean,\n checked: Boolean,\n selected: Boolean,\n onClick: Function,\n onDragstart: Function,\n tmNode: {\n type: Object,\n required: true\n },\n nodeProps: Object\n },\n setup(props) {\n const {\n renderLabelRef,\n renderPrefixRef,\n renderSuffixRef,\n labelFieldRef\n } = inject(treeInjectionKey);\n const selfRef = ref(null);\n function doClick(e) {\n const {\n onClick\n } = props;\n if (onClick) onClick(e);\n }\n function handleClick(e) {\n doClick(e);\n }\n return {\n selfRef,\n renderLabel: renderLabelRef,\n renderPrefix: renderPrefixRef,\n renderSuffix: renderSuffixRef,\n labelField: labelFieldRef,\n handleClick\n };\n },\n render() {\n const {\n clsPrefix,\n labelField,\n nodeProps,\n checked = false,\n selected = false,\n renderLabel,\n renderPrefix,\n renderSuffix,\n handleClick,\n onDragstart,\n tmNode: {\n rawNode,\n rawNode: {\n prefix,\n suffix,\n [labelField]: label\n }\n }\n } = this;\n return h(\"span\", Object.assign({}, nodeProps, {\n ref: \"selfRef\",\n class: [`${clsPrefix}-tree-node-content`, nodeProps === null || nodeProps === void 0 ? void 0 : nodeProps.class],\n onClick: handleClick,\n draggable: onDragstart === undefined ? undefined : true,\n onDragstart: onDragstart\n }), renderPrefix || prefix ? h(\"div\", {\n class: `${clsPrefix}-tree-node-content__prefix`\n }, renderPrefix ? renderPrefix({\n option: rawNode,\n selected,\n checked\n }) : render(prefix)) : null, h(\"div\", {\n class: `${clsPrefix}-tree-node-content__text`\n }, renderLabel ? renderLabel({\n option: rawNode,\n selected,\n checked\n }) : render(label)), renderSuffix || suffix ? h(\"div\", {\n class: `${clsPrefix}-tree-node-content__suffix`\n }, renderSuffix ? renderSuffix({\n option: rawNode,\n selected,\n checked\n }) : render(suffix)) : null);\n }\n});","import { defineComponent, h, inject } from 'vue';\nimport { NBaseIcon, NBaseLoading, NIconSwitchTransition } from \"../../_internal/index.mjs\";\nimport { SwitcherIcon } from \"../../_internal/icons/index.mjs\";\nimport { treeInjectionKey } from \"./interface.mjs\";\nexport default defineComponent({\n name: 'NTreeSwitcher',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n indent: {\n type: Number,\n required: true\n },\n expanded: Boolean,\n selected: Boolean,\n hide: Boolean,\n loading: Boolean,\n onClick: Function,\n tmNode: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const {\n renderSwitcherIconRef\n } = inject(treeInjectionKey, null);\n return () => {\n const {\n clsPrefix,\n expanded,\n hide,\n indent,\n onClick\n } = props;\n return h(\"span\", {\n \"data-switcher\": true,\n class: [`${clsPrefix}-tree-node-switcher`, expanded && `${clsPrefix}-tree-node-switcher--expanded`, hide && `${clsPrefix}-tree-node-switcher--hide`],\n style: {\n width: `${indent}px`\n },\n onClick: onClick\n }, h(\"div\", {\n class: `${clsPrefix}-tree-node-switcher__icon`\n }, h(NIconSwitchTransition, null, {\n default: () => {\n if (props.loading) {\n return h(NBaseLoading, {\n clsPrefix: clsPrefix,\n key: \"loading\",\n radius: 85,\n strokeWidth: 20\n });\n }\n const {\n value: renderSwitcherIcon\n } = renderSwitcherIconRef;\n return renderSwitcherIcon ? renderSwitcherIcon({\n expanded: props.expanded,\n selected: props.selected,\n option: props.tmNode.rawNode\n }) : h(NBaseIcon, {\n clsPrefix: clsPrefix,\n key: \"switcher\"\n }, {\n default: () => h(SwitcherIcon, null)\n });\n }\n })));\n };\n }\n});","import { happensIn } from 'seemly';\nimport { computed } from 'vue';\nimport { isBrowser } from \"../../_utils/index.mjs\";\nexport function useMergedCheckStrategy(props) {\n return computed(() => props.leafOnly ? 'child' : props.checkStrategy);\n}\nexport function isNodeDisabled(node, disabledField) {\n return !!node.rawNode[disabledField];\n}\nfunction traverse(nodes, childrenField, callback, callbackAfter) {\n nodes === null || nodes === void 0 ? void 0 : nodes.forEach(node => {\n callback(node);\n traverse(node[childrenField], childrenField, callback, callbackAfter);\n callbackAfter(node);\n });\n}\nexport function keysWithFilter(nodes, pattern, keyField, childrenField, filter) {\n const keys = new Set();\n const highlightKeySet = new Set();\n const path = [];\n traverse(nodes, childrenField, node => {\n path.push(node);\n if (filter(pattern, node)) {\n highlightKeySet.add(node[keyField]);\n for (let i = path.length - 2; i >= 0; --i) {\n if (!keys.has(path[i][keyField])) {\n keys.add(path[i][keyField]);\n } else {\n return;\n }\n }\n }\n }, () => {\n path.pop();\n });\n return {\n expandedKeys: Array.from(keys),\n highlightKeySet\n };\n}\nconst emptyImage = null;\nif (isBrowser && Image) {\n const emptyImage = new Image();\n emptyImage.src = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n}\nexport { emptyImage };\nexport function filterTree(tree, filter, pattern, keyField, childrenField) {\n const visitedTailKeys = new Set();\n const visitedNonTailKeys = new Set();\n const highlightKeySet = new Set();\n const expandedKeys = [];\n const filteredTree = [];\n const path = [];\n function visit(t) {\n t.forEach(n => {\n path.push(n);\n if (filter(pattern, n)) {\n visitedTailKeys.add(n[keyField]);\n highlightKeySet.add(n[keyField]);\n for (let i = path.length - 2; i >= 0; --i) {\n const key = path[i][keyField];\n if (!visitedNonTailKeys.has(key)) {\n visitedNonTailKeys.add(key);\n if (visitedTailKeys.has(key)) {\n visitedTailKeys.delete(key);\n }\n } else {\n break;\n }\n }\n }\n const children = n[childrenField];\n if (children) {\n visit(children);\n }\n path.pop();\n });\n }\n visit(tree);\n function build(t, sibs) {\n t.forEach(n => {\n const key = n[keyField];\n const isVisitedTail = visitedTailKeys.has(key);\n const isVisitedNonTail = visitedNonTailKeys.has(key);\n if (!isVisitedTail && !isVisitedNonTail) return;\n const children = n[childrenField];\n if (children) {\n if (isVisitedTail) {\n // If it is visited path tail, use origin node\n sibs.push(n);\n } else {\n // It it is not visited path tail, use cloned node\n expandedKeys.push(key);\n const clonedNode = Object.assign(Object.assign({}, n), {\n [childrenField]: []\n });\n sibs.push(clonedNode);\n build(children, clonedNode[childrenField]);\n }\n } else {\n sibs.push(n);\n }\n });\n }\n build(tree, filteredTree);\n return {\n filteredTree,\n highlightKeySet,\n expandedKeys\n };\n}\nexport function treeGetClickTarget(e) {\n if (happensIn(e, 'checkbox')) {\n return 'checkbox';\n } else if (happensIn(e, 'switcher')) {\n return 'switcher';\n } else {\n return 'node';\n }\n}","import { happensIn, repeat } from 'seemly';\nimport { useMemo } from 'vooks';\nimport { computed, defineComponent, h, inject, onMounted, ref } from 'vue';\nimport { createDataKey } from \"../../_utils/index.mjs\";\nimport { renderDropMark } from \"./dnd.mjs\";\nimport { treeInjectionKey } from \"./interface.mjs\";\nimport NTreeNodeCheckbox from \"./TreeNodeCheckbox.mjs\";\nimport NTreeNodeContent from \"./TreeNodeContent.mjs\";\nimport NTreeNodeSwitcher from \"./TreeNodeSwitcher.mjs\";\nimport { isNodeDisabled } from \"./utils.mjs\";\nconst TreeNode = defineComponent({\n name: 'TreeNode',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n tmNode: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const NTree = inject(treeInjectionKey);\n const {\n droppingNodeParentRef,\n droppingMouseNodeRef,\n draggingNodeRef,\n droppingPositionRef,\n droppingOffsetLevelRef,\n nodePropsRef,\n indentRef,\n blockLineRef,\n checkboxPlacementRef,\n checkOnClickRef,\n disabledFieldRef,\n showLineRef,\n renderSwitcherIconRef,\n overrideDefaultNodeClickBehaviorRef\n } = NTree;\n const checkboxDisabledRef = useMemo(() => !!props.tmNode.rawNode.checkboxDisabled);\n const nodeIsDisabledRef = useMemo(() => {\n return isNodeDisabled(props.tmNode, disabledFieldRef.value);\n });\n const disabledRef = useMemo(() => NTree.disabledRef.value || nodeIsDisabledRef.value);\n const resolvedNodePropsRef = computed(() => {\n const {\n value: nodeProps\n } = nodePropsRef;\n if (!nodeProps) return undefined;\n return nodeProps({\n option: props.tmNode.rawNode\n });\n });\n // used for drag and drop\n const contentInstRef = ref(null);\n // must be non-reactive\n const contentElRef = {\n value: null\n };\n onMounted(() => {\n contentElRef.value = contentInstRef.value.$el;\n });\n function handleSwitcherClick() {\n const callback = () => {\n const {\n tmNode\n } = props;\n if (!tmNode.isLeaf && !tmNode.shallowLoaded) {\n if (!NTree.loadingKeysRef.value.has(tmNode.key)) {\n NTree.loadingKeysRef.value.add(tmNode.key);\n } else {\n return;\n }\n const {\n onLoadRef: {\n value: onLoad\n }\n } = NTree;\n if (onLoad) {\n void onLoad(tmNode.rawNode).then(value => {\n if (value !== false) {\n NTree.handleSwitcherClick(tmNode);\n }\n }).finally(() => {\n NTree.loadingKeysRef.value.delete(tmNode.key);\n });\n }\n } else {\n NTree.handleSwitcherClick(tmNode);\n }\n };\n if (renderSwitcherIconRef.value) {\n // if renderSwitcherIcon is set, icon dom may be altered before event\n // bubbles to parent dom, so that target check fails. Call it in next\n // event loop so that event bubble phase is finishes.\n setTimeout(callback, 0);\n } else {\n callback();\n }\n }\n const selectableRef = useMemo(() => !nodeIsDisabledRef.value && NTree.selectableRef.value && (NTree.internalTreeSelect ? NTree.mergedCheckStrategyRef.value !== 'child' || NTree.multipleRef.value && NTree.cascadeRef.value || props.tmNode.isLeaf : true));\n const checkableRef = useMemo(() => NTree.checkableRef.value && (NTree.cascadeRef.value || NTree.mergedCheckStrategyRef.value !== 'child' || props.tmNode.isLeaf));\n const checkedRef = useMemo(() => NTree.displayedCheckedKeysRef.value.includes(props.tmNode.key));\n const mergedCheckOnClickRef = useMemo(() => {\n const {\n value: checkable\n } = checkableRef;\n if (!checkable) return false;\n const {\n value: checkOnClick\n } = checkOnClickRef;\n const {\n tmNode\n } = props;\n if (typeof checkOnClick === 'boolean') {\n return !tmNode.disabled && checkOnClick;\n }\n return checkOnClick(props.tmNode.rawNode);\n });\n function _handleClick(e) {\n const {\n value: expandOnClick\n } = NTree.expandOnClickRef;\n const {\n value: selectable\n } = selectableRef;\n const {\n value: mergedCheckOnClick\n } = mergedCheckOnClickRef;\n if (!selectable && !expandOnClick && !mergedCheckOnClick) return;\n if (happensIn(e, 'checkbox') || happensIn(e, 'switcher')) return;\n const {\n tmNode\n } = props;\n if (selectable) {\n NTree.handleSelect(tmNode);\n }\n if (expandOnClick && !tmNode.isLeaf) {\n handleSwitcherClick();\n }\n if (mergedCheckOnClick) {\n handleCheck(!checkedRef.value);\n }\n }\n function handleNodeClick(e) {\n var _a, _b;\n if (happensIn(e, 'checkbox') || happensIn(e, 'switcher')) return;\n if (!disabledRef.value) {\n const overrideDefaultNodeClickBehavior = overrideDefaultNodeClickBehaviorRef.value;\n let shouldOverride = false;\n if (overrideDefaultNodeClickBehavior) {\n switch (overrideDefaultNodeClickBehavior({\n option: props.tmNode.rawNode\n })) {\n case 'toggleCheck':\n shouldOverride = true;\n handleCheck(!checkedRef.value);\n break;\n case 'toggleSelect':\n shouldOverride = true;\n NTree.handleSelect(props.tmNode);\n break;\n case 'toggleExpand':\n shouldOverride = true;\n handleSwitcherClick();\n shouldOverride = true;\n break;\n case 'none':\n shouldOverride = true;\n shouldOverride = true;\n return;\n case 'default':\n default:\n break;\n }\n }\n if (!shouldOverride) {\n _handleClick(e);\n }\n }\n (_b = (_a = resolvedNodePropsRef.value) === null || _a === void 0 ? void 0 : _a.onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n }\n function handleContentClick(e) {\n if (blockLineRef.value) return;\n handleNodeClick(e);\n }\n function handleLineClick(e) {\n if (!blockLineRef.value) return;\n handleNodeClick(e);\n }\n function handleCheck(checked) {\n NTree.handleCheck(props.tmNode, checked);\n }\n // Dnd\n function handleDragStart(e) {\n NTree.handleDragStart({\n event: e,\n node: props.tmNode\n });\n }\n function handleDragEnter(e) {\n if (e.currentTarget !== e.target) {\n return;\n }\n NTree.handleDragEnter({\n event: e,\n node: props.tmNode\n });\n }\n function handleDragOver(e) {\n e.preventDefault(); // if not prevent, drop event won't be fired...\n NTree.handleDragOver({\n event: e,\n node: props.tmNode\n });\n }\n function handleDragEnd(e) {\n NTree.handleDragEnd({\n event: e,\n node: props.tmNode\n });\n }\n function handleDragLeave(e) {\n if (e.currentTarget !== e.target) {\n return;\n }\n NTree.handleDragLeave({\n event: e,\n node: props.tmNode\n });\n }\n function handleDrop(e) {\n e.preventDefault();\n if (droppingPositionRef.value !== null) {\n NTree.handleDrop({\n event: e,\n node: props.tmNode,\n dropPosition: droppingPositionRef.value\n });\n }\n }\n const indentNodes = computed(() => {\n const {\n clsPrefix\n } = props;\n const {\n value: indent\n } = indentRef;\n if (showLineRef.value) {\n const indentNodes = [];\n let cursor = props.tmNode.parent;\n while (cursor) {\n if (cursor.isLastChild) {\n indentNodes.push(h(\"div\", {\n class: `${clsPrefix}-tree-node-indent`\n }, h(\"div\", {\n style: {\n width: `${indent}px`\n }\n })));\n } else {\n indentNodes.push(h(\"div\", {\n class: [`${clsPrefix}-tree-node-indent`, `${clsPrefix}-tree-node-indent--show-line`]\n }, h(\"div\", {\n style: {\n width: `${indent}px`\n }\n })));\n }\n cursor = cursor.parent;\n }\n return indentNodes.reverse();\n } else {\n return repeat(props.tmNode.level, h(\"div\", {\n class: `${props.clsPrefix}-tree-node-indent`\n }, h(\"div\", {\n style: {\n width: `${indent}px`\n }\n })));\n }\n });\n return {\n showDropMark: useMemo(() => {\n const {\n value: draggingNode\n } = draggingNodeRef;\n if (!draggingNode) return;\n const {\n value: droppingPosition\n } = droppingPositionRef;\n if (!droppingPosition) return;\n const {\n value: droppingMouseNode\n } = droppingMouseNodeRef;\n if (!droppingMouseNode) {\n return;\n }\n const {\n tmNode\n } = props;\n if (tmNode.key === droppingMouseNode.key) return true;\n return false;\n }),\n showDropMarkAsParent: useMemo(() => {\n const {\n value: droppingNodeParent\n } = droppingNodeParentRef;\n if (!droppingNodeParent) return false;\n const {\n tmNode\n } = props;\n const {\n value: droppingPosition\n } = droppingPositionRef;\n if (droppingPosition === 'before' || droppingPosition === 'after') {\n return droppingNodeParent.key === tmNode.key;\n }\n return false;\n }),\n pending: useMemo(() => NTree.pendingNodeKeyRef.value === props.tmNode.key),\n loading: useMemo(() => NTree.loadingKeysRef.value.has(props.tmNode.key)),\n highlight: useMemo(() => {\n var _a;\n return (_a = NTree.highlightKeySetRef.value) === null || _a === void 0 ? void 0 : _a.has(props.tmNode.key);\n }),\n checked: checkedRef,\n indeterminate: useMemo(() => NTree.displayedIndeterminateKeysRef.value.includes(props.tmNode.key)),\n selected: useMemo(() => NTree.mergedSelectedKeysRef.value.includes(props.tmNode.key)),\n expanded: useMemo(() => NTree.mergedExpandedKeysRef.value.includes(props.tmNode.key)),\n disabled: disabledRef,\n checkable: checkableRef,\n mergedCheckOnClick: mergedCheckOnClickRef,\n checkboxDisabled: checkboxDisabledRef,\n selectable: selectableRef,\n expandOnClick: NTree.expandOnClickRef,\n internalScrollable: NTree.internalScrollableRef,\n draggable: NTree.draggableRef,\n blockLine: blockLineRef,\n nodeProps: resolvedNodePropsRef,\n checkboxFocusable: NTree.internalCheckboxFocusableRef,\n droppingPosition: droppingPositionRef,\n droppingOffsetLevel: droppingOffsetLevelRef,\n indent: indentRef,\n checkboxPlacement: checkboxPlacementRef,\n showLine: showLineRef,\n contentInstRef,\n contentElRef,\n indentNodes,\n handleCheck,\n handleDrop,\n handleDragStart,\n handleDragEnter,\n handleDragOver,\n handleDragEnd,\n handleDragLeave,\n handleLineClick,\n handleContentClick,\n handleSwitcherClick\n };\n },\n render() {\n const {\n tmNode,\n clsPrefix,\n checkable,\n expandOnClick,\n selectable,\n selected,\n checked,\n highlight,\n draggable,\n blockLine,\n indent,\n indentNodes,\n disabled,\n pending,\n internalScrollable,\n nodeProps,\n checkboxPlacement\n } = this;\n // drag start not inside\n // it need to be append to node itself, not wrapper\n const dragEventHandlers = draggable && !disabled ? {\n onDragenter: this.handleDragEnter,\n onDragleave: this.handleDragLeave,\n onDragend: this.handleDragEnd,\n onDrop: this.handleDrop,\n onDragover: this.handleDragOver\n } : undefined;\n // In non virtual mode, there's no evidence that which element should be\n // scrolled to, so we need data-key to query the target element.\n const dataKey = internalScrollable ? createDataKey(tmNode.key) : undefined;\n const checkboxOnRight = checkboxPlacement === 'right';\n const checkboxNode = checkable ? h(NTreeNodeCheckbox, {\n indent: indent,\n right: checkboxOnRight,\n focusable: this.checkboxFocusable,\n disabled: disabled || this.checkboxDisabled,\n clsPrefix: clsPrefix,\n checked: this.checked,\n indeterminate: this.indeterminate,\n onCheck: this.handleCheck\n }) : null;\n return h(\"div\", Object.assign({\n class: `${clsPrefix}-tree-node-wrapper`\n }, dragEventHandlers), h(\"div\", Object.assign({}, blockLine ? nodeProps : undefined, {\n class: [`${clsPrefix}-tree-node`, {\n [`${clsPrefix}-tree-node--selected`]: selected,\n [`${clsPrefix}-tree-node--checkable`]: checkable,\n [`${clsPrefix}-tree-node--highlight`]: highlight,\n [`${clsPrefix}-tree-node--pending`]: pending,\n [`${clsPrefix}-tree-node--disabled`]: disabled,\n [`${clsPrefix}-tree-node--selectable`]: selectable,\n [`${clsPrefix}-tree-node--clickable`]: selectable || expandOnClick || this.mergedCheckOnClick\n }, nodeProps === null || nodeProps === void 0 ? void 0 : nodeProps.class],\n \"data-key\": dataKey,\n draggable: draggable && blockLine,\n onClick: this.handleLineClick,\n onDragstart: draggable && blockLine && !disabled ? this.handleDragStart : undefined\n }), indentNodes, tmNode.isLeaf && this.showLine ? h(\"div\", {\n class: [`${clsPrefix}-tree-node-indent`, `${clsPrefix}-tree-node-indent--show-line`, tmNode.isLeaf && `${clsPrefix}-tree-node-indent--is-leaf`, tmNode.isLastChild && `${clsPrefix}-tree-node-indent--last-child`]\n }, h(\"div\", {\n style: {\n width: `${indent}px`\n }\n })) : h(NTreeNodeSwitcher, {\n clsPrefix: clsPrefix,\n expanded: this.expanded,\n selected: selected,\n loading: this.loading,\n hide: tmNode.isLeaf,\n tmNode: this.tmNode,\n indent: indent,\n onClick: this.handleSwitcherClick\n }), !checkboxOnRight ? checkboxNode : null, h(NTreeNodeContent, {\n ref: \"contentInstRef\",\n clsPrefix: clsPrefix,\n checked: checked,\n selected: selected,\n onClick: this.handleContentClick,\n nodeProps: blockLine ? undefined : nodeProps,\n onDragstart: draggable && !blockLine && !disabled ? this.handleDragStart : undefined,\n tmNode: tmNode\n }), draggable ? this.showDropMark ? renderDropMark({\n el: this.contentElRef.value,\n position: this.droppingPosition,\n offsetLevel: this.droppingOffsetLevel,\n indent\n }) : this.showDropMarkAsParent ? renderDropMark({\n el: this.contentElRef.value,\n position: 'inside',\n offsetLevel: this.droppingOffsetLevel,\n indent\n }) : null : null, checkboxOnRight ? checkboxNode : null));\n }\n});\nexport default TreeNode;","import { pxfy } from 'seemly';\nimport { defineComponent, h } from 'vue';\nimport FadeInExpandTransition from \"../../_internal/fade-in-expand-transition/index.mjs\";\nimport TreeNode from \"./TreeNode.mjs\";\nexport default defineComponent({\n name: 'TreeMotionWrapper',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n height: Number,\n nodes: {\n type: Array,\n required: true\n },\n mode: {\n type: String,\n required: true\n },\n onAfterEnter: {\n type: Function,\n required: true\n }\n },\n render() {\n const {\n clsPrefix\n } = this;\n return h(FadeInExpandTransition, {\n onAfterEnter: this.onAfterEnter,\n appear: true,\n reverse: this.mode === 'collapse'\n }, {\n default: () => h(\"div\", {\n class: [`${clsPrefix}-tree-motion-wrapper`, `${clsPrefix}-tree-motion-wrapper--${this.mode}`],\n style: {\n height: pxfy(this.height)\n }\n }, this.nodes.map(node => h(TreeNode, {\n clsPrefix: clsPrefix,\n tmNode: node\n })))\n });\n }\n});","import { fadeInHeightExpandTransition } from \"../../../_styles/transitions/fade-in-height-expand.cssr.mjs\";\nimport { iconSwitchTransition } from \"../../../_styles/transitions/icon-switch.cssr.mjs\";\nimport { c, cB, cE, cM, cNotM } from \"../../../_utils/cssr/index.mjs\";\nconst iconSwitchTransitionNode = iconSwitchTransition();\n// vars:\n// --n-arrow-color\n// --n-bezier\n// --n-font-size\n// --n-node-border-radius\n// --n-node-color-active\n// --n-node-color-hover\n// --n-node-color-pressed\n// --n-node-text-color\n// --n-node-text-color-disabled\n// --n-node-wrapper-padding\n// --n-line-offset-top\n// --n-line-offset-bottom\n// --n-node-content-height\n// --n-line-height\n// --n-line-color\nexport default cB('tree', `\n font-size: var(--n-font-size);\n outline: none;\n`, [c('ul, li', `\n margin: 0;\n padding: 0;\n list-style: none;\n `), c('>', [cB('tree-node', [c('&:first-child', 'margin-top: 0;')])]), cB('tree-motion-wrapper', [cM('expand', [fadeInHeightExpandTransition({\n duration: '0.2s'\n})]), cM('collapse', [fadeInHeightExpandTransition({\n duration: '0.2s',\n reverse: true\n})])]), cB('tree-node-wrapper', `\n box-sizing: border-box;\n padding: var(--n-node-wrapper-padding);\n `), cB('tree-node', `\n position: relative;\n display: flex;\n border-radius: var(--n-node-border-radius);\n transition: background-color .3s var(--n-bezier);\n `, [cM('highlight', [cB('tree-node-content', [cE('text', 'border-bottom-color: var(--n-node-text-color-disabled);')])]), cM('disabled', [cB('tree-node-content', `\n color: var(--n-node-text-color-disabled);\n cursor: not-allowed;\n `)]), cNotM('disabled', [cM('clickable', [cB('tree-node-content', `\n cursor: pointer;\n `)])])]), cM('block-node', [cB('tree-node-content', `\n flex: 1;\n min-width: 0;\n `)]), cNotM('block-line', [cB('tree-node', [cNotM('disabled', [cB('tree-node-content', [c('&:hover', 'background: var(--n-node-color-hover);')]), cM('selectable', [cB('tree-node-content', [c('&:active', 'background: var(--n-node-color-pressed);')])]), cM('pending', [cB('tree-node-content', `\n background: var(--n-node-color-hover);\n `)]), cM('selected', [cB('tree-node-content', 'background: var(--n-node-color-active);')])]), cM('selected', [cB('tree-node-content', 'background: var(--n-node-color-active);')])])]), cM('block-line', [cB('tree-node', [cNotM('disabled', [c('&:hover', 'background: var(--n-node-color-hover);'), cM('pending', `\n background: var(--n-node-color-hover);\n `), cM('selectable', [cNotM('selected', [c('&:active', 'background: var(--n-node-color-pressed);')])]), cM('selected', 'background: var(--n-node-color-active);')]), cM('selected', 'background: var(--n-node-color-active);'), cM('disabled', `\n cursor: not-allowed;\n `)])]), cB('tree-node-indent', `\n flex-grow: 0;\n flex-shrink: 0;\n `, [cM('show-line', 'position: relative', [c('&::before', `\n position: absolute;\n left: 50%;\n border-left: 1px solid var(--n-line-color);\n transition: border-color .3s var(--n-bezier);\n transform: translate(-50%);\n content: \"\";\n top: var(--n-line-offset-top);\n bottom: var(--n-line-offset-bottom);\n `), cM('last-child', [c('&::before', `\n bottom: 50%;\n `)]), cM('is-leaf', [c('&::after', `\n position: absolute;\n content: \"\";\n left: calc(50% + 0.5px);\n right: 0;\n bottom: 50%;\n transition: border-color .3s var(--n-bezier);\n border-bottom: 1px solid var(--n-line-color);\n `)])]), cNotM('show-line', 'height: 0;')]), cB('tree-node-switcher', `\n cursor: pointer;\n display: inline-flex;\n flex-shrink: 0;\n height: var(--n-node-content-height);\n align-items: center;\n justify-content: center;\n transition: transform .15s var(--n-bezier);\n vertical-align: bottom;\n `, [cE('icon', `\n position: relative;\n height: 14px;\n width: 14px;\n display: flex;\n color: var(--n-arrow-color);\n transition: color .3s var(--n-bezier);\n font-size: 14px;\n `, [cB('icon', [iconSwitchTransitionNode]), cB('base-loading', `\n color: var(--n-loading-color);\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n `, [iconSwitchTransitionNode]), cB('base-icon', [iconSwitchTransitionNode])]), cM('hide', 'visibility: hidden;'), cM('expanded', 'transform: rotate(90deg);')]), cB('tree-node-checkbox', `\n display: inline-flex;\n height: var(--n-node-content-height);\n vertical-align: bottom;\n align-items: center;\n justify-content: center;\n `), cB('tree-node-content', `\n user-select: none;\n position: relative;\n display: inline-flex;\n align-items: center;\n min-height: var(--n-node-content-height);\n box-sizing: border-box;\n line-height: var(--n-line-height);\n vertical-align: bottom;\n padding: 0 6px 0 4px;\n cursor: default;\n border-radius: var(--n-node-border-radius);\n color: var(--n-node-text-color);\n transition:\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n `, [c('&:last-child', 'margin-bottom: 0;'), cE('prefix', `\n display: inline-flex;\n margin-right: 8px;\n `), cE('text', `\n border-bottom: 1px solid #0000;\n transition: border-color .3s var(--n-bezier);\n flex-grow: 1;\n max-width: 100%;\n `), cE('suffix', `\n display: inline-flex;\n `)]), cE('empty', 'margin: auto;')]);","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { depx, getPadding, pxfy } from 'seemly';\nimport { createIndexGetter, createTreeMate, flatten } from 'treemate';\nimport { useMergedState } from 'vooks';\nimport { computed, defineComponent, h, inject, nextTick, provide, ref, toRef, watch, watchEffect } from 'vue';\nimport { VVirtualList } from 'vueuc';\nimport { NxScrollbar } from \"../../_internal/index.mjs\";\nimport { useConfig, useRtl, useTheme, useThemeClass } from \"../../_mixins/index.mjs\";\nimport { call, createDataKey, resolveSlot, warn, warnOnce } from \"../../_utils/index.mjs\";\nimport { NEmpty } from \"../../empty/index.mjs\";\nimport { treeSelectInjectionKey } from \"../../tree-select/src/interface.mjs\";\nimport { treeLight } from \"../styles/index.mjs\";\nimport { defaultAllowDrop } from \"./dnd.mjs\";\nimport { treeInjectionKey } from \"./interface.mjs\";\nimport { useKeyboard } from \"./keyboard.mjs\";\nimport MotionWrapper from \"./MotionWrapper.mjs\";\nimport style from \"./styles/index.cssr.mjs\";\nimport NTreeNode from \"./TreeNode.mjs\";\nimport { emptyImage, filterTree, isNodeDisabled, keysWithFilter, useMergedCheckStrategy } from \"./utils.mjs\";\nexport function createTreeMateOptions(keyField, childrenField, disabledField, getChildren) {\n const settledGetChildren = getChildren || (node => {\n return node[childrenField];\n });\n return {\n getIsGroup() {\n return false;\n },\n getKey(node) {\n return node[keyField];\n },\n getChildren: settledGetChildren,\n getDisabled(node) {\n return !!(node[disabledField] || node.checkboxDisabled);\n }\n };\n}\nexport const treeSharedProps = {\n allowCheckingNotLoaded: Boolean,\n filter: Function,\n defaultExpandAll: Boolean,\n expandedKeys: Array,\n keyField: {\n type: String,\n default: 'key'\n },\n labelField: {\n type: String,\n default: 'label'\n },\n childrenField: {\n type: String,\n default: 'children'\n },\n disabledField: {\n type: String,\n default: 'disabled'\n },\n defaultExpandedKeys: {\n type: Array,\n default: () => []\n },\n indent: {\n type: Number,\n default: 24\n },\n indeterminateKeys: Array,\n renderSwitcherIcon: Function,\n onUpdateIndeterminateKeys: [Function, Array],\n 'onUpdate:indeterminateKeys': [Function, Array],\n onUpdateExpandedKeys: [Function, Array],\n 'onUpdate:expandedKeys': [Function, Array],\n overrideDefaultNodeClickBehavior: Function\n};\nexport const treeProps = Object.assign(Object.assign(Object.assign(Object.assign({}, useTheme.props), {\n accordion: Boolean,\n showIrrelevantNodes: {\n type: Boolean,\n default: true\n },\n data: {\n type: Array,\n default: () => []\n },\n expandOnDragenter: {\n type: Boolean,\n default: true\n },\n expandOnClick: Boolean,\n checkOnClick: {\n type: [Boolean, Function],\n default: false\n },\n cancelable: {\n type: Boolean,\n default: true\n },\n checkable: Boolean,\n draggable: Boolean,\n blockNode: Boolean,\n blockLine: Boolean,\n showLine: Boolean,\n disabled: Boolean,\n checkedKeys: Array,\n defaultCheckedKeys: {\n type: Array,\n default: () => []\n },\n selectedKeys: Array,\n defaultSelectedKeys: {\n type: Array,\n default: () => []\n },\n multiple: Boolean,\n pattern: {\n type: String,\n default: ''\n },\n onLoad: Function,\n cascade: Boolean,\n selectable: {\n type: Boolean,\n default: true\n },\n scrollbarProps: Object,\n allowDrop: {\n type: Function,\n default: defaultAllowDrop\n },\n animated: {\n type: Boolean,\n default: true\n },\n checkboxPlacement: {\n type: String,\n default: 'left'\n },\n virtualScroll: Boolean,\n watchProps: Array,\n renderLabel: Function,\n renderPrefix: Function,\n renderSuffix: Function,\n nodeProps: Function,\n keyboard: {\n type: Boolean,\n default: true\n },\n getChildren: Function,\n onDragenter: [Function, Array],\n onDragleave: [Function, Array],\n onDragend: [Function, Array],\n onDragstart: [Function, Array],\n onDragover: [Function, Array],\n onDrop: [Function, Array],\n onUpdateCheckedKeys: [Function, Array],\n 'onUpdate:checkedKeys': [Function, Array],\n onUpdateSelectedKeys: [Function, Array],\n 'onUpdate:selectedKeys': [Function, Array]\n}), treeSharedProps), {\n // internal props for tree-select\n internalTreeSelect: Boolean,\n internalScrollable: Boolean,\n internalScrollablePadding: String,\n // use it to display\n internalRenderEmpty: Function,\n internalHighlightKeySet: Object,\n internalUnifySelectCheck: Boolean,\n internalCheckboxFocusable: {\n type: Boolean,\n default: true\n },\n internalFocusable: {\n // Make tree-select take over keyboard operations\n type: Boolean,\n default: true\n },\n checkStrategy: {\n type: String,\n default: 'all'\n },\n /**\n * @deprecated\n */\n leafOnly: Boolean\n});\nexport default defineComponent({\n name: 'Tree',\n props: treeProps,\n slots: Object,\n setup(props) {\n if (process.env.NODE_ENV !== 'production') {\n watchEffect(() => {\n if (props.leafOnly) {\n warnOnce('tree', '`leaf-only` is deprecated, please use `check-strategy=\"child\"` instead');\n }\n });\n }\n const {\n mergedClsPrefixRef,\n inlineThemeDisabled,\n mergedRtlRef\n } = useConfig(props);\n const rtlEnabledRef = useRtl('Tree', mergedRtlRef, mergedClsPrefixRef);\n const themeRef = useTheme('Tree', '-tree', style, treeLight, props, mergedClsPrefixRef);\n const selfElRef = ref(null);\n const scrollbarInstRef = ref(null);\n const virtualListInstRef = ref(null);\n function getScrollContainer() {\n var _a;\n return (_a = virtualListInstRef.value) === null || _a === void 0 ? void 0 : _a.listElRef;\n }\n function getScrollContent() {\n var _a;\n return (_a = virtualListInstRef.value) === null || _a === void 0 ? void 0 : _a.itemsElRef;\n }\n const mergedFilterRef = computed(() => {\n const {\n filter\n } = props;\n if (filter) return filter;\n const {\n labelField\n } = props;\n return (pattern, node) => {\n if (!pattern.length) return true;\n const label = node[labelField];\n if (typeof label === 'string') {\n return label.toLowerCase().includes(pattern.toLowerCase());\n }\n return false;\n };\n });\n const filteredTreeInfoRef = computed(() => {\n const {\n pattern\n } = props;\n if (!pattern) {\n return {\n filteredTree: props.data,\n highlightKeySet: null,\n expandedKeys: undefined\n };\n }\n if (!pattern.length || !mergedFilterRef.value) {\n return {\n filteredTree: props.data,\n highlightKeySet: null,\n expandedKeys: undefined\n };\n }\n return filterTree(props.data, mergedFilterRef.value, pattern, props.keyField, props.childrenField);\n });\n // We don't expect data source to change so we just determine it once\n const displayTreeMateRef = computed(() => createTreeMate(props.showIrrelevantNodes ? props.data : filteredTreeInfoRef.value.filteredTree, createTreeMateOptions(props.keyField, props.childrenField, props.disabledField, props.getChildren)));\n const treeSelectInjection = inject(treeSelectInjectionKey, null);\n const dataTreeMateRef = props.internalTreeSelect ? treeSelectInjection.dataTreeMate : computed(() => props.showIrrelevantNodes ? displayTreeMateRef.value : createTreeMate(props.data, createTreeMateOptions(props.keyField, props.childrenField, props.disabledField, props.getChildren)));\n const {\n watchProps\n } = props;\n const uncontrolledCheckedKeysRef = ref([]);\n if (watchProps === null || watchProps === void 0 ? void 0 : watchProps.includes('defaultCheckedKeys')) {\n watchEffect(() => {\n uncontrolledCheckedKeysRef.value = props.defaultCheckedKeys;\n });\n } else {\n uncontrolledCheckedKeysRef.value = props.defaultCheckedKeys;\n }\n const controlledCheckedKeysRef = toRef(props, 'checkedKeys');\n const mergedCheckedKeysRef = useMergedState(controlledCheckedKeysRef, uncontrolledCheckedKeysRef);\n const checkedStatusRef = computed(() => {\n const value = dataTreeMateRef.value.getCheckedKeys(mergedCheckedKeysRef.value, {\n cascade: props.cascade,\n allowNotLoaded: props.allowCheckingNotLoaded\n });\n return value;\n });\n const mergedCheckStrategyRef = useMergedCheckStrategy(props);\n const displayedCheckedKeysRef = computed(() => {\n return checkedStatusRef.value.checkedKeys;\n });\n const displayedIndeterminateKeysRef = computed(() => {\n const {\n indeterminateKeys\n } = props;\n if (indeterminateKeys !== undefined) return indeterminateKeys;\n return checkedStatusRef.value.indeterminateKeys;\n });\n const uncontrolledSelectedKeysRef = ref([]);\n if (watchProps === null || watchProps === void 0 ? void 0 : watchProps.includes('defaultSelectedKeys')) {\n watchEffect(() => {\n uncontrolledSelectedKeysRef.value = props.defaultSelectedKeys;\n });\n } else {\n uncontrolledSelectedKeysRef.value = props.defaultSelectedKeys;\n }\n const controlledSelectedKeysRef = toRef(props, 'selectedKeys');\n const mergedSelectedKeysRef = useMergedState(controlledSelectedKeysRef, uncontrolledSelectedKeysRef);\n const uncontrolledExpandedKeysRef = ref([]);\n const initUncontrolledExpandedKeys = keys => {\n uncontrolledExpandedKeysRef.value = props.defaultExpandAll ? dataTreeMateRef.value.getNonLeafKeys() : keys === undefined ? props.defaultExpandedKeys : keys;\n };\n if (watchProps === null || watchProps === void 0 ? void 0 : watchProps.includes('defaultExpandedKeys')) {\n // if watching defaultExpandedKeys, we use access props.defaultExpandedKeys inside initiator\n watchEffect(() => {\n initUncontrolledExpandedKeys(undefined);\n });\n } else {\n // We by default watchEffect since if defaultExpandAll is true, we should remain tree expand if data changes\n watchEffect(() => {\n initUncontrolledExpandedKeys(props.defaultExpandedKeys);\n });\n }\n const controlledExpandedKeysRef = toRef(props, 'expandedKeys');\n const mergedExpandedKeysRef = useMergedState(controlledExpandedKeysRef, uncontrolledExpandedKeysRef);\n const fNodesRef = computed(() => displayTreeMateRef.value.getFlattenedNodes(mergedExpandedKeysRef.value));\n const {\n pendingNodeKeyRef,\n handleKeydown\n } = useKeyboard({\n props,\n mergedCheckedKeysRef,\n mergedSelectedKeysRef,\n fNodesRef,\n mergedExpandedKeysRef,\n handleCheck,\n handleSelect,\n handleSwitcherClick\n });\n let expandTimerId = null;\n let nodeKeyToBeExpanded = null;\n const uncontrolledHighlightKeySetRef = ref(new Set());\n const controlledHighlightKeySetRef = computed(() => {\n return props.internalHighlightKeySet || filteredTreeInfoRef.value.highlightKeySet;\n });\n const mergedHighlightKeySetRef = useMergedState(controlledHighlightKeySetRef, uncontrolledHighlightKeySetRef);\n const loadingKeysRef = ref(new Set());\n const expandedNonLoadingKeysRef = computed(() => {\n return mergedExpandedKeysRef.value.filter(key => !loadingKeysRef.value.has(key));\n });\n let dragStartX = 0;\n const draggingNodeRef = ref(null);\n const droppingNodeRef = ref(null);\n const droppingMouseNodeRef = ref(null);\n const droppingPositionRef = ref(null);\n const droppingOffsetLevelRef = ref(0);\n const droppingNodeParentRef = computed(() => {\n const {\n value: droppingNode\n } = droppingNodeRef;\n if (!droppingNode) return null;\n // May avoid overlap between line mark of first child & rect mark of parent\n // if (droppingNode.isFirstChild && droppingPositionRef.value === 'before') {\n // return null\n // }\n return droppingNode.parent;\n });\n // shallow watch data\n let isDataReset = false;\n watch(toRef(props, 'data'), () => {\n isDataReset = true;\n void nextTick(() => {\n isDataReset = false;\n });\n loadingKeysRef.value.clear();\n pendingNodeKeyRef.value = null;\n resetDndState();\n }, {\n deep: false\n });\n let expandAnimationDisabled = false;\n const disableExpandAnimationForOneTick = () => {\n expandAnimationDisabled = true;\n void nextTick(() => {\n expandAnimationDisabled = false;\n });\n };\n let memoizedExpandedKeys;\n watch(toRef(props, 'pattern'), (value, oldValue) => {\n if (props.showIrrelevantNodes) {\n memoizedExpandedKeys = undefined;\n if (value) {\n const {\n expandedKeys: expandedKeysAfterChange,\n highlightKeySet\n } = keysWithFilter(props.data, props.pattern, props.keyField, props.childrenField, mergedFilterRef.value);\n uncontrolledHighlightKeySetRef.value = highlightKeySet;\n disableExpandAnimationForOneTick();\n doUpdateExpandedKeys(expandedKeysAfterChange, getOptionsByKeys(expandedKeysAfterChange), {\n node: null,\n action: 'filter'\n });\n } else {\n uncontrolledHighlightKeySetRef.value = new Set();\n }\n } else {\n if (!value.length) {\n if (memoizedExpandedKeys !== undefined) {\n disableExpandAnimationForOneTick();\n doUpdateExpandedKeys(memoizedExpandedKeys, getOptionsByKeys(memoizedExpandedKeys), {\n node: null,\n action: 'filter'\n });\n }\n } else {\n if (!oldValue.length) {\n memoizedExpandedKeys = mergedExpandedKeysRef.value;\n }\n const {\n expandedKeys\n } = filteredTreeInfoRef.value;\n if (expandedKeys !== undefined) {\n disableExpandAnimationForOneTick();\n doUpdateExpandedKeys(expandedKeys, getOptionsByKeys(expandedKeys), {\n node: null,\n action: 'filter'\n });\n }\n }\n }\n });\n function triggerLoading(node) {\n return __awaiter(this, void 0, void 0, function* () {\n const {\n onLoad\n } = props;\n if (!onLoad) {\n if (process.env.NODE_ENV !== 'production') {\n warn('tree', 'There is unloaded node in data but props.onLoad is not specified.');\n }\n yield Promise.resolve();\n return;\n }\n const {\n value: loadingKeys\n } = loadingKeysRef;\n if (!loadingKeys.has(node.key)) {\n loadingKeys.add(node.key);\n try {\n const loadResult = yield onLoad(node.rawNode);\n if (loadResult === false) {\n resetDragExpandState();\n }\n } catch (loadError) {\n console.error(loadError);\n resetDragExpandState();\n }\n loadingKeys.delete(node.key);\n }\n });\n }\n watchEffect(() => {\n var _a;\n const {\n value: displayTreeMate\n } = displayTreeMateRef;\n if (!displayTreeMate) return;\n const {\n getNode\n } = displayTreeMate;\n (_a = mergedExpandedKeysRef.value) === null || _a === void 0 ? void 0 : _a.forEach(key => {\n const node = getNode(key);\n if (node && !node.shallowLoaded) {\n void triggerLoading(node);\n }\n });\n });\n // animation in progress\n const aipRef = ref(false);\n // animation flattened nodes\n const afNodesRef = ref([]);\n // Note: Since the virtual list depends on min height, if there's a node\n // whose height starts from 0, the virtual list will have a wrong height\n // during animation. This will seldom cause wired scrollbar status. It is\n // fixable and need some changes in vueuc, I've no time so I just leave it\n // here. Maybe the bug won't be fixed during the life time of the project.\n watch(expandedNonLoadingKeysRef, (value, prevValue) => {\n if (!props.animated || expandAnimationDisabled) {\n void nextTick(syncScrollbar);\n return;\n }\n if (isDataReset) {\n return;\n }\n const nodeHeight = depx(themeRef.value.self.nodeHeight);\n const prevVSet = new Set(prevValue);\n let addedKey = null;\n let removedKey = null;\n for (const expandedKey of value) {\n if (!prevVSet.has(expandedKey)) {\n if (addedKey !== null) return; // multi expand, not triggered by click\n addedKey = expandedKey;\n }\n }\n const currentVSet = new Set(value);\n for (const expandedKey of prevValue) {\n if (!currentVSet.has(expandedKey)) {\n if (removedKey !== null) return; // multi collapse, not triggered by click\n removedKey = expandedKey;\n }\n }\n if (addedKey === null && removedKey === null) {\n // 1. multi action, not triggered by click\n // 2. no action, don't know what happened\n return;\n }\n const {\n virtualScroll\n } = props;\n const viewportHeight = (virtualScroll ? virtualListInstRef.value.listElRef : selfElRef.value).offsetHeight;\n const viewportItemCount = Math.ceil(viewportHeight / nodeHeight) + 1;\n // play add animation\n let baseExpandedKeys;\n if (addedKey !== null) {\n baseExpandedKeys = prevValue;\n }\n if (removedKey !== null) {\n if (baseExpandedKeys === undefined) {\n baseExpandedKeys = value;\n } else {\n baseExpandedKeys = baseExpandedKeys.filter(key => key !== removedKey);\n }\n }\n aipRef.value = true;\n afNodesRef.value = displayTreeMateRef.value.getFlattenedNodes(baseExpandedKeys);\n if (addedKey !== null) {\n const expandedNodeIndex = afNodesRef.value.findIndex(node => node.key === addedKey);\n if (~expandedNodeIndex) {\n const children = afNodesRef.value[expandedNodeIndex].children;\n // sometimes user will pass leaf keys in\n if (children) {\n const expandedChildren = flatten(children, value);\n afNodesRef.value.splice(expandedNodeIndex + 1, 0, {\n __motion: true,\n mode: 'expand',\n height: virtualScroll ? expandedChildren.length * nodeHeight : undefined,\n nodes: virtualScroll ? expandedChildren.slice(0, viewportItemCount) : expandedChildren\n });\n }\n }\n }\n if (removedKey !== null) {\n const collapsedNodeIndex = afNodesRef.value.findIndex(node => node.key === removedKey);\n if (~collapsedNodeIndex) {\n const collapsedNodeChildren = afNodesRef.value[collapsedNodeIndex].children;\n // Sometime the whole tree is change, remove a key doesn't mean it is collapsed,\n // but maybe children removed\n if (!collapsedNodeChildren) return;\n // play remove animation\n aipRef.value = true;\n const collapsedChildren = flatten(collapsedNodeChildren, value);\n afNodesRef.value.splice(collapsedNodeIndex + 1, 0, {\n __motion: true,\n mode: 'collapse',\n height: virtualScroll ? collapsedChildren.length * nodeHeight : undefined,\n nodes: virtualScroll ? collapsedChildren.slice(0, viewportItemCount) : collapsedChildren\n });\n }\n }\n });\n const getFIndexRef = computed(() => {\n return createIndexGetter(fNodesRef.value);\n });\n const mergedFNodesRef = computed(() => {\n if (aipRef.value) return afNodesRef.value;else return fNodesRef.value;\n });\n function syncScrollbar() {\n const {\n value: scrollbarInst\n } = scrollbarInstRef;\n if (scrollbarInst) scrollbarInst.sync();\n }\n function handleAfterEnter() {\n aipRef.value = false;\n if (props.virtualScroll) {\n // If virtual scroll, we won't listen to resize during animation, so\n // resize callback of virtual list won't be called and as a result\n // scrollbar won't sync. We need to sync scrollbar manually.\n void nextTick(syncScrollbar);\n }\n }\n function getOptionsByKeys(keys) {\n const {\n getNode\n } = dataTreeMateRef.value;\n return keys.map(key => {\n var _a;\n return ((_a = getNode(key)) === null || _a === void 0 ? void 0 : _a.rawNode) || null;\n });\n }\n function doUpdateExpandedKeys(value, option, meta) {\n const {\n 'onUpdate:expandedKeys': _onUpdateExpandedKeys,\n onUpdateExpandedKeys\n } = props;\n uncontrolledExpandedKeysRef.value = value;\n if (_onUpdateExpandedKeys) {\n call(_onUpdateExpandedKeys, value, option, meta);\n }\n if (onUpdateExpandedKeys) {\n call(onUpdateExpandedKeys, value, option, meta);\n }\n }\n function doUpdateCheckedKeys(value, option, meta) {\n const {\n 'onUpdate:checkedKeys': _onUpdateCheckedKeys,\n onUpdateCheckedKeys\n } = props;\n uncontrolledCheckedKeysRef.value = value;\n if (onUpdateCheckedKeys) {\n call(onUpdateCheckedKeys, value, option, meta);\n }\n if (_onUpdateCheckedKeys) {\n call(_onUpdateCheckedKeys, value, option, meta);\n }\n }\n function doUpdateIndeterminateKeys(value, option) {\n const {\n 'onUpdate:indeterminateKeys': _onUpdateIndeterminateKeys,\n onUpdateIndeterminateKeys\n } = props;\n if (_onUpdateIndeterminateKeys) {\n call(_onUpdateIndeterminateKeys, value, option);\n }\n if (onUpdateIndeterminateKeys) {\n call(onUpdateIndeterminateKeys, value, option);\n }\n }\n function doUpdateSelectedKeys(value, option, meta) {\n const {\n 'onUpdate:selectedKeys': _onUpdateSelectedKeys,\n onUpdateSelectedKeys\n } = props;\n uncontrolledSelectedKeysRef.value = value;\n if (onUpdateSelectedKeys) {\n call(onUpdateSelectedKeys, value, option, meta);\n }\n if (_onUpdateSelectedKeys) {\n call(_onUpdateSelectedKeys, value, option, meta);\n }\n }\n // Drag & Drop\n function doDragEnter(info) {\n const {\n onDragenter\n } = props;\n if (onDragenter) call(onDragenter, info);\n }\n function doDragLeave(info) {\n const {\n onDragleave\n } = props;\n if (onDragleave) call(onDragleave, info);\n }\n function doDragEnd(info) {\n const {\n onDragend\n } = props;\n if (onDragend) call(onDragend, info);\n }\n function doDragStart(info) {\n const {\n onDragstart\n } = props;\n if (onDragstart) call(onDragstart, info);\n }\n function doDragOver(info) {\n const {\n onDragover\n } = props;\n if (onDragover) call(onDragover, info);\n }\n function doDrop(info) {\n const {\n onDrop\n } = props;\n if (onDrop) call(onDrop, info);\n }\n function resetDndState() {\n resetDragState();\n resetDropState();\n }\n function resetDragState() {\n draggingNodeRef.value = null;\n }\n function resetDropState() {\n droppingOffsetLevelRef.value = 0;\n droppingNodeRef.value = null;\n droppingMouseNodeRef.value = null;\n droppingPositionRef.value = null;\n resetDragExpandState();\n }\n function resetDragExpandState() {\n if (expandTimerId) {\n window.clearTimeout(expandTimerId);\n expandTimerId = null;\n }\n nodeKeyToBeExpanded = null;\n }\n function handleCheck(node, checked) {\n // We don't guard for leaf only since we have done it in view layer\n if (props.disabled || isNodeDisabled(node, props.disabledField)) {\n return;\n }\n if (props.internalUnifySelectCheck && !props.multiple) {\n handleSelect(node);\n return;\n }\n const checkedAction = checked ? 'check' : 'uncheck';\n const {\n checkedKeys,\n indeterminateKeys\n } = dataTreeMateRef.value[checkedAction](node.key, displayedCheckedKeysRef.value, {\n cascade: props.cascade,\n checkStrategy: mergedCheckStrategyRef.value,\n allowNotLoaded: props.allowCheckingNotLoaded\n });\n doUpdateCheckedKeys(checkedKeys, getOptionsByKeys(checkedKeys), {\n node: node.rawNode,\n action: checkedAction\n });\n doUpdateIndeterminateKeys(indeterminateKeys, getOptionsByKeys(indeterminateKeys));\n }\n function toggleExpand(node) {\n if (props.disabled) return;\n const {\n key\n } = node;\n const {\n value: mergedExpandedKeys\n } = mergedExpandedKeysRef;\n const index = mergedExpandedKeys.findIndex(expandNodeId => expandNodeId === key);\n if (~index) {\n const expandedKeysAfterChange = Array.from(mergedExpandedKeys);\n expandedKeysAfterChange.splice(index, 1);\n doUpdateExpandedKeys(expandedKeysAfterChange, getOptionsByKeys(expandedKeysAfterChange), {\n node: node.rawNode,\n action: 'collapse'\n });\n } else {\n const nodeToBeExpanded = displayTreeMateRef.value.getNode(key);\n if (!nodeToBeExpanded || nodeToBeExpanded.isLeaf) {\n return;\n }\n let nextKeys;\n if (props.accordion) {\n const siblingKeySet = new Set(node.siblings.map(({\n key\n }) => key));\n nextKeys = mergedExpandedKeys.filter(expandedKey => {\n return !siblingKeySet.has(expandedKey);\n });\n nextKeys.push(key);\n } else {\n nextKeys = mergedExpandedKeys.concat(key);\n }\n doUpdateExpandedKeys(nextKeys, getOptionsByKeys(nextKeys), {\n node: node.rawNode,\n action: 'expand'\n });\n }\n }\n function handleSwitcherClick(node) {\n if (props.disabled || aipRef.value) return;\n toggleExpand(node);\n }\n function handleSelect(node) {\n if (props.disabled || !props.selectable) {\n return;\n }\n pendingNodeKeyRef.value = node.key;\n if (props.internalUnifySelectCheck) {\n const {\n value: {\n checkedKeys,\n indeterminateKeys\n }\n } = checkedStatusRef;\n if (props.multiple) {\n handleCheck(node, !(checkedKeys.includes(node.key) || indeterminateKeys.includes(node.key)));\n } else {\n doUpdateCheckedKeys([node.key], getOptionsByKeys([node.key]), {\n node: node.rawNode,\n action: 'check'\n });\n }\n }\n if (props.multiple) {\n const selectedKeys = Array.from(mergedSelectedKeysRef.value);\n const index = selectedKeys.findIndex(key => key === node.key);\n if (~index) {\n if (props.cancelable) {\n selectedKeys.splice(index, 1);\n }\n } else if (!~index) {\n selectedKeys.push(node.key);\n }\n doUpdateSelectedKeys(selectedKeys, getOptionsByKeys(selectedKeys), {\n node: node.rawNode,\n action: ~index ? 'unselect' : 'select'\n });\n } else {\n const selectedKeys = mergedSelectedKeysRef.value;\n if (selectedKeys.includes(node.key)) {\n if (props.cancelable) {\n doUpdateSelectedKeys([], [], {\n node: node.rawNode,\n action: 'unselect'\n });\n }\n } else {\n doUpdateSelectedKeys([node.key], getOptionsByKeys([node.key]), {\n node: node.rawNode,\n action: 'select'\n });\n }\n }\n }\n function expandDragEnterNode(node) {\n if (expandTimerId) {\n window.clearTimeout(expandTimerId);\n expandTimerId = null;\n }\n // Don't expand leaf node.\n if (node.isLeaf) return;\n nodeKeyToBeExpanded = node.key;\n const expand = () => {\n if (nodeKeyToBeExpanded !== node.key) return;\n const {\n value: droppingMouseNode\n } = droppingMouseNodeRef;\n if (droppingMouseNode && droppingMouseNode.key === node.key && !mergedExpandedKeysRef.value.includes(node.key)) {\n const nextKeys = mergedExpandedKeysRef.value.concat(node.key);\n doUpdateExpandedKeys(nextKeys, getOptionsByKeys(nextKeys), {\n node: node.rawNode,\n action: 'expand'\n });\n }\n expandTimerId = null;\n nodeKeyToBeExpanded = null;\n };\n if (!node.shallowLoaded) {\n expandTimerId = window.setTimeout(() => {\n void triggerLoading(node).then(() => {\n expand();\n });\n }, 1000);\n } else {\n expandTimerId = window.setTimeout(() => {\n expand();\n }, 1000);\n }\n }\n // Dnd\n function handleDragEnter({\n event,\n node\n }) {\n // node should be a tmNode\n if (!props.draggable || props.disabled || isNodeDisabled(node, props.disabledField)) {\n return;\n }\n handleDragOver({\n event,\n node\n }, false);\n doDragEnter({\n event,\n node: node.rawNode\n });\n }\n function handleDragLeave({\n event,\n node\n }) {\n if (!props.draggable || props.disabled || isNodeDisabled(node, props.disabledField)) {\n return;\n }\n doDragLeave({\n event,\n node: node.rawNode\n });\n }\n function handleDragLeaveTree(e) {\n if (e.target !== e.currentTarget) return;\n resetDropState();\n }\n // Dragend is ok, we don't need to add global listener to reset drag status\n function handleDragEnd({\n event,\n node\n }) {\n resetDndState();\n if (!props.draggable || props.disabled || isNodeDisabled(node, props.disabledField)) {\n return;\n }\n doDragEnd({\n event,\n node: node.rawNode\n });\n }\n function handleDragStart({\n event,\n node\n }) {\n var _a;\n if (!props.draggable || props.disabled || isNodeDisabled(node, props.disabledField)) {\n return;\n }\n // Most of time, the image will block user's view\n if (emptyImage) {\n (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.setDragImage(emptyImage, 0, 0);\n }\n dragStartX = event.clientX;\n draggingNodeRef.value = node;\n doDragStart({\n event,\n node: node.rawNode\n });\n }\n function handleDragOver({\n event,\n node\n }, emit = true) {\n var _a;\n if (!props.draggable || props.disabled || isNodeDisabled(node, props.disabledField)) {\n return;\n }\n const {\n value: draggingNode\n } = draggingNodeRef;\n if (!draggingNode) return;\n const {\n allowDrop,\n indent\n } = props;\n if (emit) doDragOver({\n event,\n node: node.rawNode\n });\n // Update dropping node\n const el = event.currentTarget;\n const {\n height: elOffsetHeight,\n top: elClientTop\n } = el.getBoundingClientRect();\n const eventOffsetY = event.clientY - elClientTop;\n let mousePosition;\n const allowDropInside = allowDrop({\n node: node.rawNode,\n dropPosition: 'inside',\n phase: 'drag'\n });\n if (allowDropInside) {\n if (eventOffsetY <= 8) {\n mousePosition = 'before';\n } else if (eventOffsetY >= elOffsetHeight - 8) {\n mousePosition = 'after';\n } else {\n mousePosition = 'inside';\n }\n } else {\n if (eventOffsetY <= elOffsetHeight / 2) {\n mousePosition = 'before';\n } else {\n mousePosition = 'after';\n }\n }\n const {\n value: getFindex\n } = getFIndexRef;\n /** determine the drop position and drop node */\n /** the dropping node needn't to be the mouse hovering node! */\n /**\n * if there is something i've learned from implementing a complex\n * drag & drop. that is never write unit test before you really figure\n * out what behavior is exactly you want.\n */\n let finalDropNode;\n let finalDropPosition;\n const hoverNodeFIndex = getFindex(node.key);\n if (hoverNodeFIndex === null) {\n resetDropState();\n return;\n }\n let mouseAtExpandedNonLeafNode = false;\n if (mousePosition === 'inside') {\n finalDropNode = node;\n finalDropPosition = 'inside';\n } else {\n if (mousePosition === 'before') {\n if (node.isFirstChild) {\n finalDropNode = node;\n finalDropPosition = 'before';\n } else {\n finalDropNode = fNodesRef.value[hoverNodeFIndex - 1];\n finalDropPosition = 'after';\n }\n } else {\n finalDropNode = node;\n finalDropPosition = 'after';\n }\n }\n // If the node is non-leaf and it is expanded, we don't allow it to\n // drop after it and change it to drop before its next view sibling\n if (!finalDropNode.isLeaf && mergedExpandedKeysRef.value.includes(finalDropNode.key)) {\n mouseAtExpandedNonLeafNode = true;\n if (finalDropPosition === 'after') {\n finalDropNode = fNodesRef.value[hoverNodeFIndex + 1];\n if (!finalDropNode) {\n // maybe there is no next view sibling when non-leaf node has no\n // children and it is the last node in the tree\n finalDropNode = node;\n finalDropPosition = 'inside';\n } else {\n finalDropPosition = 'before';\n }\n }\n }\n const droppingMouseNode = finalDropNode;\n droppingMouseNodeRef.value = droppingMouseNode;\n // This is a speacial case, user is dragging a last child itself, so we\n // only view it as they are trying to drop after it.\n // There are some relevant codes in bailout 1's child branch.\n // Also, the expand bailout should have a high priority. If it's non-leaf\n // node and expanded, keep its origin drop position\n if (!mouseAtExpandedNonLeafNode && draggingNode.isLastChild && draggingNode.key === finalDropNode.key) {\n finalDropPosition = 'after';\n }\n if (finalDropPosition === 'after') {\n let offset = dragStartX - event.clientX; // drag left => > 0\n let offsetLevel = 0;\n while (offset >= indent / 2 // divide by 2 to make it easier to trigger\n && finalDropNode.parent !== null && finalDropNode.isLastChild && offsetLevel < 1) {\n offset -= indent;\n offsetLevel += 1;\n finalDropNode = finalDropNode.parent;\n }\n droppingOffsetLevelRef.value = offsetLevel;\n } else {\n droppingOffsetLevelRef.value = 0;\n }\n // Bailout 1\n // Drag self into self\n // Drag it into direct parent\n if (draggingNode.contains(finalDropNode) || finalDropPosition === 'inside' && ((_a = draggingNode.parent) === null || _a === void 0 ? void 0 : _a.key) === finalDropNode.key) {\n if (draggingNode.key === droppingMouseNode.key && draggingNode.key === finalDropNode.key) {\n // This is special case that we want ui to show a mark to guide user\n // to start dragging. Nor they will think nothing happens.\n // However this is an invalid drop, we need to guard it inside\n // handleDrop\n } else {\n resetDropState();\n return;\n }\n }\n // Bailout 3\n if (!allowDrop({\n node: finalDropNode.rawNode,\n dropPosition: finalDropPosition,\n phase: 'drag'\n })) {\n resetDropState();\n return;\n }\n if (draggingNode.key === finalDropNode.key) {\n // don't expand when drag on itself\n resetDragExpandState();\n } else {\n if (nodeKeyToBeExpanded !== finalDropNode.key) {\n if (finalDropPosition === 'inside') {\n if (props.expandOnDragenter) {\n expandDragEnterNode(finalDropNode);\n // Bailout 4\n // not try to loading\n if (!finalDropNode.shallowLoaded && nodeKeyToBeExpanded !== finalDropNode.key) {\n resetDndState();\n return;\n }\n } else {\n // Bailout 5\n // never expands on drag\n if (!finalDropNode.shallowLoaded) {\n resetDndState();\n return;\n }\n }\n } else {\n resetDragExpandState();\n }\n } else {\n if (finalDropPosition !== 'inside') {\n resetDragExpandState();\n }\n }\n }\n droppingPositionRef.value = finalDropPosition;\n droppingNodeRef.value = finalDropNode;\n }\n function handleDrop({\n event,\n node,\n dropPosition\n }) {\n if (!props.draggable || props.disabled || isNodeDisabled(node, props.disabledField)) {\n return;\n }\n const {\n value: draggingNode\n } = draggingNodeRef;\n const {\n value: droppingNode\n } = droppingNodeRef;\n const {\n value: droppingPosition\n } = droppingPositionRef;\n if (!draggingNode || !droppingNode || !droppingPosition) {\n return;\n }\n // Bailout 1\n if (!props.allowDrop({\n node: droppingNode.rawNode,\n dropPosition: droppingPosition,\n phase: 'drag'\n })) {\n return;\n }\n // Bailout 2\n // This is a special case to guard since we want ui to show the status\n // but not to emit a event\n if (draggingNode.key === droppingNode.key) {\n return;\n }\n // Bailout 3\n // insert before its next node\n // insert after its prev node\n if (droppingPosition === 'before') {\n const nextNode = draggingNode.getNext({\n includeDisabled: true\n });\n if (nextNode) {\n if (nextNode.key === droppingNode.key) {\n resetDropState();\n return;\n }\n }\n }\n if (droppingPosition === 'after') {\n const prevNode = draggingNode.getPrev({\n includeDisabled: true\n });\n if (prevNode) {\n if (prevNode.key === droppingNode.key) {\n resetDropState();\n return;\n }\n }\n }\n doDrop({\n event,\n node: droppingNode.rawNode,\n dragNode: draggingNode.rawNode,\n dropPosition\n });\n resetDndState();\n }\n function handleScroll() {\n syncScrollbar();\n }\n function handleResize() {\n syncScrollbar();\n }\n function handleFocusout(e) {\n var _a;\n if (props.virtualScroll || props.internalScrollable) {\n const {\n value: scrollbarInst\n } = scrollbarInstRef;\n if ((_a = scrollbarInst === null || scrollbarInst === void 0 ? void 0 : scrollbarInst.containerRef) === null || _a === void 0 ? void 0 : _a.contains(e.relatedTarget)) {\n return;\n }\n pendingNodeKeyRef.value = null;\n } else {\n const {\n value: selfEl\n } = selfElRef;\n if (selfEl === null || selfEl === void 0 ? void 0 : selfEl.contains(e.relatedTarget)) return;\n pendingNodeKeyRef.value = null;\n }\n }\n watch(pendingNodeKeyRef, value => {\n var _a, _b;\n if (value === null) return;\n if (props.virtualScroll) {\n (_a = virtualListInstRef.value) === null || _a === void 0 ? void 0 : _a.scrollTo({\n key: value\n });\n } else if (props.internalScrollable) {\n const {\n value: scrollbarInst\n } = scrollbarInstRef;\n if (scrollbarInst === null) return;\n const targetEl = (_b = scrollbarInst.contentRef) === null || _b === void 0 ? void 0 : _b.querySelector(`[data-key=\"${createDataKey(value)}\"]`);\n if (!targetEl) return;\n scrollbarInst.scrollTo({\n el: targetEl\n });\n }\n });\n provide(treeInjectionKey, {\n loadingKeysRef,\n highlightKeySetRef: mergedHighlightKeySetRef,\n displayedCheckedKeysRef,\n displayedIndeterminateKeysRef,\n mergedSelectedKeysRef,\n mergedExpandedKeysRef,\n mergedThemeRef: themeRef,\n mergedCheckStrategyRef,\n nodePropsRef: toRef(props, 'nodeProps'),\n disabledRef: toRef(props, 'disabled'),\n checkableRef: toRef(props, 'checkable'),\n selectableRef: toRef(props, 'selectable'),\n expandOnClickRef: toRef(props, 'expandOnClick'),\n onLoadRef: toRef(props, 'onLoad'),\n draggableRef: toRef(props, 'draggable'),\n blockLineRef: toRef(props, 'blockLine'),\n indentRef: toRef(props, 'indent'),\n cascadeRef: toRef(props, 'cascade'),\n checkOnClickRef: toRef(props, 'checkOnClick'),\n checkboxPlacementRef: props.checkboxPlacement,\n droppingMouseNodeRef,\n droppingNodeParentRef,\n draggingNodeRef,\n droppingPositionRef,\n droppingOffsetLevelRef,\n fNodesRef,\n pendingNodeKeyRef,\n showLineRef: toRef(props, 'showLine'),\n disabledFieldRef: toRef(props, 'disabledField'),\n internalScrollableRef: toRef(props, 'internalScrollable'),\n internalCheckboxFocusableRef: toRef(props, 'internalCheckboxFocusable'),\n internalTreeSelect: props.internalTreeSelect,\n renderLabelRef: toRef(props, 'renderLabel'),\n renderPrefixRef: toRef(props, 'renderPrefix'),\n renderSuffixRef: toRef(props, 'renderSuffix'),\n renderSwitcherIconRef: toRef(props, 'renderSwitcherIcon'),\n labelFieldRef: toRef(props, 'labelField'),\n multipleRef: toRef(props, 'multiple'),\n overrideDefaultNodeClickBehaviorRef: toRef(props, 'overrideDefaultNodeClickBehavior'),\n handleSwitcherClick,\n handleDragEnd,\n handleDragEnter,\n handleDragLeave,\n handleDragStart,\n handleDrop,\n handleDragOver,\n handleSelect,\n handleCheck\n });\n function scrollTo(options, y) {\n var _a, _b;\n if (typeof options === 'number') {\n (_a = virtualListInstRef.value) === null || _a === void 0 ? void 0 : _a.scrollTo(options, y || 0);\n } else {\n (_b = virtualListInstRef.value) === null || _b === void 0 ? void 0 : _b.scrollTo(options);\n }\n }\n const exposedMethods = {\n handleKeydown,\n scrollTo,\n getCheckedData: () => {\n if (!props.checkable) return {\n keys: [],\n options: []\n };\n const {\n checkedKeys\n } = checkedStatusRef.value;\n return {\n keys: checkedKeys,\n options: getOptionsByKeys(checkedKeys)\n };\n },\n getIndeterminateData: () => {\n if (!props.checkable) return {\n keys: [],\n options: []\n };\n const {\n indeterminateKeys\n } = checkedStatusRef.value;\n return {\n keys: indeterminateKeys,\n options: getOptionsByKeys(indeterminateKeys)\n };\n }\n };\n const cssVarsRef = computed(() => {\n const {\n common: {\n cubicBezierEaseInOut\n },\n self: {\n fontSize,\n nodeBorderRadius,\n nodeColorHover,\n nodeColorPressed,\n nodeColorActive,\n arrowColor,\n loadingColor,\n nodeTextColor,\n nodeTextColorDisabled,\n dropMarkColor,\n nodeWrapperPadding,\n nodeHeight,\n lineHeight,\n lineColor\n }\n } = themeRef.value;\n const lineOffsetTop = getPadding(nodeWrapperPadding, 'top');\n const lineOffsetBottom = getPadding(nodeWrapperPadding, 'bottom');\n const nodeContentHeight = pxfy(depx(nodeHeight) - depx(lineOffsetTop) - depx(lineOffsetBottom));\n return {\n '--n-arrow-color': arrowColor,\n '--n-loading-color': loadingColor,\n '--n-bezier': cubicBezierEaseInOut,\n '--n-font-size': fontSize,\n '--n-node-border-radius': nodeBorderRadius,\n '--n-node-color-active': nodeColorActive,\n '--n-node-color-hover': nodeColorHover,\n '--n-node-color-pressed': nodeColorPressed,\n '--n-node-text-color': nodeTextColor,\n '--n-node-text-color-disabled': nodeTextColorDisabled,\n '--n-drop-mark-color': dropMarkColor,\n '--n-node-wrapper-padding': nodeWrapperPadding,\n '--n-line-offset-top': `-${lineOffsetTop}`,\n '--n-line-offset-bottom': `-${lineOffsetBottom}`,\n '--n-node-content-height': nodeContentHeight,\n '--n-line-height': lineHeight,\n '--n-line-color': lineColor\n };\n });\n const themeClassHandle = inlineThemeDisabled ? useThemeClass('tree', undefined, cssVarsRef, props) : undefined;\n return Object.assign(Object.assign({}, exposedMethods), {\n mergedClsPrefix: mergedClsPrefixRef,\n mergedTheme: themeRef,\n rtlEnabled: rtlEnabledRef,\n fNodes: mergedFNodesRef,\n aip: aipRef,\n selfElRef,\n virtualListInstRef,\n scrollbarInstRef,\n handleFocusout,\n handleDragLeaveTree,\n handleScroll,\n getScrollContainer,\n getScrollContent,\n handleAfterEnter,\n handleResize,\n cssVars: inlineThemeDisabled ? undefined : cssVarsRef,\n themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass,\n onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender\n });\n },\n render() {\n var _a;\n const {\n fNodes,\n internalRenderEmpty\n } = this;\n if (!fNodes.length && internalRenderEmpty) {\n return internalRenderEmpty();\n }\n const {\n mergedClsPrefix,\n blockNode,\n blockLine,\n draggable,\n disabled,\n internalFocusable,\n checkable,\n handleKeydown,\n rtlEnabled,\n handleFocusout,\n scrollbarProps\n } = this;\n const mergedFocusable = internalFocusable && !disabled;\n const tabindex = mergedFocusable ? '0' : undefined;\n const treeClass = [`${mergedClsPrefix}-tree`, rtlEnabled && `${mergedClsPrefix}-tree--rtl`, checkable && `${mergedClsPrefix}-tree--checkable`, (blockLine || blockNode) && `${mergedClsPrefix}-tree--block-node`, blockLine && `${mergedClsPrefix}-tree--block-line`];\n const createNode = tmNode => {\n return '__motion' in tmNode ? h(MotionWrapper, {\n height: tmNode.height,\n nodes: tmNode.nodes,\n clsPrefix: mergedClsPrefix,\n mode: tmNode.mode,\n onAfterEnter: this.handleAfterEnter\n }) : h(NTreeNode, {\n key: tmNode.key,\n tmNode: tmNode,\n clsPrefix: mergedClsPrefix\n });\n };\n if (this.virtualScroll) {\n const {\n mergedTheme,\n internalScrollablePadding\n } = this;\n const padding = getPadding(internalScrollablePadding || '0');\n return h(NxScrollbar, Object.assign({}, scrollbarProps, {\n ref: \"scrollbarInstRef\",\n onDragleave: draggable ? this.handleDragLeaveTree : undefined,\n container: this.getScrollContainer,\n content: this.getScrollContent,\n class: treeClass,\n theme: mergedTheme.peers.Scrollbar,\n themeOverrides: mergedTheme.peerOverrides.Scrollbar,\n tabindex: tabindex,\n onKeydown: mergedFocusable ? handleKeydown : undefined,\n onFocusout: mergedFocusable ? handleFocusout : undefined\n }), {\n default: () => {\n var _a;\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n return !fNodes.length ? resolveSlot(this.$slots.empty, () => [h(NEmpty, {\n class: `${mergedClsPrefix}-tree__empty`,\n theme: this.mergedTheme.peers.Empty,\n themeOverrides: this.mergedTheme.peerOverrides.Empty\n })]) : h(VVirtualList, {\n ref: \"virtualListInstRef\",\n items: this.fNodes,\n itemSize: depx(mergedTheme.self.nodeHeight),\n ignoreItemResize: this.aip,\n paddingTop: padding.top,\n paddingBottom: padding.bottom,\n class: this.themeClass,\n style: [this.cssVars, {\n paddingLeft: padding.left,\n paddingRight: padding.right\n }],\n onScroll: this.handleScroll,\n onResize: this.handleResize,\n showScrollbar: false,\n itemResizable: true\n }, {\n default: ({\n item\n }) => createNode(item)\n });\n }\n });\n }\n const {\n internalScrollable\n } = this;\n treeClass.push(this.themeClass);\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n if (internalScrollable) {\n return h(NxScrollbar, Object.assign({}, scrollbarProps, {\n class: treeClass,\n tabindex: tabindex,\n onKeydown: mergedFocusable ? handleKeydown : undefined,\n onFocusout: mergedFocusable ? handleFocusout : undefined,\n style: this.cssVars,\n contentStyle: {\n padding: this.internalScrollablePadding\n }\n }), {\n default: () => h(\"div\", {\n onDragleave: draggable ? this.handleDragLeaveTree : undefined,\n ref: \"selfElRef\"\n }, this.fNodes.map(createNode))\n });\n } else {\n return h(\"div\", {\n class: treeClass,\n tabindex: tabindex,\n ref: \"selfElRef\",\n style: this.cssVars,\n onKeydown: mergedFocusable ? handleKeydown : undefined,\n onFocusout: mergedFocusable ? handleFocusout : undefined,\n onDragleave: draggable ? this.handleDragLeaveTree : undefined\n }, !fNodes.length ? resolveSlot(this.$slots.empty, () => [h(NEmpty, {\n class: `${mergedClsPrefix}-tree__empty`,\n theme: this.mergedTheme.peers.Empty,\n themeOverrides: this.mergedTheme.peerOverrides.Empty\n })]) : fNodes.map(createNode));\n }\n }\n});","<script lang=\"ts\">\nconst TrackGraphLoader = () => import('@/components/TrackGraph.vue');\nconst TrackGraph = defineAsyncComponent({\n loader: TrackGraphLoader,\n delay: 0,\n});\nsetTimeout(TrackGraphLoader, 3000);\n</script>\n<script setup lang=\"ts\">\nimport SelectorText from '@/components/SelectorText.vue';\nimport { buildEmptyFn, colorList } from '@/utils/others';\nimport { type ResolvedSelector } from '@/utils/selector';\nimport type { AstNode, QueryResult } from '@gkd-kit/selector';\nimport { UnitSelectorExpression } from '@gkd-kit/selector';\nimport type { StyleValue } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n nodes: RawNode[];\n queryResult: QueryResult<RawNode>;\n selector: ResolvedSelector;\n onClose?: () => void;\n }>(),\n {\n onClose: buildEmptyFn,\n },\n);\n\nconst allUnitResults = computed(() => {\n if (!props.queryResult) return [];\n return props.queryResult.unitResults.asJsReadonlyArrayView().concat();\n});\n\nconst singleUnitResults = computed(() => {\n return allUnitResults.value.filter((v) => !v.context.prev);\n});\n\nconst showUnitResults = computed(() => {\n return allUnitResults.value.filter((v) => v.context.prev);\n});\n\nconst filterUnitResults = shallowRef<QueryResult.UnitResult<RawNode>[]>([]);\nwatchEffect(() => {\n filterUnitResults.value = showUnitResults.value;\n});\nconst switchUnitResult = (unitResult: QueryResult.UnitResult<RawNode>) => {\n if (filterUnitResults.value.includes(unitResult)) {\n filterUnitResults.value = filterUnitResults.value.filter(\n (v) => v !== unitResult,\n );\n } else {\n filterUnitResults.value = filterUnitResults.value.concat(unitResult);\n }\n};\n\nconst getNodeStyle = (node: AstNode<any>): StyleValue => {\n const value = node.value;\n if (\n value instanceof UnitSelectorExpression &&\n allUnitResults.value.some((u) => u.expression === value) &&\n !node.outChildren.some((v) => v.value instanceof UnitSelectorExpression)\n ) {\n return {\n outline: '1px solid #00F',\n };\n }\n return '';\n};\n</script>\n<template>\n <div\n class=\"TrackCard\"\n flex\n flex-col\n h-full\n p-12px\n box-border\n gap-8px\n overflow-hidden\n >\n <div flex justify-between items-center>\n <div flex items-center gap-4px>\n <SvgIcon name=\"path\" h=\"24px\" />\n <div text=\"20px/28px\" font-bold>选择器路径视图</div>\n </div>\n <NButton text @click=\"onClose\">\n <SvgIcon name=\"close\" h=\"20px\" />\n </NButton>\n </div>\n <div flex-1 flex gap-12px overflow-hidden>\n <div self-stretch flex=\"[2]\">\n <TrackGraph\n v-if=\"nodes.length && queryResult\"\n :nodes=\"nodes\"\n :queryResult=\"queryResult\"\n :showUnitResults=\"showUnitResults\"\n :filterUnitResults=\"filterUnitResults\"\n class=\"h-[calc(100%-2px)] b-1px b-solid\"\n />\n <div relative pointer-events-none z-1>\n <div absolute left-8px bottom-8px text=\"14px/14px #6C6E71\">\n *为简化视图已隐藏无关节点\n </div>\n </div>\n </div>\n <NScrollbar class=\"self-stretch flex-1 text-20px leading-28px gkd_code\">\n <div mb-24px break-all px-4px py-2px bg=\"#eee\">\n <SelectorText\n :source=\"selector.source\"\n :node=\"selector.ast\"\n :getNodeStyle=\"getNodeStyle\"\n />\n </div>\n <div flex flex-col gap-12px>\n <div v-if=\"singleUnitResults.length\" flex gap-8px>\n <div\n v-for=\"(unitResult, i) in singleUnitResults\"\n :key=\"i\"\n break-all\n px-4px\n py-2px\n b-1px\n b-solid\n b=\"#ccc\"\n >\n <SelectorText\n :source=\"selector.source\"\n :node=\"selector.findAst(unitResult.expression)\"\n />\n </div>\n </div>\n <div\n v-for=\"(unitResult, i) in showUnitResults\"\n :key=\"i\"\n cursor-pointer\n break-all\n px-4px\n py-2px\n b-1px\n b-solid\n transition-colors\n :style=\"{\n borderColor: colorList[i % colorList.length],\n backgroundColor: filterUnitResults.includes(unitResult)\n ? '#eee'\n : undefined,\n }\"\n @click=\"switchUnitResult(unitResult)\"\n >\n <div\n inline-block\n align-middle\n size-20px\n :style=\"{\n backgroundColor: colorList[i % colorList.length],\n }\"\n />\n <span pl-4px />\n <SelectorText\n :source=\"selector.source\"\n :node=\"selector.findAst(unitResult.expression)\"\n />\n </div>\n </div>\n </NScrollbar>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport TrackCard from './TrackCard.vue';\nimport { buildEmptyFn } from '@/utils/others';\n\nconst props = withDefaults(\n defineProps<{\n data?: TrackCardProps;\n show?: boolean;\n onUpdateShow?: (show: boolean) => void;\n onUpdateData?: (data?: TrackCardProps) => void;\n }>(),\n {\n onUpdateShow: buildEmptyFn,\n onUpdateData: buildEmptyFn,\n },\n);\n\ntype ShowStatus = -1 | 0 | 1;\n\nconst innerShow = ref(false);\nconst showStatus = ref<ShowStatus>(0);\nwatchImmediate(\n () => props.show,\n async () => {\n if (props.show) {\n innerShow.value = true;\n showStatus.value = -1;\n await new Promise((r) => setTimeout(r, 300));\n showStatus.value = 0;\n } else {\n showStatus.value = 1;\n await new Promise((r) => setTimeout(r, 300));\n innerShow.value = false;\n showStatus.value = 0;\n props.onUpdateData();\n }\n },\n);\n\nuseEventListener('keyup', (e) => {\n if (e.key === 'Escape') {\n props.onUpdateShow(false);\n }\n});\n</script>\n<template>\n <div\n v-if=\"innerShow\"\n class=\"TrackModal\"\n absolute\n left-0\n top-0\n bg-white\n z-3000\n w=\"[--gkd-w]\"\n h=\"[--gkd-h]\"\n :class=\"{\n 'track-model-enter': showStatus === -1,\n 'track-model-exit': showStatus === 1,\n }\"\n >\n <TrackCard v-if=\"data\" v-bind=\"data\" @close=\"onUpdateShow(false)\" />\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.track-model-enter {\n animation: enter-keyframes 300ms;\n}\n@keyframes enter-keyframes {\n 0% {\n opacity: 0.5;\n transform: translateY(15%);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n.track-model-exit {\n animation: exit-keyframes 300ms forwards;\n}\n@keyframes exit-keyframes {\n 0% {\n opacity: 1;\n transform: translateY(0);\n }\n 100% {\n opacity: 0;\n transform: translateY(15%);\n }\n}\n</style>\n","export const useDragMove = (xFilter: (x: number) => boolean) => {\n const target = shallowRef<HTMLElement>();\n const prevOffset = {\n x: 0,\n y: 0,\n };\n\n const offset = shallowReactive({ ...prevOffset });\n let prevEv: PointerEvent | undefined = undefined;\n const preventSelection = (ev: Event) => {\n if (prevEv) {\n ev.preventDefault();\n }\n };\n const startMove = (ev: PointerEvent) => {\n prevEv = ev;\n prevOffset.x = offset.x;\n prevOffset.y = offset.y;\n };\n const move = (ev: PointerEvent) => {\n if (!prevEv || !target.value) return;\n\n const dx = ev.clientX - prevEv.clientX; // ev.movementX;\n const dy = ev.clientY - prevEv.clientY; //ev.movementY;\n\n if (xFilter(dx)) {\n offset.x = prevOffset.x + dx;\n }\n offset.y = prevOffset.y + dy;\n };\n const endMove = () => {\n prevEv = undefined;\n };\n const windowEndMove = () => {\n if (!target.value || !prevEv) return;\n endMove();\n const { top, bottom, left, right } = target.value.getBoundingClientRect();\n if (\n right < 0 ||\n left > window.innerWidth ||\n bottom < 0 ||\n top > window.innerHeight\n ) {\n // isOutsideViewport\n offset.x = prevOffset.x;\n offset.y = prevOffset.y;\n }\n };\n onMounted(() => {\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', windowEndMove);\n document.addEventListener('selectstart', preventSelection);\n });\n onUnmounted(() => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', windowEndMove);\n document.removeEventListener('selectstart', preventSelection);\n endMove();\n });\n watch(target, (newValue, oldValue) => {\n if (newValue) {\n newValue.addEventListener('pointerdown', startMove);\n newValue.addEventListener('pointerup', endMove);\n }\n if (oldValue) {\n oldValue.removeEventListener('pointerdown', startMove);\n oldValue.removeEventListener('pointerup', endMove);\n }\n });\n onUnmounted(() => {\n if (!target.value) return;\n target.value.removeEventListener('pointerdown', startMove);\n target.value.removeEventListener('pointerup', endMove);\n });\n return {\n target,\n offset,\n };\n};\n\nlet currentMaxZIndex = 1000;\nexport const useZindex = () => {\n currentMaxZIndex++;\n const zIndex = shallowRef(currentMaxZIndex);\n const setTop = () => {\n if (zIndex.value === currentMaxZIndex) return;\n currentMaxZIndex++;\n zIndex.value = currentMaxZIndex;\n };\n return {\n zIndex,\n setTop,\n };\n};\n","<script setup lang=\"ts\">\nimport { useDragMove, useZindex } from '@/utils/draggable';\n\nconst props = withDefaults(\n defineProps<{\n initialValue?: {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n\n width?: number;\n };\n minWidth?: number;\n sizeDraggable?: boolean;\n show?: boolean;\n class?: string;\n }>(),\n { initialValue: () => ({}), show: true },\n);\n\nconst isLeft = props.initialValue.left !== void 0;\nconst isTop = props.initialValue.top !== void 0;\nconst prevOffset = {\n x: (isLeft ? props.initialValue.left : props.initialValue.right) ?? 0,\n y: (isTop ? props.initialValue.top : props.initialValue.bottom) ?? 0,\n};\n\nconst leftDragBar = useDragMove((dx) => {\n const w =\n (props.initialValue.width || 0) +\n rightDragBar.offset.x +\n -leftDragBar.offset.x -\n dx;\n return (props.minWidth || 0) < w;\n});\nconst rightDragBar = useDragMove((dx) => {\n const w =\n (props.initialValue.width || 0) +\n rightDragBar.offset.x +\n dx -\n leftDragBar.offset.x;\n\n return (props.minWidth || 0) < w;\n});\n\nconst offset = shallowReactive({ ...prevOffset });\nconst currentStyle = computed(() => {\n const width =\n (props.initialValue.width || 0) +\n rightDragBar.offset.x -\n leftDragBar.offset.x;\n const widthStyle = props.initialValue.width ? `width:${width}px;` : ``;\n const yStyle = isTop ? `top:${offset.y}px;` : `bottom:${offset.y}px;`;\n if (isLeft) {\n return `left:${offset.x - leftDragBar.offset.x}px;` + yStyle + widthStyle;\n } else {\n return `right:${offset.x - rightDragBar.offset.x}px;` + yStyle + widthStyle;\n }\n});\n/**\n * it will be PointerEvent when moving\n */\nlet prevEv: PointerEvent | undefined = undefined;\nconst moved = shallowRef(false);\nconst startMove = (ev: PointerEvent) => {\n prevEv = ev;\n prevOffset.x = offset.x;\n prevOffset.y = offset.y;\n moved.value = false;\n};\nconst move = (ev: PointerEvent) => {\n if (!target.value || !prevEv) return;\n\n const dx = ev.clientX - prevEv.clientX; // ev.movementX;\n const dy = ev.clientY - prevEv.clientY; //ev.movementY;\n\n offset.x = prevOffset.x + (isLeft ? dx : -dx);\n offset.y = prevOffset.y + (isTop ? dy : -dy);\n\n moved.value = true;\n};\nconst endMove = () => {\n prevEv = undefined;\n};\nconst box = shallowRef<HTMLElement>();\nconst target = shallowRef<HTMLElement>();\nconst preventSelection = (ev: Event) => {\n if (prevEv) {\n ev.preventDefault();\n }\n};\nconst transition = `transition-top,bottom,left,right-500`;\nconst windowEndMove = () => {\n if (!target.value || !prevEv) return;\n endMove();\n const { top, bottom, left, right } = target.value.getBoundingClientRect();\n if (\n right < 0 ||\n left > window.innerWidth ||\n bottom < 0 ||\n top > window.innerHeight\n ) {\n // isOutsideViewport\n offset.x = prevOffset.x;\n offset.y = prevOffset.y;\n\n const boxDiv = box.value;\n if (boxDiv) {\n boxDiv.classList.add(transition);\n setTimeout(() => {\n boxDiv.classList.remove(transition);\n }, 550);\n }\n }\n};\n\n// move 事件应该给 window. 如果给目标元素,容易出现鼠标移速过快无法跟随的bug\nonMounted(() => {\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', windowEndMove);\n document.addEventListener('selectstart', preventSelection);\n});\nonUnmounted(() => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', windowEndMove);\n document.removeEventListener('selectstart', preventSelection);\n endMove();\n});\n\nwatch(target, (newValue, oldValue) => {\n if (newValue) {\n newValue.addEventListener('pointerdown', startMove);\n newValue.addEventListener('pointerup', endMove);\n }\n if (oldValue) {\n oldValue.removeEventListener('pointerdown', startMove);\n oldValue.removeEventListener('pointerup', endMove);\n }\n});\nonUnmounted(() => {\n if (!target.value) return;\n target.value.removeEventListener('pointerdown', startMove);\n target.value.removeEventListener('pointerup', endMove);\n});\nconst updateTarget = (arg: unknown) => {\n if (arg instanceof HTMLElement) {\n target.value = arg;\n } else {\n target.value = void 0;\n }\n};\n\nconst { setTop, zIndex } = useZindex();\nwatch(\n () => props.show,\n () => {\n if (props.show) {\n setTop();\n }\n },\n);\n</script>\n<template>\n <Teleport to=\"body\">\n <div\n v-if=\"show\"\n ref=\"box\"\n fixed\n class=\"DraggableCard\"\n :style=\"[currentStyle, { zIndex }]\"\n :class=\"props.class\"\n @mousedown=\"setTop\"\n >\n <slot :onRef=\"updateTarget\" :moved=\"moved\" />\n\n <template v-if=\"sizeDraggable\">\n <div\n :ref=\"leftDragBar.target\"\n absolute\n right-full\n top-0\n bottom-0\n w-5px\n cursor-ew-resize\n />\n <div\n :ref=\"rightDragBar.target\"\n absolute\n left-full\n top-0\n bottom-0\n w-5px\n cursor-ew-resize\n />\n </template>\n </div>\n </Teleport>\n</template>\n","import {\n detectSnapshot,\n exportSnapshotAsImageId,\n exportSnapshotAsImportId,\n} from '@/utils/export';\nimport { gmOk } from '@/utils/gm';\nimport { findNodesByXy, getAppInfo, listToTree } from '@/utils/node';\nimport { toInteger } from '@/utils/others';\nimport type { ResolvedSelector } from '@/utils/selector';\nimport { screenshotStorage, snapshotStorage } from '@/utils/snapshot';\nimport { useTask } from '@/utils/task';\nimport type { QueryResult } from '@gkd-kit/selector';\n\nif (import.meta.hot) {\n import.meta.hot.accept(() => {\n location.reload();\n });\n}\n\nconst getRemoteImportId = async (id: number): Promise<number> => {\n return fetch('https://detect.gkd.li/api/getImportId?id=' + id)\n .then((r) => r.json())\n .catch(() => 0);\n};\n\nexport const useSnapshotStore = createSharedComposable(() => {\n const route = useRoute();\n const router = useRouter();\n\n const snapshotId = shallowRef<number>();\n watchImmediate(\n () => route.params.snapshotId,\n (v) => {\n snapshotId.value = toInteger(v);\n },\n );\n const importId = computed(() => {\n if (snapshotId.value) return snapshotImportId[snapshotId.value];\n return undefined;\n });\n const imageId = computed(() => {\n if (snapshotId.value) return snapshotImageId[snapshotId.value];\n return undefined;\n });\n const snapshot = shallowRef<Snapshot>();\n watchEffect(() => {\n if (snapshot.value) {\n document.title =\n '快照-' + (getAppInfo(snapshot.value).name || snapshot.value.appId);\n }\n });\n const screenshot = shallowRef<ArrayBuffer>();\n const screenshotUrl = computed(() => {\n if (screenshot.value) {\n return URL.createObjectURL(\n new Blob([screenshot.value], {\n type: 'image/png',\n }),\n );\n }\n return undefined;\n });\n const redirected = shallowRef(false);\n const update = useTask(async (id: number | undefined) => {\n redirected.value = false;\n if (!id) {\n snapshot.value = undefined;\n screenshot.value = undefined;\n return;\n }\n await Promise.all([\n snapshotStorage.getItem(id).then((r) => {\n snapshot.value = r || undefined;\n }),\n screenshotStorage.getItem(id).then((r) => {\n screenshot.value = r || undefined;\n }),\n ]);\n if (!snapshot.value) {\n const remoteImportId =\n snapshotImportId[id] || (await getRemoteImportId(id));\n if (remoteImportId && Number.isSafeInteger(remoteImportId)) {\n redirected.value = true;\n router.replace({\n path: '/i/' + remoteImportId,\n query: route.query,\n });\n return;\n }\n }\n });\n const loading = computed(() => update.loading);\n watchImmediate(() => snapshotId.value, update.invoke);\n watchEffect(() => {\n if (\n importId.value &&\n !importSnapshotId[importId.value] &&\n snapshotId.value\n ) {\n fetch(\n `https://detect.gkd.li/api/detectSnapshot?importId=` + importId.value,\n );\n }\n });\n const autoUpload = computed(() => {\n return gmOk() && settingsStore.autoUploadImport;\n });\n watchEffect(() => {\n if (autoUpload.value && snapshot.value && !imageId.value) {\n exportSnapshotAsImageId(snapshot.value);\n }\n if (autoUpload.value && snapshot.value && !importId.value) {\n exportSnapshotAsImportId(snapshot.value);\n }\n if (autoUpload.value && snapshot.value && importId.value) {\n detectSnapshot(snapshot.value.id, importId.value);\n }\n });\n const nodes = computed(() => {\n if (snapshot.value) {\n if (snapshot.value.nodes.length <= settingsStore.maxShowNodeSize) {\n return structuredClone(snapshot.value.nodes);\n } else {\n return structuredClone(\n snapshot.value.nodes.slice(0, settingsStore.maxShowNodeSize),\n );\n }\n }\n return [];\n });\n const rootNode = computed(() => {\n if (nodes.value.length) {\n return listToTree(nodes.value);\n }\n return undefined;\n });\n const missNodeSize = computed(() => {\n if (snapshot.value) {\n return snapshot.value.nodes.length - settingsStore.maxShowNodeSize;\n }\n return 0;\n });\n const focusNode = shallowRef<RawNode>();\n const focusTime = shallowRef(0);\n const focusPosition = shallowRef<Position>();\n const overlapNodes = shallowRef<RawNode[]>();\n const updateFocusNode = async (node: RawNode) => {\n focusNode.value = node;\n focusTime.value = Date.now();\n await nextTick();\n if (overlapNodes.value && !overlapNodes.value.includes(node)) {\n focusPosition.value = undefined;\n overlapNodes.value = undefined;\n }\n };\n watchEffect(() => {\n if (rootNode.value) {\n updateFocusNode(rootNode.value);\n }\n });\n const updatePosition = (position: Position) => {\n focusPosition.value = position;\n const resultNodes = findNodesByXy(nodes.value, focusPosition.value);\n if (resultNodes.length) {\n updateFocusNode(resultNodes[0]);\n }\n if (resultNodes.length > 1) {\n overlapNodes.value = resultNodes;\n } else {\n overlapNodes.value = undefined;\n }\n };\n\n const trackShow = ref(false);\n const trackData = shallowRef<TrackCardProps>();\n const showTrack = (\n selector: ResolvedSelector,\n result: QueryResult<RawNode>,\n ) => {\n trackShow.value = true;\n trackData.value = {\n selector,\n nodes: nodes.value,\n queryResult: result,\n };\n };\n\n return {\n snapshotId,\n snapshot,\n rootNode,\n screenshotUrl,\n loading,\n redirected,\n importId,\n imageId,\n focusNode,\n updateFocusNode,\n focusTime,\n overlapNodes,\n missNodeSize,\n focusPosition,\n updatePosition,\n trackData,\n trackShow,\n showTrack,\n };\n});\n","<script setup lang=\"ts\">\nimport DraggableCard from '@/components/DraggableCard.vue';\nimport { getNodeSelectorText } from '@/utils/node';\nimport { buildEmptyFn, copy } from '@/utils/others';\nimport { useSnapshotStore } from './snapshot';\n\nwithDefaults(\n defineProps<{\n show: boolean;\n onUpdateShow?: (data: boolean) => void;\n }>(),\n {\n onUpdateShow: buildEmptyFn,\n },\n);\n\nconst { focusNode } = useSnapshotStore();\n\ntype AttrTipMap = Record<\n string,\n { desc: string; type: 'info' | 'quickFind'; show?: boolean }\n>;\n\nconst attrTip = computed<AttrTipMap>(() => {\n const node = focusNode.value;\n if (!node) return {};\n return {\n _id: {\n desc: `虚拟属性(真机不可用):生成快照访问节点顺序`,\n type: 'info',\n show: true,\n },\n _pid: {\n desc: `虚拟属性(真机不可用):父节点的 _id`,\n type: 'info',\n show: true,\n },\n _selector: {\n desc: `自动生成的选择器, 点击“_selector”可直接复制内容, 用于定位`,\n type: 'info',\n show: true,\n },\n depth: {\n desc: `使用此属性在某些应用上可能造成无限节点错误`,\n type: 'info',\n show: true,\n },\n id: {\n desc: `可快速查找`,\n type: 'quickFind',\n show: Boolean((node.quickFind || node.idQf) && node.attr.id),\n },\n vid: {\n desc: `可快速查找`,\n type: 'quickFind',\n show: Boolean((node.quickFind || node.idQf) && node.attr.vid),\n },\n text: {\n desc: `可快速查找`,\n type: 'quickFind',\n show: Boolean((node.quickFind || node.textQf) && node.attr.text),\n },\n } as AttrTipMap;\n});\n\nconst lenAttrNames = [`text`, `desc`];\nconst attrs = computed(() => {\n if (!focusNode.value) return [];\n return Object.entries(focusNode.value.attr)\n .map(([name, value]) => {\n const attr = {\n name,\n value,\n desc: JSON.stringify(value),\n tip: attrTip.value[name]?.show ? attrTip.value[name] : undefined,\n };\n if (lenAttrNames.includes(name)) {\n return [\n attr,\n {\n name: name + `.length`,\n value: (value as string)?.length ?? null,\n desc: JSON.stringify((value as string)?.length ?? null),\n tip: undefined,\n },\n ];\n }\n return attr;\n })\n .flat();\n});\n\nconst selectText = computed(() => {\n if (!focusNode.value) return '';\n return getNodeSelectorText(focusNode.value);\n});\n</script>\n\n<template>\n <DraggableCard\n v-slot=\"{ onRef }\"\n :initialValue=\"{ top: 40, right: 10 }\"\n class=\"box-shadow-dim\"\n :show=\"show && Boolean(focusNode)\"\n >\n <div absolute top-0 right-0 pt-4px pr-8px>\n <NButton text title=\"最小化\" @click=\"onUpdateShow(!show)\">\n <template #icon>\n <SvgIcon name=\"minus\" />\n </template>\n </NButton>\n </div>\n <NTable\n v-if=\"focusNode\"\n size=\"small\"\n striped\n :singleLine=\"false\"\n class=\"gkd_code\"\n :themeOverrides=\"{\n thPaddingSmall: '1px 3px',\n tdPaddingSmall: '0px 3px',\n }\"\n >\n <thead>\n <tr :ref=\"onRef\" cursor-move>\n <th>Name</th>\n <th>Value</th>\n </tr>\n </thead>\n <NTbody>\n <NTr v-for=\"attrx in attrs\" :key=\"attrx.name\">\n <NTd @click=\"copy(`${attrx.name}=${attrx.desc}`)\">\n <div v-if=\"attrx.tip\" flex justify-between items-center>\n <div>\n {{ attrx.name }}\n </div>\n <NTooltip>\n <template #trigger>\n <NIcon size=\"16\">\n <SvgIcon v-if=\"attrx.tip.type == 'info'\" name=\"info\" />\n <SvgIcon\n v-else-if=\"attrx.tip.type == 'quickFind'\"\n name=\"ok\"\n />\n </NIcon>\n </template>\n {{ attrx.tip.desc }}\n </NTooltip>\n </div>\n <template v-else>\n {{ attrx.name }}\n </template>\n </NTd>\n <NTd>\n <NEllipsis\n class=\"w-[calc(var(--gkd-w)*0.12)]\"\n :class=\"{\n 'text-left direction-rtl': attrx.name == 'id',\n 'opacity-50': attrx.value === null,\n }\"\n >\n {{ attrx.desc }}\n </NEllipsis>\n </NTd>\n </NTr>\n <NTr>\n <NTd colspan=\"2\">\n <div flex items-center h-24px px-2px>\n <NTooltip>\n <template #trigger>\n <NButton text @click=\"copy(selectText)\">\n <template #icon>\n <NIcon size=\"20\">\n <SvgIcon name=\"path\" />\n </NIcon>\n </template>\n </NButton>\n </template>\n <div max-w-500px>\n {{ selectText }}\n </div>\n </NTooltip>\n </div>\n </NTd>\n </NTr>\n </NTbody>\n </NTable>\n </DraggableCard>\n</template>\n","<script setup lang=\"ts\">\nimport DraggableCard from '@/components/DraggableCard.vue';\nimport { getNodeLabel, getNodeStyle } from '@/utils/node';\nimport { useSnapshotStore } from './snapshot';\n\nconst { focusNode, overlapNodes, focusPosition, updateFocusNode } =\n useSnapshotStore();\nconst _1vw = document.documentElement.scrollWidth / 100;\nconst left = _1vw * 25.5;\n</script>\n<template>\n <DraggableCard\n v-slot=\"{ onRef }\"\n :initialValue=\"{ top: 215, left }\"\n class=\"box-shadow-dim w-420px\"\n :show=\"Boolean(overlapNodes && focusPosition)\"\n >\n <NCard\n v-if=\"overlapNodes && focusPosition\"\n size=\"small\"\n closable\n @close=\"overlapNodes = undefined\"\n >\n <template #header>\n <div :ref=\"onRef\" cursor-move>\n 位置\n <span bg=\"#eee\" px-2px>{{\n `${focusPosition.x.toFixed(0)},${focusPosition.y.toFixed(0)}`\n }}</span>\n 存在 {{ overlapNodes.length }} 个层叠节点\n </div>\n </template>\n <NSpace\n style=\"max-height: 400px; overflow-y: scroll; padding-bottom: 10px\"\n class=\"scrollbar-hidden\"\n >\n <NButton\n v-for=\"resultNode in overlapNodes\"\n :key=\"resultNode.id\"\n size=\"small\"\n :style=\"getNodeStyle(resultNode, focusNode)\"\n @click=\"updateFocusNode(resultNode)\"\n >\n {{ getNodeLabel(resultNode) }}\n </NButton>\n </NSpace>\n </NCard>\n </DraggableCard>\n</template>\n","const windowSize = useWindowSize();\nexport const vw = computed(() => windowSize.width.value / 100);\n// const vh = computed(() => windowSize.width.value / 100);\n\n// --gkd-w: max(1200px, 100vw);\nexport const gkdWidth = computed(() => Math.max(1200, windowSize.width.value));\n\n// --gkd-h: max(700px, 100vh);\nexport const gkdHeight = computed(() => Math.max(700, windowSize.height.value));\n","<script setup lang=\"ts\">\nimport DraggableCard from '@/components/DraggableCard.vue';\nimport { getNodeLabel, getNodeStyle } from '@/utils/node';\nimport { buildEmptyFn } from '@/utils/others';\nimport { parseSelector, type ResolvedSelector } from '@/utils/selector';\nimport { gkdWidth, vw } from '@/utils/size';\nimport type { ShallowRef } from 'vue';\nimport JSON5 from 'json5';\nimport { useSnapshotStore } from './snapshot';\n\nwithDefaults(\n defineProps<{\n show: boolean;\n onUpdateShow?: (data: boolean) => void;\n }>(),\n {\n onUpdateShow: buildEmptyFn,\n },\n);\n\nconst snapshotStore = useSnapshotStore();\nconst { rootNode, focusNode } = snapshotStore;\nconst snapshot = snapshotStore.snapshot as ShallowRef<Snapshot>;\n\nconst text = shallowRef('');\nconst lazyText = refDebounced(text, 500);\n\ninterface ResolvedData {\n matches: string[];\n anyMatches: string[];\n excludeMatches: string[];\n}\n\nconst toArray = (v: any): string[] | undefined => {\n if (v === undefined || v === null) return [];\n if (typeof v === 'string') return [v];\n if (Array.isArray(v) && v.every((s) => typeof s === 'string')) return v;\n};\nconst checkRule = (obj: ResolvedData): string | RawNode => {\n const matches = toArray(obj.matches);\n if (!matches) {\n return '非法格式: matches';\n }\n const anyMatches = toArray(obj.anyMatches);\n if (!anyMatches) {\n return '非法格式: anyMatches';\n }\n const excludeMatches = toArray(obj.excludeMatches);\n if (!excludeMatches) {\n return '非法格式: excludeMatches';\n }\n\n const resolvedMatches: ResolvedSelector[] = [];\n for (let i = 0; i < matches.length; i++) {\n const v = matches[i];\n try {\n resolvedMatches.push(parseSelector(v));\n } catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n return `非法选择器: matches[${i}]\\n错误: ${message}`;\n }\n }\n const matchesResult = resolvedMatches.map((s) =>\n s.querySelfOrSelectorAll(rootNode.value),\n );\n if (resolvedMatches.length) {\n const notIndex = matchesResult.findIndex((s) => s.length === 0);\n if (notIndex >= 0) {\n return `无法匹配: matches[${notIndex}] 查找结果为空`;\n }\n }\n\n const resolvedAnyMatches: ResolvedSelector[] = [];\n for (let i = 0; i < anyMatches.length; i++) {\n const v = anyMatches[i];\n try {\n resolvedAnyMatches.push(parseSelector(v));\n } catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n return `非法选择器: anyMatches[${i}]\\n错误: ${message}`;\n }\n }\n const anyMatchesResult = resolvedAnyMatches.map((s) =>\n s.querySelfOrSelectorAll(rootNode.value),\n );\n if (resolvedAnyMatches.length) {\n if (anyMatchesResult.every((s) => s.length === 0)) {\n return `无法匹配: anyMatches 查找结果为空`;\n }\n }\n\n if (!matches.length && !anyMatches.length) {\n return '非法规则: matches 和 anyMatches 至少存在一个';\n }\n\n const resolvedExcludeMatches: ResolvedSelector[] = [];\n for (let i = 0; i < excludeMatches.length; i++) {\n const v = excludeMatches[i];\n try {\n resolvedExcludeMatches.push(parseSelector(v));\n } catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n return `非法选择器: excludeMatches[${i}]\\n错误: ${message}`;\n }\n }\n const excludeMatchesResult = resolvedExcludeMatches.map((s) =>\n s.querySelfOrSelectorAll(rootNode.value),\n );\n if (resolvedExcludeMatches.length) {\n const index = excludeMatchesResult.findIndex((s) => s.length !== 0);\n if (index >= 0) {\n return `无法匹配: excludeMatches[${index}] 查找结果不为空`;\n }\n }\n if (!matchesResult.length) {\n return anyMatchesResult[0][0];\n }\n return matchesResult.at(-1)![0];\n};\n\nconst isObj = (v: any): v is Record<string, any> => {\n return typeof v === 'object' && v !== null && !Array.isArray(v);\n};\n\nconst dataRef = computed<RawNode | string>(() => {\n if (!lazyText.value) return '';\n const obj = (() => {\n try {\n return JSON5.parse(lazyText.value);\n } catch (e) {\n return e as Error;\n }\n })();\n if (obj instanceof Error) {\n return `非法格式: ${obj.message}`;\n }\n if (!isObj(obj)) {\n return '非法格式: 请使用对象格式';\n }\n if (typeof obj.id === 'string') {\n if (obj.id !== snapshot.value.appId) {\n return '非法格式: id 不匹配 appId';\n }\n if (!Array.isArray(obj.groups)) {\n return '非法格式: groups 不是数组';\n }\n if (obj.groups.length !== 1) {\n return '非法格式: groups 长度不为 1';\n }\n const group = obj.groups[0];\n if (!group?.rules) {\n return '非法格式: groups[0].rules 非法';\n }\n const rules = Array.isArray(group.rules) ? group.rules : [group.rules];\n if (rules.length !== 1) {\n return '非法格式: groups[0].rules 长度不为 1';\n }\n const rule =\n typeof rules[0] === 'string' ? { matches: rules[0] } : rules[0];\n if (!isObj(rule)) {\n return '非法格式: rules[0] 非法';\n }\n return checkRule(rule as ResolvedData);\n }\n if (obj.rules) {\n const rules = Array.isArray(obj.rules) ? obj.rules : [obj.rules];\n if (rules.length !== 1) {\n return '非法格式: rules 长度不为 1';\n }\n const rule =\n typeof rules[0] === 'string' ? { matches: rules[0] } : rules[0];\n if (!isObj(rule)) {\n return '非法格式: rules[0] 非法';\n }\n return checkRule(rule as ResolvedData);\n }\n return checkRule(obj as ResolvedData);\n});\nconst errorText = computed(() => {\n if (text.value && lazyText.value && typeof dataRef.value === 'string') {\n return dataRef.value;\n }\n return '';\n});\nconst targetNode = computed(() => {\n if (typeof dataRef.value === 'string') return null;\n return dataRef.value;\n});\n</script>\n<template>\n <DraggableCard\n v-slot=\"{ onRef }\"\n :initialValue=\"{\n top: 40,\n right: Math.max(315, 12 * vw + 135),\n width: Math.max(480, gkdWidth * 0.3),\n }\"\n :minWidth=\"300\"\n sizeDraggable\n class=\"box-shadow-dim\"\n :show=\"show\"\n >\n <div bg-white b-1px b-solid b-gray-200 rounded-4px p-8px>\n <div flex m-b-4px pr-4px>\n <div>测试规则</div>\n <div :ref=\"onRef\" flex-1 cursor-move />\n <NButton text title=\"最小化\" @click=\"onUpdateShow(!show)\">\n <template #icon>\n <SvgIcon name=\"minus\" />\n </template>\n </NButton>\n </div>\n <NInput\n v-model:value=\"text\"\n type=\"textarea\"\n placeholder=\"请输入单个规则测试\"\n size=\"small\"\n class=\"gkd_code m-b-4px\"\n :autosize=\"{\n minRows: 10,\n maxRows: 20,\n }\"\n />\n <div min-h-24px>\n <div v-if=\"errorText\" color-red whitespace-pre>\n {{ errorText }}\n </div>\n\n <NButton\n v-else-if=\"targetNode\"\n size=\"small\"\n :style=\"getNodeStyle(targetNode, focusNode)\"\n @click=\"snapshotStore.updateFocusNode(targetNode)\"\n >\n {{ getNodeLabel(targetNode) }}\n </NButton>\n </div>\n </div>\n </DraggableCard>\n</template>\n","<script lang=\"ts\" setup>\nconst props = defineProps<{\n imgRef: HTMLElement;\n imgHover: boolean;\n screenshotUrl: string;\n hoverPosition: {\n ox: number;\n oy: number;\n };\n hoverPositionStyle?: {\n left: string;\n top: string;\n };\n boxHoverPosition?: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n boxHoverPerPosition?: {\n left: string;\n right: string;\n top: string;\n bottom: string;\n };\n}>();\n\nconst imgBounding = useElementBounding(computed(() => props.imgRef));\n</script>\n\n<template>\n <!-- Teleport 需要单独一个组件否则 hmr 错误 -->\n <Teleport to=\"body\">\n <!-- 渲染在外部防止被遮挡 -->\n <div\n v-show=\"imgHover\"\n :style=\"{\n left: imgBounding.right.value + 4 + 'px',\n top: imgBounding.top.value + 'px',\n }\"\n pointer-events-none\n fixed\n overflow-hidden\n z-2\n bg-white\n h-200px\n w-200px\n border-1px\n border-indigo-600\n border-dashed\n >\n <img\n :src=\"screenshotUrl\"\n object-contain\n absolute\n left-0\n top-0\n :style=\"hoverPositionStyle\"\n w-1000px\n />\n <div\n absolute\n left-2px\n top-2px\n p-1px\n z-1\n text-13px\n class=\"leading-[1] bg-[rgba(256,256,256,0.7)]\"\n >\n {{ `${hoverPosition.ox.toFixed(0)}, ${hoverPosition.oy.toFixed(0)}` }}\n </div>\n <div\n v-if=\"boxHoverPosition\"\n absolute\n left-2px\n bottom-2px\n p-1px\n z-1\n text-12px\n class=\"leading-[1] bg-[rgba(256,256,256,0.7)]\"\n flex\n flex-col\n flex-items-center\n >\n <div>{{ boxHoverPosition.top.toFixed(0) }}</div>\n <div>\n {{\n boxHoverPosition.left.toFixed(0) +\n ', ' +\n boxHoverPosition.right.toFixed(0)\n }}\n </div>\n <div>{{ boxHoverPosition.bottom.toFixed(0) }}</div>\n </div>\n <div\n v-if=\"boxHoverPerPosition\"\n absolute\n right-2px\n bottom-2px\n p-1px\n z-1\n text-12px\n class=\"leading-[1] bg-[rgba(256,256,256,0.7)]\"\n flex\n flex-col\n flex-items-center\n >\n <div>{{ boxHoverPerPosition.top }}</div>\n <div>\n {{ boxHoverPerPosition.left + ', ' + boxHoverPerPosition.right }}\n </div>\n <div>{{ boxHoverPerPosition.bottom }}</div>\n </div>\n <div\n class=\"top-[calc(50%-1px)] bg-[length:10px_1px]\"\n absolute\n left-0\n right-0\n h-1px\n bg-repeat-x\n mix-blend-difference\n style=\"\n background-image: linear-gradient(\n to left,\n transparent 0%,\n transparent 50%,\n #fff 50%,\n #fff 100%\n );\n background-position-x: 1.5px;\n \"\n />\n <div\n class=\"left-[calc(50%-1px)] bg-[length:1px_10px]\"\n absolute\n top-0\n bottom-0\n w-1px\n bg-repeat-y\n mix-blend-difference\n style=\"\n background-image: linear-gradient(\n to top,\n transparent 0%,\n transparent 50%,\n #fff 50%,\n #fff 100%\n );\n background-position-y: 1.5px;\n \"\n />\n </div>\n </Teleport>\n</template>\n","<script setup lang=\"ts\">\nimport dayjs from 'dayjs';\nimport MiniHoverImg from './MiniHoverImg.vue';\nimport { toFixedNumber } from '@/utils/others';\nimport type { ShallowRef } from 'vue';\nimport { useSnapshotStore } from './snapshot';\n\nconst { updatePosition, focusNode, screenshotUrl } = useSnapshotStore();\n\nconst snapshot = useSnapshotStore().snapshot as ShallowRef<Snapshot>;\n\nconst imgRef = shallowRef<HTMLImageElement>();\nconst imgLoadTime = shallowRef(false);\n\nconst clickImg = (ev: MouseEvent) => {\n const img = imgRef.value;\n if (!img) {\n return;\n }\n\n const imgRect = img.getBoundingClientRect();\n\n const innerHeight = (imgRect.width / img.naturalWidth) * img.naturalHeight;\n const offsetTop = (imgRect.height - innerHeight) / 2;\n\n const x = ((ev.clientX - imgRect.left) / imgRect.width) * img.naturalWidth;\n const y =\n ((ev.clientY - imgRect.top - offsetTop) / innerHeight) * img.naturalHeight;\n\n updatePosition({ x, y });\n};\n\nconst percent = (n: number) => {\n return `${n * 100}%`;\n};\n\nconst imgSize = useElementSize(imgRef);\n\nconst positionStyle = computed(() => {\n const img = imgRef.value;\n\n const attr = focusNode.value?.attr;\n if (!focusNode.value || !img || !attr || !imgLoadTime.value) {\n return ``;\n }\n const imgWidth = imgSize.width.value;\n const imgHeight = imgSize.height.value;\n const innerHeight = (imgWidth / img.naturalWidth) * img.naturalHeight;\n return {\n left: `calc(${percent(attr.left / img.naturalWidth)} - 2px)`,\n width: `calc(${percent(\n (attr.right - attr.left) / img.naturalWidth,\n )} + 2px)`,\n\n top: `calc(${percent(\n ((attr.top / img.naturalHeight) * innerHeight +\n (imgHeight - innerHeight) / 2) /\n imgHeight,\n )} - 2px)`,\n height: `calc(${percent(\n (((attr.bottom - attr.top) / img.naturalHeight) * innerHeight) /\n imgHeight,\n )} + 2px)`,\n };\n});\nconst imgHover = shallowRef(false);\nconst hoverPosition = shallowRef({ ox: 0, oy: 0 });\nconst boxHoverPosition = computed(() => {\n const attr = focusNode.value?.attr;\n if (!attr) {\n return;\n }\n const { ox, oy } = hoverPosition.value;\n return {\n left: ox - attr.left,\n right: attr.right - ox,\n top: oy - attr.top,\n bottom: attr.bottom - oy,\n };\n});\nconst boxHoverPerPosition = computed(() => {\n const attr = focusNode.value?.attr;\n if (!attr || !boxHoverPosition.value) {\n return;\n }\n if (attr.width <= 0 || attr.height <= 0) {\n return;\n }\n const { bottom, left, right, top } = boxHoverPosition.value;\n return {\n left: toFixedNumber(left / (right + left), 3),\n right: toFixedNumber(right / (right + left), 3),\n top: toFixedNumber(top / (top + bottom), 3),\n bottom: toFixedNumber(bottom / (top + bottom), 3),\n };\n});\nconst hoverPositionStyle = shallowRef({ left: '0', top: '0' });\n\nconst imgMove = (ev: MouseEvent) => {\n const img = imgRef.value;\n if (!img) return;\n const imgRect = img.getBoundingClientRect();\n\n const innerHeight = (imgRect.width / img.naturalWidth) * img.naturalHeight;\n const offsetTop = (imgRect.height - innerHeight) / 2;\n\n const ox = ((ev.clientX - imgRect.left) / imgRect.width) * img.naturalWidth;\n const oy =\n ((ev.clientY - imgRect.top - offsetTop) / innerHeight) * img.naturalHeight;\n hoverPosition.value = { ox, oy };\n hoverPositionStyle.value = {\n left: (-(ox - 0.1 * img.naturalWidth) / img.naturalWidth) * 1000 + 'px',\n top: (-(oy - 0.1 * img.naturalWidth) / img.naturalWidth) * 1000 + 'px',\n };\n};\n</script>\n\n<template>\n <div\n v-if=\"screenshotUrl\"\n flex\n flex-col\n relative\n h-full\n p-2px\n box-border\n overflow-hidden\n >\n <img\n ref=\"imgRef\"\n :src=\"screenshotUrl\"\n cursor-crosshair\n object-contain\n h-full\n class=\"max-w-[calc(var(--gkd-w)*0.35)]\"\n @click=\"clickImg\"\n @mouseover=\"imgHover = true\"\n @mouseleave=\"imgHover = false\"\n @mousemove=\"imgMove\"\n @load=\"imgLoadTime = true\"\n />\n <div pointer-events-none absolute left-2px top-2px size=\"[calc(100%-4px)]\">\n <div\n :style=\"positionStyle\"\n absolute\n transition-all-300\n b-1px\n b-blue\n b-solid\n >\n <div absolute left-0 top-0 bottom-0 right-0 b-solid b-1px b-red />\n </div>\n </div>\n <div\n absolute\n z-4\n pointer-events-none\n left-4px\n top-4px\n text-12px\n leading=\"100%\"\n flex\n gap-4px\n >\n <div py-1px px-2px bg=\"#ffffff90\" title=\"尺寸\">\n {{ `${snapshot.screenWidth}x${snapshot.screenHeight}` }}\n </div>\n <div py-1px px-2px bg=\"#ffffff90\" title=\"创建时间\">\n {{ dayjs(snapshot.id).format('YYYY-MM-DD HH:mm:ss') }}\n </div>\n </div>\n <MiniHoverImg\n v-if=\"imgRef\"\n :imgHover=\"imgHover\"\n :imgRef=\"imgRef\"\n :boxHoverPerPosition=\"boxHoverPerPosition\"\n :boxHoverPosition=\"boxHoverPosition\"\n :hoverPositionStyle=\"hoverPositionStyle\"\n :hoverPosition=\"hoverPosition\"\n :screenshotUrl=\"screenshotUrl\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport DraggableCard from '@/components/DraggableCard.vue';\nimport SelectorText from '@/components/SelectorText.vue';\nimport { message } from '@/utils/discrete';\nimport { errorTry, errorWrap } from '@/utils/error';\nimport { getAppInfo, getNodeLabel, getNodeStyle } from '@/utils/node';\nimport { buildEmptyFn, copy } from '@/utils/others';\nimport { parseSelector, wasmLoadTask } from '@/utils/selector';\nimport { gkdWidth, vw } from '@/utils/size';\nimport { getImagUrl, getImportUrl } from '@/utils/url';\nimport { FastQuery, GkdException } from '@gkd-kit/selector';\nimport dayjs from 'dayjs';\nimport * as base64url from 'universal-base64url';\nimport type { ShallowRef } from 'vue';\nimport JSON5 from 'json5';\nimport { useSnapshotStore } from './snapshot';\n\nwithDefaults(\n defineProps<{\n show: boolean;\n onUpdateShow?: (data: boolean) => void;\n }>(),\n {\n onUpdateShow: buildEmptyFn,\n },\n);\n\nconst route = useRoute();\nconst { snapshotImportId, snapshotImageId } = useStorageStore();\n\nconst snapshotStore = useSnapshotStore();\nconst snapshot = snapshotStore.snapshot as ShallowRef<Snapshot>;\nconst rootNode = snapshotStore.rootNode as ShallowRef<RawNode>;\nconst { focusNode, updateFocusNode } = snapshotStore;\n\nconst searchText = shallowRef(``);\n\nconst selectorResults = shallowReactive<SearchResult[]>([]);\nconst expandedKeys = shallowRef<number[]>([]);\nconst searchSelector = (text: string) => {\n const selector = errorWrap(\n () => parseSelector(text),\n (e) => {\n if (typeof e == 'string') {\n return e;\n }\n if (e instanceof GkdException) {\n return `非法选择器:` + e.outMessage;\n }\n return `非法选择器:` + (e instanceof Error ? e.message : e);\n },\n );\n if (\n selectorResults.find(\n (s) =>\n typeof s.selector == 'object' &&\n s.selector.toString() == selector.toString(),\n )\n ) {\n message.warning(`不可重复选择`);\n return;\n }\n\n const results = selector.querySelfOrSelectorAllContext(rootNode.value);\n if (results.length == 0) {\n message.success(`没有选择到节点`);\n return;\n }\n message.success(`选择到 ${results.length} 个节点`);\n selectorResults.unshift({\n selector,\n nodes: results.map((r) => r.target),\n results,\n key: Date.now(),\n gkd: true,\n });\n return results.length;\n};\nconst searchString = (text: string) => {\n if (\n selectorResults.find(\n (s) => typeof s.selector == 'string' && s.selector.toString() == text,\n )\n ) {\n message.warning(`不可重复搜索`);\n return;\n }\n const results: RawNode[] = [];\n const stack: RawNode[] = [rootNode.value];\n while (stack.length > 0) {\n const n = stack.pop()!;\n if (getNodeLabel(n).includes(text)) {\n results.push(n);\n }\n stack.push(...[...n.children].reverse());\n }\n if (results.length == 0) {\n message.success(`没有搜索到节点`);\n return;\n }\n message.success(`搜索到 ${results.length} 个节点`);\n selectorResults.unshift({\n gkd: false,\n selector: text,\n nodes: results,\n key: Date.now(),\n });\n return results.length;\n};\nconst refreshExpandedKeys = () => {\n const newResult = selectorResults[0];\n const newNode = newResult.nodes[0];\n if (!Array.isArray(newNode)) {\n updateFocusNode(newNode);\n } else if (typeof newResult.selector == 'object') {\n updateFocusNode(newNode);\n }\n const allKeys = new Set(selectorResults.map((s) => s.key));\n const newKeys = expandedKeys.value.filter((k) => allKeys.has(k));\n newKeys.push(newResult.key);\n expandedKeys.value = newKeys;\n};\nconst searchBySelector = errorTry(() => {\n const text = searchText.value.trim();\n if (!text) return;\n if (enableSearchBySelector.value) {\n if (!searchSelector(text)) return;\n } else {\n if (!searchString(text)) return;\n }\n refreshExpandedKeys();\n});\n\nonMounted(async () => {\n await wasmLoadTask;\n let count = 0;\n if (route.query.gkd) {\n count += searchSelector(base64url.decode(route.query.gkd as string)) || 0;\n }\n if (route.query.str) {\n count += searchString(route.query.str as string) || 0;\n }\n if (count > 0) {\n refreshExpandedKeys();\n }\n});\n\nconst generateRules = errorTry(async (result: SelectorSearchResult) => {\n const imageId = snapshotImageId[snapshot.value.id];\n const importId = snapshotImportId[snapshot.value.id];\n const snapshotUrls = importId ? getImportUrl(importId) : undefined;\n const exampleUrls = imageId ? getImagUrl(imageId) : undefined;\n\n const s = result.selector;\n const t = result.results.map((v) => v.context.toArray().at(-1)!)[0];\n\n const fastQuery = [\n (t.quickFind ?? t.idQf) &&\n t.attr.id &&\n s.fastQueryList.some(\n (v) => v instanceof FastQuery.Id && v.acceptText(t.attr.id!),\n ),\n (t.quickFind ?? t.idQf) &&\n t.attr.vid &&\n s.fastQueryList.some(\n (v) => v instanceof FastQuery.Vid && v.acceptText(t.attr.vid!),\n ),\n (t.quickFind ?? t.textQf) &&\n t.attr.text &&\n s.fastQueryList.some(\n (v) => v instanceof FastQuery.Text && v.acceptText(t.attr.text!),\n ),\n ].some(Boolean);\n const rule = {\n id: snapshot.value.appId,\n name: getAppInfo(snapshot.value).name,\n groups: [\n {\n key: 1,\n name: `[ChangeMe]规则名称-${dayjs().format('YYYY-MM-DD HH:mm:ss')}`,\n desc: `[ChangeMe]本规则由GKD网页端审查工具生成`,\n rules: [\n {\n fastQuery: fastQuery || undefined,\n activityIds: snapshot.value.activityId,\n matches: s.toString(),\n exampleUrls,\n snapshotUrls,\n },\n ],\n },\n ],\n };\n\n copy(JSON5.stringify(rule, undefined, 2));\n});\nconst enableSearchBySelector = shallowRef(true);\nconst hasZipId = computed(() => {\n return snapshotImportId[snapshot.value.id];\n});\nconst shareResult = (result: SearchResult) => {\n if (!hasZipId.value) return;\n const importUrl = new URL(getImportUrl(snapshotImportId[snapshot.value.id]));\n if (typeof result.selector == 'object') {\n importUrl.searchParams.set(\n 'gkd',\n base64url.encode(result.selector.toString()),\n );\n } else {\n importUrl.searchParams.set('str', result.selector.toString());\n }\n copy(importUrl.toString());\n};\n</script>\n<template>\n <DraggableCard\n v-slot=\"{ onRef }\"\n :initialValue=\"{\n top: 40,\n right: Math.max(315, 12 * vw + 135),\n width: Math.max(480, gkdWidth * 0.3),\n }\"\n :minWidth=\"300\"\n sizeDraggable\n class=\"box-shadow-dim\"\n :show=\"show\"\n >\n <div bg-white b-1px b-solid b-gray-200 rounded-4px p-8px>\n <div flex m-b-4px pr-4px>\n <NRadioGroup v-model:value=\"enableSearchBySelector\">\n <NSpace>\n <NRadio :value=\"false\"> 字符搜索 </NRadio>\n <NRadio :value=\"true\"> 选择器查询 </NRadio>\n </NSpace>\n </NRadioGroup>\n <div :ref=\"onRef\" flex-1 cursor-move />\n <NButton text title=\"最小化\" @click=\"onUpdateShow(!show)\">\n <template #icon>\n <SvgIcon name=\"minus\" />\n </template>\n </NButton>\n </div>\n <NInputGroup>\n <NInput\n v-model:value=\"searchText\"\n :placeholder=\"enableSearchBySelector ? `请输入选择器` : `请输入字符`\"\n :inputProps=\"{ class: 'gkd_code' }\"\n @keyup.enter=\"searchBySelector\"\n />\n <NButton @click=\"searchBySelector\">\n <template #icon>\n <SvgIcon name=\"search\" />\n </template>\n </NButton>\n </NInputGroup>\n <div p-5px />\n <NCollapse v-model:expandedNames=\"expandedKeys\">\n <NCollapseItem\n v-for=\"(result, index) in selectorResults\"\n :key=\"result.key\"\n :name=\"result.key\"\n >\n <template #header>\n <span\n v-if=\"result.nodes.length > 1\"\n underline\n leading-20px\n decoration-1\n m-r-4px\n gkd_code\n title=\"查询数量\"\n >\n {{ result.nodes.length }}\n </span>\n <span\n break-all\n px-4px\n leading-20px\n bg=\"#eee\"\n gkd_code\n :title=\"result.gkd ? `选择器` : `搜索字符`\"\n >\n <SelectorText\n v-if=\"result.gkd\"\n :node=\"result.selector.ast\"\n :source=\"result.selector.source\"\n />\n <template v-else>{{ result.selector }}</template>\n </span>\n <span pl-4px />\n </template>\n <template #header-extra>\n <NButtonGroup>\n <NButton\n v-if=\"result.gkd && result.selector.canCopy\"\n size=\"small\"\n title=\"复制规则\"\n @click.stop=\"generateRules(result as SelectorSearchResult)\"\n >\n <template #icon>\n <SvgIcon name=\"copy\" />\n </template>\n </NButton>\n <NButton\n v-if=\"hasZipId\"\n size=\"small\"\n :title=\"result.gkd ? `复制查询链接` : `复制搜索链接`\"\n @click.stop=\"shareResult(result)\"\n >\n <template #icon>\n <SvgIcon name=\"share\" />\n </template>\n </NButton>\n <NButton\n size=\"small\"\n title=\"删除记录\"\n @click.stop=\"selectorResults.splice(index, 1)\"\n >\n <template #icon>\n <SvgIcon name=\"delete\" />\n </template>\n </NButton>\n </NButtonGroup>\n </template>\n <NScrollbar xScrollable style=\"max-height: 400px\">\n <div flex gap-8px flex-wrap>\n <template\n v-if=\"!result.gkd || result.selector.connectKeys.length === 0\"\n >\n <NButton\n v-for=\"resultNode in result.nodes\"\n :key=\"resultNode.id\"\n size=\"small\"\n :style=\"getNodeStyle(resultNode, focusNode)\"\n @click=\"updateFocusNode(resultNode)\"\n >\n {{ getNodeLabel(resultNode) }}\n </NButton>\n </template>\n <template v-else>\n <NButtonGroup v-for=\"(resultNode, i) in result.nodes\" :key=\"i\">\n <NButton\n size=\"small\"\n @click=\"\n snapshotStore.showTrack(\n result.selector,\n result.results[i],\n )\n \"\n >\n <NIcon>\n <SvgIcon name=\"path\" />\n </NIcon>\n </NButton>\n <NButton\n size=\"small\"\n :style=\"getNodeStyle(resultNode, focusNode)\"\n @click=\"updateFocusNode(resultNode)\"\n >\n {{ getNodeLabel(resultNode) }}\n </NButton>\n </NButtonGroup>\n </template>\n </div>\n <div un=\"h-10px\" />\n </NScrollbar>\n </NCollapseItem>\n </NCollapse>\n </div>\n </DraggableCard>\n</template>\n","import type { SlotsType } from 'vue';\n\nconst emptyArray = [] as [];\nconst GapList = defineComponent<\n {},\n {},\n string,\n SlotsType<{\n default: () => VNode[];\n gap: (props: { index: number }) => VNode[];\n }>\n>((props, ctx) => {\n return () => {\n const defaultNodes = (ctx.slots.default?.() || emptyArray).filter((n) => {\n return typeof n.type !== 'symbol'; // remove comment nodes\n });\n const nodes: typeof defaultNodes = [];\n if (defaultNodes.length > 0) {\n nodes.push(defaultNodes[0]);\n }\n if (defaultNodes.length > 1) {\n for (let i = 1; i < defaultNodes.length; i++) {\n const gapNodes = ctx.slots.gap?.({ index: i - 1 }) || emptyArray;\n nodes.push(...gapNodes);\n nodes.push(defaultNodes[i]);\n }\n }\n return h('div', props, nodes);\n };\n});\n\nexport default GapList;\n","<script setup lang=\"tsx\">\nimport ActionCard from '@/components/ActionCard.vue';\nimport GapList from '@/components/GapList';\nimport { message } from '@/utils/discrete';\nimport {\n getAppInfo,\n getDevice,\n getGkdAppInfo,\n getNodeLabel,\n getNodeStyle,\n} from '@/utils/node';\nimport { copy, delay } from '@/utils/others';\nimport type { TreeInst } from 'naive-ui';\nimport type { HTMLAttributes, ShallowRef } from 'vue';\nimport { useSnapshotStore } from './snapshot';\n\nconst router = useRouter();\n\nconst snapshotStore = useSnapshotStore();\nconst { updateFocusNode, focusNode, focusTime } = snapshotStore;\nconst snapshot = snapshotStore.snapshot as ShallowRef<Snapshot>;\nconst rootNode = snapshotStore.rootNode as ShallowRef<RawNode>;\n\nlet lastClickId = Number.NaN;\nconst expandedKeys = shallowRef<number[]>([]);\nconst selectedKeys = shallowRef<number[]>([]);\nwatch([() => focusNode.value, () => focusTime.value], async () => {\n if (!focusNode.value) return;\n const key = focusNode.value.id;\n nextTick().then(async () => {\n await delay(300);\n if (key === focusNode.value?.id) {\n if (lastClickId === key) {\n // 当点击节点树中的节点时, 不滚动\n lastClickId = Number.NaN;\n return;\n }\n // NTree 被 virtualScroll 包裹后, treeRef.value?.scrollTo 无效, 使用 scrollIntoView\n const item = document.querySelector<HTMLElement>(\n `[data-node-id=\"${key}\"]`,\n );\n if (!item) return;\n selectedKeys.value = [key];\n item.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n });\n let parent = focusNode.value.parent;\n if (!parent) {\n return;\n }\n const s = new Set(expandedKeys.value);\n while (parent) {\n s.add(parent.id);\n parent = parent.parent;\n }\n if (\n s.size == expandedKeys.value.length &&\n expandedKeys.value.every((v) => s.has(v))\n ) {\n return;\n }\n expandedKeys.value = [...s];\n});\n\nconst treeRef = shallowRef<TreeInst>();\n\nconst treeFilter = (pattern: string, node: RawNode) => {\n return node.id === focusNode.value?.id;\n};\nconst treeNodeProps = (info: {\n option: RawNode;\n}): HTMLAttributes & Record<string, unknown> => {\n const style = getNodeStyle(info.option, focusNode.value);\n return {\n onClick: () => {\n lastClickId = info.option.id;\n updateFocusNode(info.option);\n },\n style: {\n '--n-node-text-color': style.color,\n ...style,\n },\n class: 'whitespace-nowrap',\n 'data-node-id': String(info.option.id),\n };\n};\n\nconst renderLabel = (info: {\n option: RawNode;\n checked: boolean;\n selected: boolean;\n}) => {\n return getNodeLabel(info.option);\n};\n\nconst deviceName = computed(() => {\n return `${getDevice(snapshot.value).manufacturer} Android ${getDevice(snapshot.value).release || ``}`;\n});\n\nconst isSystem = computed(() => {\n return getAppInfo(snapshot.value).isSystem;\n});\nconst activityId = computed(() => {\n const v = snapshot.value.activityId;\n const appId = snapshot.value.appId;\n if (!v || !appId) return '';\n if (v.startsWith(appId) && v[appId.length] === '.') {\n return v.substring(appId.length);\n }\n return v;\n});\n\nconst onDelete = async () => {\n message.success(`删除成功,即将回到首页`);\n await delay(2000);\n router.replace({\n path: `/`,\n });\n};\nconst gkdVersionName = computed(() => {\n const v = getGkdAppInfo(snapshot.value).versionName;\n return v ? `GKD@${v}` : undefined;\n});\n</script>\n\n<template>\n <div flex flex-col overflow-hidden>\n <div flex items-center px-8px>\n <GapList class=\"flex flex-wrap items-center gap-8px gkd_code\">\n <template #gap>\n <div w-1px bg-gray h-12px />\n </template>\n <NTooltip>\n <template #trigger>\n <div @click=\"copy(deviceName)\">\n {{ deviceName }}\n </div>\n </template>\n 设备名称\n </NTooltip>\n\n <NTooltip>\n <template #trigger>\n <div\n :class=\"{\n 'opacity-50': !gkdVersionName,\n }\"\n >\n {{ gkdVersionName || 'null' }}\n </div>\n </template>\n GKD 版本\n </NTooltip>\n\n <div flex items-center gap-2px max-w-120px>\n <NTooltip v-if=\"isSystem\">\n <template #trigger>\n <SvgIcon name=\"system\" />\n </template>\n {{ `${getAppInfo(snapshot).name} 是一个系统应用` }}\n </NTooltip>\n <NTooltip>\n <template #trigger>\n <div @click=\"copy(getAppInfo(snapshot).name)\">\n {{ getAppInfo(snapshot).name }}\n </div>\n </template>\n 应用名称\n </NTooltip>\n </div>\n\n <NTooltip>\n <template #trigger>\n <div @click=\"copy(getAppInfo(snapshot).versionName)\">\n {{ getAppInfo(snapshot).versionName }}\n </div>\n </template>\n 版本名称\n </NTooltip>\n\n <NTooltip>\n <template #trigger>\n <div @click=\"copy(getAppInfo(snapshot).versionCode.toString())\">\n {{ getAppInfo(snapshot).versionCode }}\n </div>\n </template>\n 版本代码\n </NTooltip>\n\n <NTooltip>\n <template #trigger>\n <div @click=\"copy(snapshot.appId)\">\n {{ snapshot.appId }}\n </div>\n </template>\n 应用ID\n </NTooltip>\n\n <NTooltip>\n <template #trigger>\n <div\n :class=\"{\n 'opacity-50': !activityId,\n }\"\n @click=\"copy(activityId)\"\n >\n {{ activityId || 'null' }}\n </div>\n </template>\n 界面ID\n </NTooltip>\n </GapList>\n <div flex-1 />\n <ActionCard\n class=\"ml-8px\"\n :snapshot=\"snapshot\"\n :showPreview=\"false\"\n @delete=\"onDelete\"\n />\n </div>\n <div h-1px mt-4px bg=\"#efeff5\" />\n\n <NScrollbar xScrollable class=\"flex-1\">\n <NTree\n ref=\"treeRef\"\n v-model:expandedKeys=\"expandedKeys\"\n v-model:selectedKeys=\"selectedKeys\"\n class=\"mb-24px mr-24px\"\n virtualScroll\n showLine\n blockLine\n keyField=\"id\"\n :data=\"[rootNode as any]\"\n :filter=\"(treeFilter as any)\"\n :nodeProps=\"(treeNodeProps as any)\"\n :renderLabel=\"(renderLabel as any)\"\n />\n </NScrollbar>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport TrackModal from '@/components/TrackModal.vue';\nimport { loadingBar, message } from '@/utils/discrete';\nimport AttrCard from './AttrCard.vue';\nimport OverlapCard from './OverlapCard.vue';\nimport RuleCard from './RuleCard.vue';\nimport ScreenshotCard from './ScreenshotCard.vue';\nimport SearchCard from './SearchCard.vue';\nimport WindowCard from './WindowCard.vue';\nimport { useSnapshotStore } from './snapshot';\n\nconst { snapshot, rootNode, loading, redirected, trackData, trackShow } =\n useSnapshotStore();\n\nwatchEffect(() => {\n if (loading.value) {\n loadingBar.start();\n } else {\n loadingBar.finish();\n }\n});\n\nconst searchShow = useStorage('searchShow', true, sessionStorage);\nconst ruleShow = useStorage('ruleShow', false, sessionStorage);\nconst attrShow = useStorage('attrShow', true, sessionStorage);\n\nconst clickSettings = () => {\n message.info('暂未实现');\n};\n</script>\n<template>\n <template v-if=\"snapshot && rootNode\">\n <div h-full flex gap-5px>\n <div\n w-40px\n py-12px\n flex\n flex-col\n items-center\n gap-16px\n class=\"[--svg-h:24px]\"\n >\n <NTooltip placement=\"right\">\n <template #trigger>\n <NButton text>\n <RouterLink to=\"/\">\n <SvgIcon name=\"home\" />\n </RouterLink>\n </NButton>\n </template>\n 回到首页\n </NTooltip>\n <NTooltip placement=\"right\">\n <template #trigger>\n <NButton text @click=\"clickSettings\">\n <SvgIcon name=\"settings\" />\n </NButton>\n </template>\n 设置\n </NTooltip>\n <div />\n <NTooltip placement=\"right\">\n <template #trigger>\n <NButton text @click=\"searchShow = !searchShow\">\n <SvgIcon name=\"search-list\" />\n </NButton>\n </template>\n 搜索面板\n </NTooltip>\n <NTooltip placement=\"right\">\n <template #trigger>\n <NButton text @click=\"attrShow = !attrShow\">\n <SvgIcon name=\"prop\" />\n </NButton>\n </template>\n 属性面板\n </NTooltip>\n <NTooltip placement=\"right\">\n <template #trigger>\n <NButton text @click=\"ruleShow = !ruleShow\">\n <SvgIcon name=\"test\" />\n </NButton>\n </template>\n 测试规则\n </NTooltip>\n <div />\n <NTooltip placement=\"right\">\n <template #trigger>\n <a\n flex\n justify-center\n href=\"https://github.com/orgs/gkd-kit/discussions\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <NButton text>\n <SvgIcon name=\"discussion\" />\n </NButton>\n </a>\n </template>\n 讨论交流\n </NTooltip>\n <NTooltip placement=\"right\">\n <template #trigger>\n <a\n flex\n justify-center\n href=\"https://gkd.li/guide/snapshot#share-note\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <NButton text>\n <SvgIcon name=\"warn\" />\n </NButton>\n </a>\n </template>\n 分享须知\n </NTooltip>\n </div>\n <ScreenshotCard />\n <WindowCard class=\"flex-1\" />\n </div>\n\n <SearchCard :show=\"searchShow\" @updateShow=\"searchShow = $event\" />\n <RuleCard :show=\"ruleShow\" @updateShow=\"ruleShow = $event\" />\n <AttrCard :show=\"attrShow\" @updateShow=\"attrShow = $event\" />\n <OverlapCard />\n\n <TrackModal\n :show=\"trackShow\"\n :data=\"trackData\"\n @updateShow=\"trackShow = $event\"\n @updateData=\"trackData = $event\"\n />\n </template>\n <div\n v-else-if=\"!loading && !redirected\"\n pt-80px\n flex\n flex-col\n items-center\n justify-center\n >\n <div mb-8px>\n <span>快照数据缺失,</span>\n <a\n href=\"https://gkd.li/guide/snapshot#share-note\"\n target=\"_blank\"\n referrerpolicy=\"no-referrer\"\n >分享须知</a\n >\n </div>\n </div>\n</template>\n"],"file":"assets/SnapshotPage-055LCAoq.js"}
|