@cloudbase/js-sdk 3.9.0 → 3.9.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","mappings":"+sEAAA,IAAAA,EAAAC,EAAA,KAIAC,EAAAD,EAAA,KACAE,EAAAF,EAAA,KAsFMG,EAAc,CAIlBC,UAAS,SAAKC,GAIZ,cAHAA,EAAMH,EAAAI,MAAMC,oBAAoBF,IACrBG,cACJH,EAAII,WACJJ,CACT,EAKAK,eAAc,SAAKL,GACjB,GAAwB,iBAAbA,EAAIM,MAAkC,OAAbN,EAAIM,KAAe,CACrD,IAAMC,EAAMC,EAAAA,EAAA,GAAQR,GAAQA,EAAIM,MAEhC,cADOC,EAAOD,KACPC,EAET,OAAOP,CACT,EAKAS,eAAc,SAACH,GACb,GAAoB,iBAATA,EAAmB,OAAOA,EACrC,IACE,OAAOV,EAAAc,MAAMC,MAAML,GACnB,MAAAM,GACA,OAAON,EAEX,EAgBAO,gBAAe,SAACC,GACd,GAAqB,iBAAVA,EAAoB,OAAOA,EACtC,IACE,OAAOC,KAAKJ,MAAMG,GAClB,MAAAF,GACA,OAAOE,EAEX,EASAE,eAAc,SAACF,GACb,IAAKA,GAA0B,iBAAVA,EAAoB,OAAOA,EAChD,GAAIA,EAAMG,oBAA0D,iBAA7BH,EAAMG,mBAAiC,CACtE,IAAAL,EAAuBE,EAAMG,mBACnC,MAAO,CAAEC,OADMN,EAAAO,QACWC,SADFR,EAAAS,SAG1B,GAAIC,MAAMC,QAAQT,GAChB,OAAOA,EAAMU,IAAI,SAAAC,GAAQ,OAAA3B,EAAYkB,eAAeS,EAA3B,GAE3B,IAAMC,EAAW,GACjB,IAAK,IAAMC,KAAOb,EAChBY,EAAIC,GAAO7B,EAAYkB,eAAeF,EAAMa,IAE9C,OAAOD,CACT,EAOAE,gBAAe,SAACd,GACd,OAAOhB,EAAYkB,eAAelB,EAAYe,gBAAgBC,GAChE,EAKAe,iBAAgB,SAACC,GACf,OAAOC,OAAOC,QAAQF,GAEnBG,OAAO,SAACrB,GAAEA,EAAA,OAAEE,EAAKF,EAAA,GAAM,OAAAE,SAAmD,KAAVA,CAAzC,GACvBU,IAAI,SAACZ,OAACe,EAAGf,EAAA,GAAEE,EAAKF,EAAA,GACTsB,EAA+B,iBAAVpB,EAAqBC,KAAKoB,UAAUrB,GAASsB,OAAOtB,GAC/E,MAAO,GAAAuB,OAAGC,mBAAmBX,GAAI,KAAAU,OAAIC,mBAAmBJ,GAC1D,GACCK,KAAK,IACV,EAKAC,aAAY,SAAClC,GACX,IAAMmC,GAAWnC,aAAI,EAAJA,EAAMmC,WAAY,YAC7BC,GAAWpC,aAAI,EAAJA,EAAMoC,WAAY,YACnC,MAAO,uBAAAL,OAAuBI,EAAQ,eAAAJ,OAAcK,EACtD,EAEM,yBAAwB,SAACpC,EAA0BqC,0CAAuBC,QAAO,wEAwB3E,OAvBJC,KAA8B,QAAfC,EAAU,QAAVlC,EAAAN,EAAKyC,aAAK,IAAAnC,OAAA,EAAAA,EAAEoC,WAAG,IAAAF,OAAA,EAAAA,EAAEG,KAChCC,EAAcpD,EAAY+B,iBAAgBrB,EAAA,CAC9C2C,WAAY7C,EAAK6C,WACjBC,cAAe9C,EAAK8C,eAChBP,EACA,GACA,CACAQ,OAAmB,QAAXC,EAAAhD,EAAK+C,cAAM,IAAAC,EAAAA,EAAI,EACvBC,MAAiB,QAAVC,EAAAlD,EAAKiD,aAAK,IAAAC,EAAAA,EAAI,IACrBC,MAAOnD,EAAKmD,MACZV,MAAOzC,EAAKyC,MAAQnD,EAAAc,MAAMyB,UAAU7B,EAAKyC,MAAO,CAAEW,SAAS,SAAWC,KAIxEC,EAAM,GAAAvB,OAAGvC,EAAY0C,aAAalC,GAAK,iBAAA+B,OAAgB/B,EAAKuD,eAAc,eAAAxB,OAAca,GAGxFL,IACFe,EAAM,GAAAvB,OAAGvC,EAAY0C,aAAalC,GAAK,iBAAA+B,OAAgB/B,EAAKuD,eAAc,eAAAxB,QAC1D,QAAdyB,EAAAxD,EAAKyC,MAAMC,WAAG,IAAAc,OAAA,EAAAA,EAAEb,MAAO3C,EAAKyC,MAAMC,IAAG,KAAAX,OACnCa,IAGI,GAAMa,KAAKC,QAAQ,CAC3BJ,IAAGA,EACHK,OAAQ,OACPtB,WAKH,OARI3C,EAAMkE,EAAAC,QAMN7D,KAAOR,EAAYW,eAAeM,KAAKoB,UAAUnC,EAAIM,QAErDuC,GAAe7C,EAAIoE,OAAiB,QAARC,EAAArE,EAAIM,YAAI,IAAA+D,OAAA,EAAAA,EAAED,OAQrCpE,EAAIoE,OAAiB,QAARE,EAAAtE,EAAIM,YAAI,IAAAgE,OAAA,EAAAA,EAAEF,MAS1BpE,EAAGQ,EAAAA,EAAA,GAAQR,GAAG,CAAEM,KAAIE,EAAAA,EAAA,GAAOR,EAAIM,MAAI,CAAEiE,KAAM,OARvCjD,MAAMC,QAAQvB,EAAIM,MAEpBN,EAAGQ,EAAAA,EAAA,GAAQR,GAAG,CAAEM,KAAM,CAAEiE,KAAMvE,EAAIM,QACzBN,EAAIM,OAASgB,MAAMC,QAAQvB,EAAIM,KAAKiE,QAE7CvE,EAAGQ,EAAAA,EAAA,GAAQR,GAAG,CAAEM,KAAIE,EAAAA,EAAA,GAAOR,EAAIM,MAAI,CAAEiE,KAAM,QAM/C,GAAOzE,EAAYC,UAAUC,KAnB3B,GAAAQ,EAAAA,EAAA,GACKR,GAAG,CACNM,KAAM,CAAEiE,KAAM,CAACvE,EAAIM,gBAoBnB,uBAAsB,SAACA,EAAwBqC,kCAAsBC,QAAO,kEACtE,SAAMmB,KAAKC,QAAQ,CAC3BJ,IAAK,GAAAvB,OAAGvC,EAAY0C,aAAalC,GAAK,iBAAA+B,OAAgB/B,EAAKuD,eAAc,cACzEI,OAAQ,OACR3D,KAAIE,EAAA,CACFF,KAAMgB,MAAMC,QAAQjB,EAAKA,MAAQA,EAAKA,KAAO,CAACA,EAAKA,OAC/CA,EAAK8C,eAAiB,CAAEA,cAAe9C,EAAK8C,iBAEjDT,WAsBH,OA7BI3C,EAAMwD,EAAAW,OASN7C,MAAMC,QAAQjB,EAAKA,MAErBN,EAAGQ,EAAAA,EAAA,GACER,GAAG,CACNM,KAAIE,EAAA,CACFgE,KAAa,QAAR5D,EAAAZ,EAAIM,YAAI,IAAAM,OAAA,EAAAA,EAAE6D,cAAe,IAC3BzE,EAAIM,SAGmB,QAArBgD,EAAQ,QAARR,EAAA9C,EAAIM,YAAI,IAAAwC,OAAA,EAAAA,EAAE2B,mBAAW,IAAAnB,OAAA,EAAAA,EAAG,MAEjCtD,EAAGQ,EAAAA,EAAA,GACER,GAAG,CACNM,KAAIE,EAAA,CACFwC,IAAKhD,EAAIM,KAAKmE,YAAY,IACvBzE,EAAIM,SAKb,GAAOR,EAAYC,UAAUC,UAGzB,0BAAyB,SAACM,EAA2BqC,wBAAuBC,QAAO,kEAC3E,SAAMmB,KAAKC,QAAQ,CAC7BJ,IAAK,GAAAvB,OAAGvC,EAAY0C,aAAalC,GAAK,iBAAA+B,OAAgB/B,EAAKuD,eAAc,cACzEI,OAAQ,QACR3D,KAAIE,EAAA,CACFuC,MAAOzC,EAAKyC,MACZzC,KAAMA,EAAKA,KACXoE,QAASpE,EAAKoE,MACdC,SAAUrE,EAAKqE,OACfC,cAAetE,EAAKsE,aAChBtE,EAAK8C,eAAiB,CAAEA,cAAe9C,EAAK8C,iBAEjDT,WAEH,OAbM3C,EAAMY,EAAAuD,OAaZ,GAAOrE,EAAYC,UAAUC,UAGzB,0BAAyB,SAACM,EAA2BqC,wBAAsBC,QAAO,kEAC1E,SAAMmB,KAAKC,QAAQ,CAC7BJ,IAAK,GAAAvB,OAAGvC,EAAY0C,aAAalC,GAAK,iBAAA+B,OAAgB/B,EAAKuD,eAAc,qBACzEI,OAAQ,OACR3D,KAAIE,EAAA,CACFuC,MAAOzC,EAAKyC,MACZ2B,QAASpE,EAAKoE,OACVpE,EAAK8C,eAAiB,CAAEA,cAAe9C,EAAK8C,iBAEjDT,WAEH,OAVM3C,EAAMY,EAAAuD,OAUZ,GAAOrE,EAAYC,UAAUC,UAGzB,yBAAwB,SAACM,EAA0BqC,wBAAsBC,QAAO,oEAMxE,OALNM,EAAcpD,EAAY+B,iBAAiB,CAC/CgD,OAAO,EACP9B,MAAOzC,EAAKyC,MAAQnD,EAAAc,MAAMyB,UAAU7B,EAAKyC,MAAO,CAAEW,SAAS,SAAWC,IAG5D,GAAMI,KAAKC,QAAQ,CAC7BJ,IAAK,GAAAvB,OAAGvC,EAAY0C,aAAalC,GAAK,iBAAA+B,OAAgB/B,EAAKuD,eAAc,eAAAxB,OAAca,GACvFe,OAAQ,OACPtB,WAEH,OALM3C,EAAMY,EAAAuD,OAKZ,GAAOrE,EAAYC,UAAUC,UAGzB,yBAAwB,SAACM,EAA8CqC,wBAAsBC,QAAO,kEAC5F,SAAMmB,KAAKC,QAAQ,CAC7BJ,IAAK,GAAAvB,OAAGvC,EAAY0C,aAAalC,GAAK,gBACtC2D,OAAQ,OACR3D,KAAM,CAAEuD,eAAgBvD,EAAKuD,iBAC5BlB,WAEH,OANM3C,EAAMY,EAAAuD,OAMZ,GAAOrE,EAAYC,UAAUC,UAGzB,qBAAoB,SAACM,EAA+FqC,8BAAuBC,QAAO,oEAa1I,OAZNkC,EAAWxE,EAAKyE,OAAOvD,IAAI,SAACwD,WAChC,IAEE,IAAMlE,EAAoC,iBAArBkE,EAAMC,WAA0BlE,KAAKJ,MAAMqE,EAAMC,YAAcD,EAAMC,WAC1F,OAAArE,EAAA,IACGoE,EAAME,UAAWtF,EAAAc,MAAMyE,UAAUrE,KAEpC,MAAAwC,GACA,OAAAR,EAAA,IAAUkC,EAAME,UAAWF,EAAMC,WAAUnC,EAE/C,GAEY,GAAMiB,KAAKC,QAAQ,CAC7BJ,IAAK,GAAAvB,OAAGvC,EAAY0C,aAAalC,GAAK,iBAAA+B,OAAgB/B,EAAKuD,eAAc,2BACzEI,OAAQ,OACR3D,KAAM,CAAEwE,SAAQA,IACfnC,WAOH,OAXM3C,EAAM8C,EAAAqB,OAOR7C,MAAMC,QAAgB,QAARX,EAAAZ,EAAIM,YAAI,IAAAM,OAAA,EAAAA,EAAE2D,QAC1BvE,EAAIM,KAAKiE,KAAOxD,KAAKoB,UAAUnC,EAAIM,KAAKiE,KAAK/C,IAAI,SAACC,GAAc,OAAAV,KAAKoB,UAAUV,EAAf,KAGlE,GAAO3B,EAAYC,UAAUC,UAGzB,4BAA2B,SAACM,EAAiBqC,iGACrC,SAAMoB,KAAKC,QAAQ,CAC7BJ,IAAK,GAAAvB,OAAGvC,EAAY0C,aAAalC,GAAK,iBACtC2D,OAAQ,QACPtB,WAEH,OALM3C,EAAMY,EAAAuD,OAKZ,GAAOrE,EAAYC,UAAUD,EAAYO,eAAeL,WAGpD,6BAA4B,SAACM,EAA6CqC,iGAClE,SAAMoB,KAAKC,QAAQ,CAC7BJ,IAAK,GAAAvB,OAAGvC,EAAY0C,aAAalC,GAAK,kBAAA+B,OAAiB/B,EAAK8C,cAAa,WACzEa,OAAQ,QACPtB,WAEH,OALM3C,EAAMY,EAAAuD,OAKZ,GAAOrE,EAAYC,UAAUC,UAGzB,4BAA2B,SAACM,EAA6CqC,iGACjE,SAAMoB,KAAKC,QAAQ,CAC7BJ,IAAK,GAAAvB,OAAGvC,EAAY0C,aAAalC,GAAK,kBAAA+B,OAAiB/B,EAAK8C,cAAa,aACzEa,OAAQ,QACPtB,WAEH,OALM3C,EAAMY,EAAAuD,OAKZ,GAAOrE,EAAYC,UAAUC,UAGzB,4BAA2B,SAACM,EAA0BqC,uGAC9C,SAAM7C,EAAY,0BAA0BsF,KAAKrB,KAAMzD,EAAMqC,WAEzE,MAAwB,iBAFlB3C,EAAM8C,EAAAqB,QAEG7D,MAAkC,OAAbN,EAAIM,MAC1B,QAARM,EAAAZ,EAAIM,YAAI,IAAAM,OAAA,EAAAA,EAAEwD,MACZ,GAAOtE,EAAYO,eAAeL,IAEpC,GAAAQ,EAAAA,EAAA,GAAYR,GAAG,CAAEM,KAAMS,KAAKoB,UAAUnC,EAAIM,SAG5C,GAAON,SAGH,kCAAiC,SAACM,EAA2BqC,iGAIrD,OAFZrC,EAAKA,KAAOR,EAAYW,eAAeH,EAAKA,MAEhC,GAAMR,EAAY,2BAA2BsF,KAAKrB,KAAMzD,EAAMqC,WAC1E,OADM3C,EAAMY,EAAAuD,OACZ,GAAOrE,EAAYO,eAAeL,UAG9B,kCAAiC,SAACM,EAA2BqC,iGACrD,SAAM7C,EAAY,2BAA2BsF,KAAKrB,KAAMzD,EAAMqC,WAC1E,OADM3C,EAAMY,EAAAuD,OACZ,GAAOrE,EAAYO,eAAeL,UAG9B,kCAAiC,SAACM,EAAwBqC,8BAAuBC,QAAO,oEAIlF,OAFVtC,EAAKA,KAAOR,EAAYW,eAAeH,EAAKA,MAElC,GAAMR,EAAY,wBAAwBsF,KAAKrB,KAAMzD,EAAMqC,WAgBrE,MAdwB,iBAFpB3C,EAAM8C,EAAAqB,QAEK7D,MAAkC,OAAbN,EAAIM,MAChC+E,KAAkB,QAARzE,EAAAZ,EAAIM,YAAI,IAAAM,OAAA,EAAAA,EAAEoC,KAC1BhD,EAAMQ,EAAAA,EAAAA,EAAA,GACDR,GAAG,CACNsF,SAAUD,EAAQ,EAAI,EACtBE,GAAIF,EAAQ,EAAI,IACbrF,EAAIM,OAGTN,EAAMQ,EAAA,CAAE8E,SAAU,EAAGC,GAAI,GAAMvF,UAG1BA,EAAIM,KAEX,GAAON,SAGH,uBAAsB,SAACM,EAAmCqC,wBAAuBC,QAAO,kEAClF,SAAMmB,KAAKC,QAAQ,CAC3BJ,IAAK,GAAAvB,OAAGvC,EAAY0C,aAAalC,GAAK,aACtC2D,OAAQ,OACR3D,KAAIE,EAAA,CACFgF,SAAU5F,EAAAc,MAAMyE,UAAU7E,EAAKkF,WAC3BlF,EAAK8C,eAAiB,CAAEA,cAAe9C,EAAK8C,iBAEjDT,WAEqB,iBATpB3C,EAAMY,EAAAuD,QASK7D,MAAkC,OAAbN,EAAIM,cACtCN,EAAGQ,EAAAA,EAAA,GAAQR,GAAQA,EAAIM,OACZA,YACJN,EAAIyF,YAIb,IACEzF,EAAMJ,EAAAc,MAAMgF,YAAY1F,GACxB,MAAA8C,IAIF,SAAOhD,EAAYC,UAAUC,UAQzB,uBAAsB,SAACM,EAA0BqC,8BAAsBC,QAAO,oEAStE,OALN+C,EAAUnF,EAAA,GAAaF,IAClByC,MAAQjD,EAAYe,gBAAgB8E,EAAW5C,OAC1D4C,EAAWlC,MAAQ3D,EAAYe,gBAAgB8E,EAAWlC,OAC1DkC,EAAWxC,WAAarD,EAAYe,gBAAgB8E,EAAWxC,YAEnD,GAAMrD,EAAY,0BAA0BsF,KAAKrB,KAAM4B,EAAYhD,WAS/E,OATM3C,EAAM8C,EAAAqB,OAMR7C,MAAMC,QAAgB,QAARX,EAAAZ,EAAIM,YAAI,IAAAM,OAAA,EAAAA,EAAE2D,QAC1BvE,EAAIM,KAAKiE,KAAOvE,EAAIM,KAAKiE,KAAK/C,IAAI,SAACC,GAAc,OAAA7B,EAAAc,MAAMyB,UAAUV,EAAM,CAAEiC,SAAS,GAAjC,IAEnD,GAAO1D,SAGH,0BAAyB,SAACM,EAAwBqC,wBAAsBC,QAAO,2CAQnF,OALM+C,EAAUnF,EAAA,GAAaF,IAClBA,KAAOgB,MAAMC,QAAQoE,EAAWrF,MACvCqF,EAAWrF,KAAKkB,IAAI,SAACC,GAAc,OAAA3B,EAAY8B,gBAAgBH,EAA5B,GACnC3B,EAAY8B,gBAAgB+D,EAAWrF,MAE3C,GAAOR,EAAY,wBAAwBsF,KAAKrB,KAAM4B,EAAYhD,SAG9D,0BAAyB,SAACrC,EAA2BqC,wBAAsBC,QAAO,2CAStF,OARM+C,EAAUnF,EAAA,GAAaF,IAKlByC,MAAQjD,EAAYe,gBAAgB8E,EAAW5C,OAC1D4C,EAAWrF,KAAOR,EAAYe,gBAAgB8E,EAAWrF,MAEzD,GAAOR,EAAY,2BAA2BsF,KAAKrB,KAAM4B,EAAYhD,SAGjE,0BAAyB,SAACrC,EAA2BqC,wBAAsBC,QAAO,2CAItF,OAHM+C,EAAUnF,EAAA,GAAaF,IAClByC,MAAQjD,EAAYe,gBAAgB8E,EAAW5C,OAE1D,GAAOjD,EAAY,2BAA2BsF,KAAKrB,KAAM4B,EAAYhD,SAGjE,6BAA4B,SAACrC,EAA0BqC,wBAAsBC,QAAO,2CAIxF,OAHM+C,EAAUnF,EAAA,GAAaF,IAClByC,MAAQjD,EAAYe,gBAAgB8E,EAAW5C,OAE1D,GAAOjD,EAAY,0BAA0BsF,KAAKrB,KAAM4B,EAAYhD,SAGhE,8BAA6B,SAACrC,EAA+FqC,8BAAuBC,QAAO,oEASnJ,OAPN+C,EAAUnF,EAAA,GAAaF,GACzBgB,MAAMC,QAAQoE,EAAWZ,UAC3BY,EAAWZ,OAASY,EAAWZ,OAAOvD,IAAI,SAACwD,GAAe,OAAAxE,EAAAA,EAAA,GACrDwE,GAAK,CACRC,WAAYnF,EAAYe,gBAAgBmE,EAAMC,aAFU,IAKhD,GAAMnF,EAAY,sBAAsBsF,KAAKrB,KAAM4B,EAAYhD,WAI3E,GAJM3C,EAAM8C,EAAAqB,OAIkB,iBAAX,QAARvD,EAAAZ,EAAIM,YAAI,IAAAM,OAAA,EAAAA,EAAE2D,MACnB,IACEvE,EAAIM,KAAKiE,KAAOxD,KAAKJ,MAAMX,EAAIM,KAAKiE,MACpC,MAAAjB,IAIJ,SAAOtD,UAmFL4F,EAAiC,CACrCC,KA1iBqB,WA2iBrBC,OAAQ,CACNpD,SAlFJ,SAAkBqD,SAGhB,QACepC,IAAboC,GAC6D,WAA1DhE,OAAOiE,UAAUC,SAASb,KAAKW,GAAUG,MAAM,GAAI,GAEtD,MAAMrG,EAAAI,MAAMkG,qBAAqB,CAC/B/B,KAAM,gBACNgC,IAAK,8BACgB,QAApBxF,EAACmD,KAAKsC,cAAc,IAAAzF,OAAA,EAAAA,EAAE0F,cAGrB,IAAAxD,EAAuBiB,KAAKwC,SAA1BC,EAAO1D,EAAA0D,QAAEC,EAAO3D,EAAA2D,QAExBC,EAAA,SAAAC,GACE,SAAAD,EAAYL,UACVM,EAAAvB,KAAArB,KAAMsC,IAAOtC,IACf,CA+BF,OAlCkB6C,EAAAF,EAAAC,GAKVD,EAAAV,UAAAa,KAAN,SAAWC,EAAgBxG,EAAWyG,wHAChC/G,EAAM,KAIJ2C,EACFoE,GAAgC,iBAAjBA,EAAKC,QAAuB,CAAEA,QAASD,EAAKC,cAAYrD,EAE1C,YAA7BI,KAAKsC,OAAOY,cAA8BnH,EAAYgH,GAClD,GAAMhH,EAAYgH,GAAQ1B,KAAKrB,KAAMzD,EAAMqC,IAD/C,oBACF3C,EAAM8D,EAAAK,oBAEA,SAAMwC,EAAAX,UAAMa,KAAIzB,KAAArB,KAAC+C,EAAQxG,OAAMqD,EAAWhB,WAAhD3C,EAAM8D,EAAAK,wBAQR,GADM+C,EAAcrH,EAAAI,MAAMkH,aAAmD,QAAtC7D,EAA8B,QAA9BR,EAAoB,QAApBlC,EAACmD,KAAKsC,cAAc,IAAAzF,OAAA,EAAAA,EAAEwG,gBAAQ,IAAAtE,OAAA,EAAAA,EAAEuD,cAAM,IAAA/C,EAAAA,EAAIS,KAAKsC,QAClFrG,GAAOA,EAAIoE,MAAQ8C,EACrB,MAAMrH,EAAAI,MAAMkG,qBAAqB,CAC/B/B,KAAMpE,EAAIoE,KACVgC,IAAKpG,EAAIqH,SAAYrH,EAAIM,MAAQN,EAAIM,KAAK+G,SAAY,GACtDC,UAAWtH,EAAIsH,WACM,QAApB9D,EAACO,KAAKsC,cAAc,IAAA7C,OAAA,EAAAA,EAAE8C,cAG3B,SAAOtG,SAEX0G,CAAA,CAlCA,CAAkB3C,KAAKwD,QAAQC,aA6D/B,OAzBA9H,EAAA+H,GAAGC,SAAWhB,EAEdhH,EAAA+H,GAAGE,eAAiB5D,KAAK6D,aAAe7D,KAAK6D,aAAaD,eAAeE,KAAK9D,KAAK6D,cAAgB,WAAM,UACzGlI,EAAA+H,GAAGhB,QAAUA,EACT1C,KAAK+D,gBACPpI,EAAA+H,GAAGM,QAAUvB,EAAQuB,QACrBrI,EAAA+H,GAAGK,cAAgB/D,KAAK+D,eAGrBpI,EAAA+H,GAAGO,KACNtI,EAAA+H,GAAGO,GAAK,MAeH,IAZP,SAAArB,GACE,SAAAsB,EAAY5B,UACVM,EAAAvB,KAAArB,KAAMsC,IAAOtC,IACf,CAOF,OAVoB6C,EAAAqB,EAAAtB,GAKZsB,EAAAjC,UAAAkC,YAAN,SAAkBpG,wBAA0Bc,QAAO,qCAGjD,SAFgBlD,EAAA+H,GAAGU,cAAcpE,KAAKsC,QAEvBQ,KAAK,uBAAwB/E,SAEhDmG,CAAA,CAVA,CAAoBvI,EAAA+H,IAYb,CAASjH,EAAAA,EAAAA,EAAA,GAAMuD,KAAKsC,QAAM,CAAEe,SAAUrD,OAASgC,GACxD,IAQA,IACEqC,UAAUC,kBAAkBzC,GAC5B,MAAO0C,GAAG,CAEZ,SAAgBC,EAAiBC,GAC/B,IACEA,EAAIH,kBAAkBzC,GACtB,MAAO0C,GACPG,QAAQC,KAAKJ,GAEjB,CANAK,EAAAA,iBAAAJ,EAQA,IACGK,OAAeL,iBAAmBA,EACnC,MAAOD,GAAG,w+BArpBZ,IAGYO,EAHZC,EAAAC,EAAApJ,EAAA,KACAqJ,EAAArJ,EAAA,MAEA,SAAYkJ,GACVA,EAAA,UACAA,EAAA,aACD,CAHD,CAAYA,EAAAF,EAAAE,UAAAF,EAAAA,QAAO,KASnBA,EAAAA,YAAA,SAA4BM,EAAmD5H,GAI7E,IAHA,IAGsB6H,EAAA,EAAAC,GAHmB,EAAAH,EAAAzH,SAAQ0H,GAC5CA,EACD,CAACA,GACiBC,EAAAC,EAAAC,OAAAF,IAAa,CAA9B,IAAM1C,EAAO2C,EAAAD,GACRG,EAAiC7C,EAAO6C,QAA/BC,EAAwB9C,EAAO8C,WAAnB7C,EAAYD,EAAOC,QAChD,GAAI4C,IACF,MAAO,CACL7C,QAAOhG,EAAA,CAAI6I,QAAOA,GAAKC,EAAWjI,IAClCoF,QAAOA,GAIf,EAEAkC,EAAAA,kBAAA,WACE,MAAO,CACLnC,QAAOhG,EAAA,GAAOsI,EAAIQ,cAClB7C,QAASoC,EAAQU,IAErB,wrECjCA,IAAAC,EAAA7J,EAAA,KAUAqJ,EAAArJ,EAAA,KACA8J,EAAA9J,EAAA,KAKA+J,EAAA,SAAA/C,GAOE,SAAA+C,EAAYrD,GAAZ,IAAAsD,EACEhD,EAAAvB,KAAArB,OAAOA,KACCiD,EAA2CX,EAAMW,QAAxC4C,EAAkCvD,EAAMuD,WAA5BC,EAAsBxD,EAAMwD,yBACzDF,EAAK3C,QAAUA,GAAW,EAC1B2C,EAAKC,WAAaA,GAAc,OAChCD,EAAKE,kBAAoBA,GAAqB,CAAC,MAAO,OAAQ,SAAU,aAC1E,CA+NF,OA5OyBjD,EAAA8C,EAAA/C,GAchB+C,EAAA1D,UAAA8D,IAAP,SAAWzI,GACT,OAAO0C,KAAKwD,QAAO/G,EAAAA,EAAA,GAEZa,GAAO,CACV4C,OAAQ,QAEVF,KAAK8F,kBAAkBE,SAAS,OAEpC,EACOL,EAAA1D,UAAAgE,KAAP,SAAY3I,GACV,OAAO0C,KAAKwD,QAAO/G,EAAAA,EAAA,GAEZa,GAAO,CACV4C,OAAQ,SAEVF,KAAK8F,kBAAkBE,SAAS,QAEpC,EACOL,EAAA1D,UAAAiE,IAAP,SAAW5I,GACT,OAAO0C,KAAKwD,QAAO/G,EAAAA,EAAA,GACda,GAAO,CACV4C,OAAQ,QAEZ,EACOyF,EAAA1D,UAAAkE,OAAP,SAAc7I,GACJ,IAAAf,EAA2Ce,EAAOf,KAA5C6J,EAAqC9I,EAAO8I,KAAtCtE,EAA+BxE,EAAOwE,KAAhC5B,EAAyB5C,EAAO4C,OAAxBrD,EAAiBS,EAAO+I,QAAxBA,OAAO,IAAAxJ,EAAG,GAAEA,EACxCyJ,EAAY,CAAEL,KAAM,OAAQC,IAAK,OAAQhG,aAAM,EAANA,EAAQqG,gBAAkB,MAEnEC,EAAW,IAAIC,SACrB,MAAkB,SAAdH,GACFtI,OAAO0I,KAAKnK,GAAMoK,QAAQ,SAAC/I,GACzB4I,EAASI,OAAOhJ,EAAKrB,EAAKqB,GAC5B,GACA4I,EAASI,OAAO,MAAO9E,GACvB0E,EAASI,OAAO,OAAQR,GACjBpG,KAAKwD,QAAO/G,EAAAA,EAAA,GAEZa,GAAO,CACVf,KAAMiK,EACNtG,OAAQoG,IAEVtG,KAAK8F,kBAAkBE,SAAS,YAG7BhG,KAAKwD,QAAO/G,EAAAA,EAAA,GAEZa,GAAO,CACV4C,OAAQ,MACRmG,QAAOA,EACPQ,KAAMT,IAERpG,KAAK8F,kBAAkBE,SAAS,UAEpC,EACaL,EAAA1D,UAAA6E,SAAb,SAAsBxJ,wBAA2BuB,QAAO,wEAEnC,gCAAMmB,KAAK+F,IAAGtJ,EAAAA,EAAA,GAC1Ba,GAAO,CACV+I,QAAS,GACTU,aAAc,yBAHRxK,EAASM,EAAAuD,OAIf7D,KACIsD,EAAMgF,OAAOmC,IAAIC,gBAAgB,IAAIC,KAAK,CAAC3K,KAC3C4K,EAAWC,mBAAmB,IAAIJ,IAAI1J,EAAQuC,KAAKwH,SAASC,MAAM,KAAKC,OAAS,KAChFC,EAAOC,SAASC,cAAc,MAE/BC,KAAO9H,EACZ2H,EAAKI,aAAa,WAAYT,GAC9BK,EAAKK,MAAMC,QAAU,OAErBL,SAASZ,KAAKkB,YAAYP,GAC1BA,EAAKQ,QAELnD,OAAOmC,IAAIiB,gBAAgBpI,GAC3B4H,SAASZ,KAAKqB,YAAYV,6CAE5B,SAAO,IAAI3I,QAAQ,SAACsJ,GAClBA,EAAQ,CACN9L,WAAY,IACZ+L,aAAc9K,EAAQuC,KAE1B,UAEI8F,EAAA1D,UAAAoG,MAAN,SAAY/K,8BAA4DuB,QAAO,iGAwBjE,OAvBNyJ,EAAkB,IAAIC,gBACpB1I,EAAmGvC,EAAOuC,IAArGd,EAA8FzB,EAAOkL,YAArGA,OAAW,IAAAzJ,GAAQA,EAAEQ,EAAyEjC,EAAOmL,OAAhFA,OAAM,IAAAlJ,GAAQA,EAAEmJ,EAAyDpL,EAAOoL,OAA/CC,EAAwCrL,EAAO2F,QAArCxD,EAA8BnC,EAAOsL,mBAArCA,OAAkB,IAAAnJ,GAAOA,EAEhGwD,EAAU0F,QAAAA,EAAY3I,KAAKiD,QAO7ByF,IACEA,EAAOG,SAASP,EAAgBQ,QACpCJ,EAAOK,iBAAiB,QAAS,WAAM,OAAAT,EAAgBQ,OAAhB,IAGrCE,EAAQ,KACRR,GAAevF,IACjB+F,EAAQC,WAAW,WACjBvE,QAAQC,KAAKiB,EAAKC,YAClByC,EAAgBQ,MAAM,IAAII,MAAMtD,EAAKC,YACvC,EAAG5C,IAGO,GAAMoF,MAAMxI,EAAGpD,EAAAA,EAAA,GACtBa,GAAO,CACVoL,OAAQJ,EAAgBI,UAEvBS,KAAK,SAAOC,GAAQ,OAAAC,EAAAzD,OAAA,sFACnB0D,aAAaN,GACTJ,EAEKQ,EAAS5H,IAAK3E,EAAAuM,SAAd,MAFL,aAE6C,OAAf7J,GAAAR,EAAAF,SAAQ0K,OAAO,GAAMH,EAASI,eAA9B3M,EAAA0C,EAAAkK,MAAA1K,EAAA,CAAeU,EAAAW,0BAA/C,SAAAvD,UAEF,SAAOuM,UAERM,MAAM,SAACC,GAMN,OALAL,aAAaN,GAKNnK,QAAQ0K,OAAOI,EACxB,WAEF,OArBM1N,EAAM8D,EAAAK,OAqBZ,GAAO,CAEL7D,KAAMkM,EAASxM,EAAI4K,MAAsC,QAA/BhK,EAAAZ,EAAIoK,QAAQN,IAAI,uBAAe,IAAAlJ,OAAA,EAAAA,EAAEmJ,SAAS,qBAAsB/J,EAAIuN,OAASvN,EAAI2N,OAC3GvN,WAAYJ,EAAI4N,OAChBzN,OAAQH,EAAIoK,QAEZ+C,SAAUnN,UAOJ0J,EAAA1D,UAAAuB,QAAV,SAAkBlG,EAA0BkL,GAA5C,IAAA5C,EAAA5F,UAA4C,IAAAwI,IAAAA,GAAA,GAC1C,IAAMtI,EAAS7B,OAAOf,EAAQ4C,QAAQqG,eAAiB,MACvD,OAAO,IAAI1H,QAAQ,SAACsJ,GACV,IAAAtI,EAAmFvC,EAAOuC,IAArFhD,EAA8ES,EAAO+I,QAArFA,OAAO,IAAAxJ,EAAG,GAAEA,EAAEN,EAAgEe,EAAOf,KAAjEwK,EAA0DzJ,EAAOyJ,aAAnD+C,EAA4CxM,EAAOwM,gBAAlCjD,EAA2BvJ,EAAOuJ,KAA5BkD,EAAqBzM,EAAOyM,iBAC5FC,GAAU,EAAA/E,EAAAgF,YAAU,EAAAvE,EAAAwE,eAAerK,EAAgB,QAAXK,EAAmB3D,EAAO,IAClE4N,EAAO,IAAIC,eACjBD,EAAKE,KAAKnK,EAAQ8J,GAClBjD,IAAiBoD,EAAKpD,aAAeA,GASrC,IAWIiC,EAoCAsB,EA/CE5B,EAAUpL,EAAgBoL,OAC5BA,IACEA,EAAOG,QACTsB,EAAKrB,QAELJ,EAAOK,iBAAiB,QAAS,WAAM,OAAAoB,EAAKrB,OAAL,EAAc,CAAEyB,MAAM,KAGjEvM,OAAO0I,KAAKL,GAASM,QAAQ,SAAC/I,GAC5BuM,EAAKK,iBAAiB5M,EAAKyI,EAAQzI,GACrC,GAEImM,GACFI,EAAKhE,OAAO4C,iBAAiB,WAAYgB,GAE3CI,EAAKM,mBAAqB,WACxB,IAAMjO,EAAyB,GAC/B,GAAwB,IAApB2N,EAAKO,WAAkB,CACzB,IACMC,EADUR,EAAKS,wBACDC,OAAOvD,MAAM,WAE3BwD,EAAY,GAClBH,EAAIhE,QAAQ,SAACoE,GACX,IAAMC,EAAQD,EAAKzD,MAAM,MACnBlL,EAAS4O,EAAMC,QAAQ1E,cACvBxJ,EAAQiO,EAAMxM,KAAK,MACzBsM,EAAU1O,GAAUW,CACtB,GACAP,EAAOJ,OAAS0O,EAChBtO,EAAOH,WAAa8N,EAAKN,OACzB,IAEErN,EAAOD,KAAwB,SAAjBwK,EAA0BoD,EAAKf,SAAWpM,KAAKJ,MAAMuN,EAAKe,cACxE,MAAO3G,GACP/H,EAAOD,KAAwB,SAAjBwK,EAA0BoD,EAAKf,SAAWe,EAAKe,aAE/D5B,aAAaN,GACbb,EAAQ3L,GAEZ,EACIgM,GAAe5C,EAAK3C,UACtB+F,EAAQC,WAAW,WACjBvE,QAAQC,KAAKiB,EAAKC,YAClBsE,EAAKrB,OACP,EAAGlD,EAAK3C,UAMRqH,GAFE,EAAArF,EAAAkG,YAAW5O,GAEHA,EAC2B,sCAA5B8J,EAAQ,iBACP,EAAApB,EAAAmG,eAAc7O,GACfsK,IAICtK,EAAOS,KAAKoB,UAAU7B,QAAQqD,GAGtCkK,IACFK,EAAKL,iBAAkB,GAEzBK,EAAKrH,KAAKwH,EACZ,EACF,EACF3E,CAAA,CA5OA,CAAyBF,EAAA4F,oBAyPJzG,EAAAA,WAAAe,EAAZf,EAAAA,WAXT,WAQE,MAPiE,CAC/D0G,KAAM,UACNC,KAAM1G,OACNlB,SAAUgC,EACV3B,QAASwH,UACTC,aAAYA,aAGhB,wKCvQA,IAAIC,EAAU,oBACd9G,EAAAA,WAAA,SAA2B9C,GACzB4J,EAAU5J,CACZ,EACA8C,EAAAA,WAAA,WACE,OAAO8G,CACT,EAEA,IAAIC,EAAW,SAEf/G,EAAAA,YAAA,SAA4BgH,GAC1BD,EAAWC,CACb,EAEAhH,EAAAA,YAAA,WACE,OAAO+G,CACT,EAEa/G,EAAAA,eAAuF,EAEvFA,EAAAA,mBAAqB,6HCpBrBA,EAAAA,OAAS,CACpBiH,eAAgB,iBAChBC,eAAgB,iBAChBC,kBAAmB,oBACnBC,eAAgB,iBAChBC,cAAe,gBACfC,aAAc,miBHNhBC,EAAAvQ,EAAA,KAAAgJ,GACAuH,EAAAvQ,EAAA,KAAAgJ,GAEaA,EAAAA,gBAAkB,ggDIH/B,IAAAK,EAAArJ,EAAA,KACAwQ,EAAAxQ,EAAA,KAYIyQ,GAAY,EACS,oBAAdC,WAA6BA,UAAUC,YAChDF,GAAwD,IAA5CC,UAAUC,UAAUC,QAAQ,YAK1C,IAAMC,EAAqBJ,EACvB,qCACA,6CACEK,EAAiB,oCA6KvB,SAASC,EAAiBrP,GAMhB,IAAAsP,EAA2CtP,EAAOsP,IAA7CC,EAAsCvP,EAAOuP,UAAlCC,EAA2BxP,EAAOwP,WAAtBC,EAAezP,EAAOyP,WAE1D,IAAKA,EACH,OAAO,KAGT,IAQIC,EAREC,EAAgBL,EAAIM,MAAM5F,MAAM,MAChC6F,EAAyBd,EAC3B,mDACA,IAAIe,OAAO,GAAA9O,OAAGuO,EAAS,mCAAAvO,OAAkCwO,EAAU,qBACjEO,EAAsChB,EACxC,6CACA,IAAIe,OAAO,GAAA9O,OAAGuO,EAAS,mCAAAvO,OAAkCwO,EAAU,QACjEQ,EAAgBL,EAAcM,UAAU,SAAAC,GAAO,OAAAL,EAAuBM,KAAKD,EAA5B,GAErD,IAAuB,IAAnBF,EAAsB,CAExB,IAAMI,EAAeT,EAAc/O,OAAO,SAACyP,EAAGC,GAAM,OAAAA,EAAIN,CAAJ,GACpDI,EAAaG,QAAQZ,EAAcK,GAChCQ,QAAQT,EAAqC,GAAA/O,OAAGuO,EAAS,KAAAvO,OAAIwO,IAC7DgB,QAAQpB,EAAgBK,KAC3BC,EAAW,IAAI9D,OACNgE,MAAQ,GAAA5O,OAAG+N,EAAY,YAAc,QAAO,MAAA/N,OAAKoP,EAAalP,KAAK,OAE9E,OAAOwO,CACT,CAvMApI,EAAAA,qBAAA,SAAqCtH,GAC3B,IAAAT,EAA0DS,EAAOyQ,KAAjEA,OAAI,IAAAlR,EAAG,QAAOA,EAAEkC,EAA0CzB,EAAO0Q,WAAjDA,OAAU,IAAAjP,EAAG,GAAEA,EAAEkP,EAAyB3Q,EAAO2Q,MAAzB1O,EAAkBjC,EAAO4Q,SAAzBA,OAAQ,IAAA3O,EAAG,GAAEA,EAE7D,OAAO,SACL4O,EACArB,EACAsB,GAGA,GAAKhC,EAAAiC,cAAL,CAGA,IAAMxB,EAAYmB,EAAWnB,WAAasB,EAAO1K,YAAY3B,KACvDwM,EAASN,EAAWlB,YAAcA,EAClCyB,EAAKH,EAAWrR,MAKhBgQ,EAoIV,WACE,IAAIA,EAAa,GACXyB,GAtI6B,IAAItF,OAsIXgE,MAAM5F,MAAM,MAClCmH,EAAmBD,EAAgBjB,UAAU,SAAAC,GAAO,OAAAf,EAAmBgB,KAAKD,EAAxB,GAE1D,IAA0B,IAAtBiB,EAAyB,CAC3B,IAAMC,EAAQhC,EAAeiC,KAAKH,EAAgBC,EAAmB,IAAM,IAE3E1B,EAAa2B,EAAQA,EAAM,GAAK,GAElC,OAAO3B,CACT,CA/IuB6B,GAGjBR,EAAWrR,MADA,SAATgR,EACiB,eAAU,IAAAc,EAAA,GAAA1J,EAAA,EAAAA,EAAA2J,UAAAzJ,OAAAF,IAAA0J,EAAA1J,GAAA2J,UAAA3J,GAE3B,IAAM6H,EAAgBL,EAAiB,CACrCC,IAAK,IAAI1D,MACT2D,UAASA,EACTC,WAAYwB,EACZvB,WAAUA,IAEZ,IACE,OAAOwB,EAAG9E,MAAMzJ,KAAM6O,GACtB,MAAOjC,GACP,IAAImC,EAAUnC,EACGoC,EAAuDpC,EAAGtJ,QAAlD2L,EAA+CrC,EAAGqC,MAAxBC,EAAqBtC,EAAGuC,kBACrEC,EAAY,CAChBnB,MAAOA,GAAS,GAAA3P,OAAGuO,EAAS,KAAAvO,OAAIgQ,EAAM,WACtCe,QAAS,CAAC,CACR/D,KAAM,QACNzE,KAAM+F,KAIV,GAAIoC,GAAU,WAAWvB,KAAKuB,GAAS,CACrC,IAAM3M,EAAMrF,KAAKJ,MAAMoS,GACvBI,EAAKE,SAAWN,EACZ3M,EAAIhC,OACF2M,GACFA,EAAS3M,KAAOgC,EAAIhC,KACpB2M,EAAS3K,IAAMA,EAAIA,MAEnBuK,EAAIvM,KAAOgC,EAAIhC,KACfuM,EAAItJ,QAAUjB,EAAIA,KAEpB0M,EAAU/B,GAAYJ,EACtBwC,EAAKC,QAAUnB,EAASzQ,IAAI,SAAA4E,GAAO,MAAC,CAClCiJ,KAAM,OACNzE,KAAMxE,EAF2B,IAwBvC,MAhBI4M,GAASC,IACXE,EAAKE,SAAWJ,EACZlC,GACFA,EAAS3M,KAAO4O,EAChBjC,EAAS3K,IAAM6M,IAEftC,EAAIvM,KAAO4O,EACXrC,EAAItJ,QAAU4L,GAEhBH,EAAU/B,GAAYJ,EACtBwC,EAAKC,QAAUnB,EAASzQ,IAAI,SAAA4E,GAAO,MAAC,CAClCiJ,KAAM,OACNzE,KAAMxE,EAF2B,KAKrC,EAAA4C,EAAAsK,eAAcH,GACRL,EAEV,EAEmB,eAAgB,IAAAF,EAAA,GAAA1J,EAAA,EAAAA,EAAA2J,UAAAzJ,OAAAF,IAAA0J,EAAA1J,GAAA2J,UAAA3J,+GAC3B6H,EAAgBL,EAAiB,CACrCC,IAAK,IAAI1D,MACT2D,UAASA,EACTC,WAAYwB,EACZvB,WAAUA,qBAIH,gCAAMwB,EAAG9E,MAAMzJ,KAAM6O,WAA5B,SAAOhS,EAAAuD,eAgDP,iBA9CI2O,EAAUS,EACGR,EAAuDQ,EAAGlM,QAAlD2L,EAA+CO,EAAGP,MAAxBC,EAAqBM,EAAGL,kBACrEC,EAAY,CAChBnB,MAAOA,GAAS,GAAA3P,OAAGuO,EAAS,KAAAvO,OAAIgQ,EAAM,WACtCe,QAAS,CAAC,CACR/D,KAAM,QACNzE,KAAM2I,KAINR,GAAU,WAAWvB,KAAKuB,KACtB3M,EAAMrF,KAAKJ,MAAMoS,GACvBI,EAAKE,SAAWjN,EACZA,EAAIhC,OACF2M,GACFA,EAAS3M,KAAOgC,EAAIhC,KACpB2M,EAAS1J,QAAUjB,EAAIA,MAEvBmN,EAAInP,KAAOgC,EAAIhC,KACfmP,EAAIlM,QAAUjB,EAAIA,KAEpB0M,EAAU/B,GAAYwC,EACtBJ,EAAKC,QAAUnB,EAASzQ,IAAI,SAAA4E,GAAO,MAAC,CAClCiJ,KAAM,OACNzE,KAAMxE,EAF2B,KAQnC4M,GAASC,IACXE,EAAKE,SAAWJ,EACZlC,GACFA,EAAS3M,KAAO4O,EAChBjC,EAAS3K,IAAM6M,IAEfM,EAAInP,KAAO4O,EACXO,EAAIlM,QAAU4L,GAEhBH,EAAU/B,GAAYwC,EACtBJ,EAAKC,QAAUnB,EAASzQ,IAAI,SAAA4E,GAAO,MAAC,CAClCiJ,KAAM,OACNzE,KAAMxE,EAF2B,KAKrC,EAAA4C,EAAAsK,eAAcH,GACRL,yBAId,CACF,4fJ7KA5C,EAAAvQ,EAAA,KAAAgJ,s4BAAA,IAAA6K,EAAAzK,EAAApJ,EAAA,MAcSgJ,EAAAA,UAAA6K,EAbT,IAAAvK,EAAAF,EAAApJ,EAAA,MAaoBgJ,EAAAA,SAAAM,EAZpB,IAAAwK,EAAA1K,EAAApJ,EAAA,MAY8BgJ,EAAAA,MAAA8K,EAX9B,IAAAC,EAAA3K,EAAApJ,EAAA,MAWqCgJ,EAAAA,OAAA+K,EAVrC,IAAAC,EAAA5K,EAAApJ,EAAA,MAUmFgJ,EAAAA,UAAAgL,EATnF,IAAA1T,EAAA8I,EAAApJ,EAAA,MAS6CgJ,EAAAA,MAAA1I,EAR7C,IAAA2T,EAAA7K,EAAApJ,EAAA,MAQoDgJ,EAAAA,QAAAiL,EAPpD,IAAAC,EAAAC,EAAAnU,EAAA,MAOkEgJ,EAAAA,gBAP3DkL,EAAAE,QACP,IAEMC,EAAM,CACVC,OAHFH,EAAAnU,EAAA,MAGUoU,SAGmDpL,EAAAA,IAAAqL,sEKd7D,IAAA1H,EAAA,WAWE,SAAAA,IAAA,IAAA3C,EAAA5F,KAVAA,KAAAmQ,UAAqC,GACrCnQ,KAAA0I,OAAS,CACPG,SAAS,EACTE,iBAAkB,SAACxE,EAAW6L,GAClB,UAAN7L,GACFqB,EAAKuK,UAAUE,KAAKD,EAExB,EAGa,CAQjB,OANE7H,EAAAtG,UAAA6G,MAAA,WACM9I,KAAK0I,OAAOG,UAEhB7I,KAAK0I,OAAOG,SAAU,EACtB7I,KAAKmQ,UAAUxJ,QAAQ,SAAAyJ,GAAK,OAAAA,GAAA,GAC9B,EACF7H,CAAA,CAnBA,w9DCAA,IAAA9C,EAAA7J,EAAA,KAGAqJ,EAAArJ,EAAA,KACAwQ,EAAAxQ,EAAA,KAKA0U,EAAA,SAAA1N,GAEE,SAAA0N,EAAY/E,GAAZ,IAAA3F,EACEhD,EAAAvB,KAAArB,OAAOA,YACP4F,EAAK2F,KAAOA,EACPA,EAAKgF,iBACRhF,EAAKgF,eAAiB,KAE1B,CAaF,OArB6B1N,EAAAyN,EAAA1N,GASpB0N,EAAArO,UAAAuO,QAAP,SAAe5S,EAAab,GAC1BiD,KAAKuL,KAAKgF,eAAe3S,GAAOb,CAClC,EACOuT,EAAArO,UAAAwO,QAAP,SAAe7S,GACb,OAAOoC,KAAKuL,KAAKgF,eAAe3S,EAClC,EACO0S,EAAArO,UAAAyO,WAAP,SAAkB9S,UACToC,KAAKuL,KAAKgF,eAAe3S,EAClC,EACO0S,EAAArO,UAAA0O,MAAP,kBACS3Q,KAAKuL,KAAKgF,cACnB,EACFD,CAAA,CArBA,CAA6B7K,EAAAmL,iBA8C7BC,EAAA,WAOE,SAAAA,EAAYvO,GANLtC,KAAA0G,KAAmB,GAOhB,IAAAoK,EAA8CxO,EAAMwO,YAAvCjU,EAAiCyF,EAAMyO,aAAvCA,OAAY,IAAAlU,EAAG,GAAEA,EAAEkC,EAAcuD,EAAMoE,KAApBA,OAAI,IAAA3H,EAAG,GAAEA,EACjDiB,KAAK+Q,aAAeA,EACf/Q,KAAKgR,UACRhR,KAAKiR,eAAiBjR,KAAK+Q,aAAatO,QAAQyO,gBAAkBJ,EAClE9Q,KAAKgR,QAjCX,SAAuBF,EAA0BrO,GAC/C,OAAQqO,GACN,IAAK,QASL,QACE,OAAKrO,EAAQgJ,aAKNhJ,EAAQgJ,eAJb,EAAAxG,EAAAkM,WAAU/E,EAAAgF,OAAOvF,eAAgB,qDAE1B,IAAIyE,EAAe7N,EAAQ8I,OANtC,IAAK,OACH,OAAO,IAAI+E,EAAe7N,EAAQ8I,MASxC,CAcqB8F,CAAcrR,KAAKiR,eAAgBjR,KAAK+Q,aAAatO,SACpEzC,KAAK0G,KAAOA,EAEhB,CAyHF,OArHE1I,OAAAsT,eAAIT,EAAA5O,UAAA,OAAI,KAAR,WACE,OAAOjC,KAAKgR,QAAQjD,MAAQ,MAC9B,kCACA/P,OAAAsT,eAAIT,EAAA5O,UAAA,cAAW,KAAf,WACE,OAAOjC,KAAKiR,cACd,kCAEOJ,EAAA5O,UAAAsP,SAAP,SAAgB3T,EAAab,EAAYyU,GACvC,GAAkB,UAAdxR,KAAK+N,MAIT,GAAK/N,KAAKgR,QAIV,IACE,IAAMS,EAAM,CACVD,QAASA,GAAW,eACpBnC,QAAStS,GAEXiD,KAAKgR,QAAQR,QAAQ5S,EAAKZ,KAAKoB,UAAUqT,IACzC,MAAOlN,GACP,MAAM,IAAI2E,MAAMlM,KAAKoB,UAAU,CAC7BiC,KAAM+L,EAAAgF,OAAOpF,eACb3J,IAAK,IAAA/D,QAAI,EAAA8N,EAAAsF,cAAY,MAAApT,OAAK8N,EAAAgF,OAAOpF,eAAc,oBAC/C2F,KAAMpN,WAjBR,EAAAU,EAAAkM,WAAU/E,EAAAgF,OAAOrF,kBAAmB,+EAsBxC,EACa8E,EAAA5O,UAAA2P,cAAb,SAA2BhU,EAAab,EAAYyU,iGAClD,IAAKxR,KAAKgR,QACR,2BAQA,6BAJMS,EAAM,CACVD,QAASA,GAAW,eACpBnC,QAAStS,GAEX,GAAMiD,KAAKgR,QAAQR,QAAQ5S,EAAKZ,KAAKoB,UAAUqT,mBAA/C5U,EAAAuD,oBAEA,2BAGF,gBAEKyQ,EAAA5O,UAAA4P,SAAP,SAAgBjU,EAAa4T,SAC3B,GAAkB,UAAdxR,KAAK+N,KAAT,CAIA,IAEE,GAAuB,oBAAZ+D,UAAsC,QAAXjV,EAAAiV,CAAAA,aAAAA,EAAAA,kBAAAA,UAAW,IAAAjV,OAAA,EAAAA,EAAEkV,WACjD,MAAOD,CAAAA,aAAAA,EAAAA,kBAAAA,GAAYC,UAGrB,IAAK/R,KAAKgR,QACR,MAAO,GAET,MAAOzM,GACP,MAAO,GAGTiN,EAAUA,GAAW,eAErB,IAAMnC,EAAUrP,KAAKgR,QAAQP,QAAQ7S,GACrC,OAAKyR,GAIDA,EAAQ7C,QAAQgF,IAAY,EACpBxU,KAAKJ,MAAMyS,GACZA,QALF,IApBP,EAAApK,EAAAkM,WAAU/E,EAAAgF,OAAOrF,kBAAmB,+EA4BxC,EACa8E,EAAA5O,UAAA+P,cAAb,SAA2BpU,EAAa4T,uGACtC,IAEE,GAAuB,oBAAZM,UAAsC,QAAXjV,EAAAiV,CAAAA,aAAAA,EAAAA,kBAAAA,UAAW,IAAAjV,OAAA,EAAAA,EAAEkV,WACjD,SAAOD,CAAAA,aAAAA,EAAAA,kBAAAA,GAAYC,WAGrB,IAAK/R,KAAKgR,QACR,SAAO,IAET,MAAOzM,GACP,SAAO,IAKO,OAFhBiN,EAAUA,GAAW,eAEL,GAAMxR,KAAKgR,QAAQP,QAAQ7S,WAC3C,OADMyR,EAAUtQ,EAAAqB,SAKZiP,EAAQ7C,QAAQgF,IAAY,EAE9B,GADUxU,KAAKJ,MAAMyS,GACZA,SALT,GAAO,UASJwB,EAAA5O,UAAAgQ,YAAP,SAAmBrU,GACC,UAAdoC,KAAK+N,KAIT/N,KAAKgR,QAAQN,WAAW9S,IAHtB,EAAAqH,EAAAkM,WAAU/E,EAAAgF,OAAOrF,kBAAmB,kFAIxC,EACa8E,EAAA5O,UAAAiQ,iBAAb,SAA8BtU,2FAC5B,SAAMoC,KAAKgR,QAAQN,WAAW9S,kBAA9Bf,EAAAuD,iBAEJyQ,CAAA,CAxIA,GAAajM,EAAAA,eAAAiM,03BCvDb,IAAA5L,EAAArJ,EAAA,KAyCAuW,EAKE,SAAYrQ,EAAcvF,GACxByD,KAAKzD,KAAOA,GAAQ,KACpByD,KAAK8B,KAAOA,CACd,EARW8C,EAAAA,eAAAuN,EAiBb,IAAAC,EAAA,SAAAxP,GAEE,SAAAwP,EAAYnD,EAAc1S,GAA1B,IAAAqJ,EACEhD,EAAAvB,KAAArB,KAAM,QAAS,CAAEiP,MAAKA,EAAE1S,KAAIA,KAAGyD,YAC/B4F,EAAKqJ,MAAQA,GACf,CACF,OANiCpM,EAAAuP,EAAAxP,GAMjCwP,CAAA,CANA,CAAiCD,GAApBvN,EAAAA,YAAAwN,EAWb,IAAAC,EAAA,oBAAAA,IAOmBrS,KAAAmQ,UAAuB,EA8D1C,QArDSkC,EAAApQ,UAAAqQ,GAAP,SAAUxQ,EAAcyQ,GAEtB,OA5EJ,SAAiCzQ,EAAcyQ,EAAoBpC,GACjEA,EAAUrO,GAAQqO,EAAUrO,IAAS,GACrCqO,EAAUrO,GAAMuO,KAAKkC,EACvB,CAwEIC,CAAwB1Q,EAAMyQ,EAAUvS,KAAKmQ,WACtCnQ,IACT,EAQOqS,EAAApQ,UAAAwQ,IAAP,SAAW3Q,EAAcyQ,GAEvB,OA5EJ,SAAmCzQ,EAAcyQ,EAAoBpC,GACnE,GAAIA,aAAS,EAATA,EAAYrO,GAAO,CACrB,IAAM4Q,EAAQvC,EAAUrO,GAAM0K,QAAQ+F,IACvB,IAAXG,GACFvC,EAAUrO,GAAM6Q,OAAOD,EAAO,GAGpC,CAoEIE,CAA0B9Q,EAAMyQ,EAAUvS,KAAKmQ,WACxCnQ,IACT,EAOOqS,EAAApQ,UAAA4Q,KAAP,SAAYC,EAAgCvW,GAE1C,IAAI,EAAA0I,EAAA8N,cAAaD,EAAOV,GAEtB,OADA1N,QAAQuK,MAAO6D,EAAsB7D,OAC9BjP,KAGT,IAAMgT,GAAqB,EAAA/N,EAAAgO,UAASH,GAAS,IAAIX,EAAeW,EAAiBvW,GAAQ,IAAMuW,EAEvFhR,EAASkR,EAAElR,KAEnB,GAAI9B,KAAKkT,QAAQpR,GAAO,CACtBkR,EAAG7E,OAASnO,KAGZ,IADA,IACiBmF,EAAA,EAAAgO,EADAnT,KAAKmQ,UAAUrO,GAAOsR,EAAA,GAAKpT,KAAKmQ,UAAUrO,IAAK,GAAI,GACnDqD,EAAAgO,EAAA9N,OAAAF,IAAJgO,EAAAhO,GACR9D,KAAKrB,KAAMgT,GAIlB,OAAOhT,IACT,EAQQqS,EAAApQ,UAAAiR,QAAR,SAAgBpR,GACd,OAAO9B,KAAKmQ,UAAUrO,IAAS9B,KAAKmQ,UAAUrO,GAAMuD,OAAS,CAC/D,EACFgN,CAAA,CArEA,GAAazN,EAAAA,sBAAAyN,EAwEb,IAAMgB,EAAe,IAAIhB,EAEzBzN,EAAAA,iBAAA,SAAiCkO,EAAeQ,GAC9CD,EAAaf,GAAGQ,EAAOQ,EACzB,EAEA1O,EAAAA,cAAA,SAA8BkO,EAAevW,QAAA,IAAAA,IAAAA,EAAA,IAC3C8W,EAAaR,KAAKC,EAAOvW,EAC3B,EAEAqI,EAAAA,oBAAA,SAAoCkO,EAAeQ,GACjDD,EAAaZ,IAAIK,EAAOQ,EAC1B,yGCzJA,IAAAC,EAAA3X,EAAA,KAEagJ,EAAAA,IAAM,IAAI2O,EAAAlB,sBAEVzN,EAAAA,kBAAoB,kkDCHjC,IAAAwH,EAAAxQ,EAAA,KAEAgJ,EAAAA,QAAA,SAAwB6M,GACtB,MAA+C,mBAAxCzT,OAAOiE,UAAUC,SAASb,KAAKoQ,EACxC,EACA7M,EAAAA,SAAA,SAAyB6M,GACvB,MAAsB,iBAARA,CAChB,EACA7M,EAAAA,YAAA,SAA4B6M,GAC1B,YAAsB,IAARA,CAChB,EACA7M,EAAAA,cAAA,SAA8B6M,GAC5B,MAA+C,oBAAxCzT,OAAOiE,UAAUC,SAASb,KAAKoQ,EACxC,EACA7M,EAAAA,OAAA,SAAuB6M,GACrB,MAA+C,kBAAxCzT,OAAOiE,UAAUC,SAASb,KAAKoQ,EACxC,EACA7M,EAAAA,aAAA,SAA6BlG,EAAe8U,GAC1C,OAAO9U,aAAoB8U,CAC7B,EACA5O,EAAAA,WAAA,SAA2B6M,GACzB,MAA+C,sBAAxCzT,OAAOiE,UAAUC,SAASb,KAAKoQ,EACxC,EACA7M,EAAAA,SAAA,WACE,OAAO6O,KAAKC,SAASxR,SAAS,IAC3BC,MAAM,EACX,EACAyC,EAAAA,kBAAA,WACE,IAAI+O,GAAI,IAAIC,MAAOC,UACfC,GAAU,OAAJF,WAAI,IAAJA,UAAI,EAAJA,KAAMG,MAAoB,IAAbH,KAAKG,OAAiB,EAC7C,MAAO,uCAAuCjG,QAAQ,QAAS,SAACkG,GAC9D,IAAIC,EAAoB,GAAhBR,KAAKC,SAQb,OAPIC,EAAI,GACNM,GAAKN,EAAIM,GAAK,GAAK,EACnBN,EAAIF,KAAKS,MAAMP,EAAI,MAEnBM,GAAKH,EAAKG,GAAK,GAAK,EACpBH,EAAKL,KAAKS,MAAMJ,EAAK,MAET,MAANE,EAAYC,EAAS,EAAJA,EAAW,GAAK/R,SAAS,GACpD,EACF,EACA0C,EAAAA,UAAA,SAA0B+G,EAAkB9L,EAAab,QAAA,IAAAA,IAAAA,EAAA,IACvD,IAAMmV,EAAc,KAAK1G,KAAK5N,GAC1BuU,EAAc,GAUlB,OATApW,OAAO0I,KAAK1H,GAAO2H,QAAQ,SAAC/I,GACN,KAAhBwW,GACDD,IAAgBtU,GAAO,KAExBuU,GAAe,IAEjBA,GAAe,GAAA9V,OAAGV,EAAG,KAAAU,OAAIC,mBAAmBS,EAAMpB,IACpD,GAEI,iBAAiB6P,KADrB5N,GAAOuU,GAEEvU,EAEF,GAAAvB,OAAGqN,GAAQrN,OAAGuB,EACvB,EAEA+E,EAAAA,cAAA,SAA8B5F,QAAA,IAAAA,IAAAA,EAAA,IAC5B,IAAMoV,EAAc,GAIpB,OAHApW,OAAO0I,KAAK1H,GAAO2H,QAAQ,SAAC/I,GAC1BwW,EAAY/D,KAAK,GAAA/R,OAAGV,EAAG,KAAAU,OAAIC,mBAAmBS,EAAMpB,KACtD,GACOwW,EAAY5V,KAAK,IAC1B,EAEAoG,EAAAA,SAAA,SAAyB9C,EAAcjC,GACrC,GAAsB,oBAAXgF,OACT,OAAO,EAGT,IAAMwP,EAAIxU,GAAOuH,mBAAmBvC,OAAOyP,SAASC,QAC9CC,EAAM,IAAIpH,OAAO,QAAA9O,OAAQwD,EAAI,kBAC7BmS,EAAII,EAAEI,OAAOJ,EAAE7H,QAAQ,KAAO,GAAGkC,MAAM8F,GAC7C,OAAOP,QAAgCA,EAAE,GAAK,EAChD,EAEarP,EAAAA,QAAU,SAAU9C,GAC/B,GAAsB,oBAAX+C,OACT,MAAO,GAET,IAAM6P,EAAU7P,OAAOyP,SAASK,KAAKjG,MAAM,IAAItB,OAAO,SAAA9O,OAASwD,EAAI,eACnE,OAAO4S,EAAUA,EAAQ,GAAK,EAChC,EAEA9P,EAAAA,YAAA,SAA4BhH,EAAagX,GACvC,IAAIC,EAAMD,EAAUtN,MAAM,KAAK,GAE3BvJ,EAAS,GACPqW,GAA0C,IAA5BQ,EAAUpI,QAAQ,KAAcoI,EAAUtN,MAAM,KAAK,GAAK,GAC9E,GAAoB,KAAhB8M,EAAoB,CAEtB,IAAK,IAAIxG,GADT7P,EAASqW,EAAY9M,MAAM,MACPjC,OAAS,EAAGuI,GAAK,EAAGA,GAAK,EAEnC7P,EAAO6P,GAAGtG,MAAM,KAAK,KACf1J,GACZG,EAAO4U,OAAO/E,EAAG,GAGrBiH,EAAM,GAAAvW,OAAGuW,EAAG,KAAAvW,OAAIP,EAAOS,KAAK,MAE9B,OAAOqW,CACT,EAEAjQ,EAAAA,sBAAA,WACE,IAAIkQ,EAAU,GACd,IAAKjW,QAAS,EACZiW,EAAK,WAAO,GACTC,QAAU,GAEb,IAAMC,EAAyB,WAC7B,MAAM,IAAI9L,MAAM,kHAElB,EAIA,OAFAlL,OAAOsT,eAAewD,EAAGC,QAAS,OAAQ,CAAEhP,IAAKiP,IACjDhX,OAAOsT,eAAewD,EAAGC,QAAS,QAAS,CAAEhP,IAAKiP,IAC3CF,EAGT,IAAMC,EAAU,IAAIlW,QAAQ,SAACsJ,EAASoB,GACpCuL,EAAK,SAAClI,EAAKrQ,GACT,OAAIqQ,EAAYrD,EAAOqD,GAChBzE,EAAQ5L,EACjB,CACF,GAEA,OADAuY,EAAGC,QAAUA,EACND,CACT,EAEAlQ,EAAAA,aAAA,SAA6B2J,EAAiC3B,EAAUrQ,GACtE,QADsE,IAAAA,IAAAA,EAAA,MAClEgS,GAAoB,mBAAPA,EACf,OAAOA,EAAG3B,EAAKrQ,GAEjB,GAAIqQ,EACF,MAAMA,EAER,OAAOrQ,CACT,EAEAqI,EAAAA,UAAA,SAA0BqK,EAAe5M,GACvCqC,QAAQC,KAAK,IAAArG,QAAI,EAAA8N,EAAAsF,cAAY,MAAApT,OAAK2Q,EAAK,MAAA3Q,OAAK+D,GAC9C,EAEAuC,EAAAA,WAAA,SAA2BqK,EAAe5M,GACxCqC,QAAQuK,MAAM,CACZ5O,KAAM4O,EACN5M,IAAK,IAAA/D,QAAI,EAAA8N,EAAAsF,cAAY,MAAApT,OAAK2Q,EAAK,MAAA3Q,OAAK+D,IAExC,EACAuC,EAAAA,UAAA,SAA0BqK,EAAe5M,GACvCqC,QAAQuQ,IAAI,IAAA3W,QAAI,EAAA8N,EAAAsF,cAAY,MAAApT,OAAK2Q,EAAK,MAAA3Q,OAAK+D,GAC7C,EACAuC,EAAAA,WAAA,SAA2BqK,EAAe5M,GAGxC,IAAMuK,EAAW,IAAI1D,MAAMlM,KAAKoB,UAAU,CACxCiC,KAAM4O,EACN5M,IAAK,IAAA/D,QAAI,EAAA8N,EAAAsF,cAAY,MAAApT,OAAK2Q,EAAK,MAAA3Q,OAAK+D,MAGtC,MADAuK,EAAIvM,KAAO4O,EACLrC,CACR,EAkBA,IAAAsI,EAAA,SAAAtS,GAKE,SAAAsS,EAAmBlS,GAAnB,IAAA4C,EACEhD,EAAAvB,KAAArB,KAAMgD,EAAKX,KAAOW,EAAKM,SAAW,KAAGtD,YACrC4F,EAAKvF,KAAO2C,EAAK3C,MAAQ,GACzBuF,EAAKrC,UAAYP,EAAKO,WAAa,GAGnCvF,OAAOsT,eAAe1L,EAAM,UAAW,CACrC7I,MAAOiG,EAAKX,KAAOW,EAAKM,SAAW,GACnC6R,YAAY,EACZC,UAAU,EACVC,cAAc,KAElB,CACF,OAlBoCxS,EAAAqS,EAAAtS,GAkBpCsS,CAAA,CAlBA,CAAoChM,OAAvBtE,EAAAA,eAAAsQ,EAoBb,IAAMI,EAA6C,SAAAtS,GAAQ,WAAIkS,EAAelS,EAAnB,EAM3D,SAAgBZ,EAAqBY,EAA8BuS,GACjE,OAAQA,GAAWD,GAAqBtS,EAC1C,CAUA,SAAgBI,EAAad,GAC3B,OAAIA,GAAkC,kBAAjBA,EAAOkT,OACnBlT,EAAOkT,KAGlB,CAjBA5Q,EAAAA,qBAAAxC,EAYAwC,EAAAA,aAAAxB,EAYAwB,EAAAA,WAAA,SACEtC,EACAU,GAEA,GAAII,EAAad,GACf,MAAMF,EAAqBY,EAAMV,aAAM,EAANA,EAAQC,cAE3C,OAAA9F,EAAA,CAAS4D,KAAM2C,EAAK3C,KAAMiD,QAASN,EAAKX,KAASW,EAAKO,UAAY,CAAEA,UAAWP,EAAKO,WAAc,GACpG,EAWAqB,EAAAA,oBAAA,SAAoC3I,GAClC,GAAIA,GAAsB,iBAARA,GAAoBA,EAAIM,MAA4B,iBAAbN,EAAIM,KAAmB,CACxE,IAAAM,EAAoBZ,EAAIM,KAAtB8D,EAAIxD,EAAAwD,KAAEiD,EAAOzG,EAAAyG,QACrB,IAAMrH,EAAIoE,MAAQA,IAAWpE,EAAIqH,SAAWA,EAC1C,OAAA7G,EAAAA,EAAAA,EAAA,GACKR,IACEA,EAAIoE,MAAQA,EAAO,CAAEA,KAAIA,GAAK,KAC9BpE,EAAIqH,SAAWA,EAAU,CAAEA,QAAOA,GAAK,IAIlD,OAAOrH,CACT,EAEA2I,EAAAA,cAAA,SAA8BL,GAC5B,GAAIA,aAAa2E,OAA8B,iBAAd3E,EAAEjB,QACjC,IACE,IAAMmS,EAASzY,KAAKJ,MAAM2H,EAAEjB,SAC5B,GAAImS,GAAiC,iBAAhBA,EAAOpV,KAC1B,MAAO,CACLA,KAAMoV,EAAOpV,KACbiD,QAASmS,EAAOpT,KAAOoT,EAAOnS,SAAW,GACzCC,UAAWkS,EAAOlS,WAGtB,MAAOmS,GAAG,CAEd,OAAInR,GAAuB,iBAAXA,EAAElE,KACT,CAAEA,KAAMkE,EAAElE,KAAMiD,QAASiB,EAAEjB,SAAW,GAAIC,UAAWgB,EAAEhB,WAEzD,CAAElD,KAAM,gBAAiBiD,QAASjF,QAAOkG,aAAC,EAADA,EAAGjB,UAAWiB,GAAK,IACrE,EAYAK,EAAAA,cAAA,SAA8BtH,SACpB2Q,EAA8E3Q,EAAO2Q,MAA9ElP,EAAuEzB,EAAOgS,SAA9EA,OAAQ,IAAAvQ,EAAG,GAAEA,EAAEQ,EAAwDjC,EAAO+R,QAA/DA,OAAO,IAAA9P,EAAG,GAAEA,EAAEE,EAA0CnC,EAAOqY,WAAjDA,OAAU,IAAAlW,GAAQA,EAAEM,EAAsBzC,EAAOsY,eAApB,IAAA7V,GAAQA,GAE9E2E,QAAQmR,gBAAkBnR,QAAQuK,OAAOhB,EAAOqB,IAEhD5K,QAAQoR,OAASpR,QAAQuK,OAAOhB,EAAOqB,GAE1C,IAAkB,IAAAnK,EAAA,EAAA4Q,EAAA1G,EAAAlK,EAAA4Q,EAAA1Q,OAAAF,IAAS,CAAtB,IAAM6Q,EAAGD,EAAA5Q,GACJmG,EAAe0K,EAAG1K,KAAZzE,EAASmP,EAAGnP,KAC1B,OAAQyE,GACN,IAAK,OACH5G,QAAQuQ,IAAIpO,GACZ,MACF,IAAK,OACHnC,QAAQC,KAAKkC,GACb,MACF,IAAK,QACHnC,QAAQuK,MAAMpI,IAIhB8O,IACDjR,QAAQuR,OAASvR,QAAQuQ,KAAK,gBAEjB,QAAhBpY,EAAA6H,QAAQwR,gBAAQ,IAAArZ,GAAAA,EAAAwE,KAAAqD,QAClB,EAEaE,EAAAA,MAAQ,SAACuR,GAAW,YAAX,IAAAA,IAAAA,EAAA,GAAW,IAAItX,QAAQ,SAAAoV,GAAK,OAAAhL,WAAWgL,EAAGkC,EAAd,EAAjB,EAEjCvR,EAAAA,eAAA,SAA+BwR,GAC7B,MAAO,MAAA9X,OAAM8X,EACf,EAEaxR,EAAAA,iBAAmB,SAACwP,GAC/BA,EAAcA,EAAYtG,QAAQ,MAAO,IACzC,IAAM/P,EAAS,GAoBf,OAnBcqW,EAAY9M,MAAM,KAE1BX,QAAQ,SAACjJ,GACT,IAAAb,EAAea,EAAK4J,MAAM,KAAzB1J,EAAGf,EAAA,GAAEE,EAAKF,EAAA,GACfe,EAAMwJ,mBAAmBxJ,GACzBb,EAAQqK,mBAAmBrK,GACvBa,IACEG,EAAOH,GACLL,MAAMC,QAAQO,EAAOH,IACvBG,EAAOH,GAAKyS,KAAKtT,GAEjBgB,EAAOH,GAAO,CAACG,EAAOH,GAAMb,GAG9BgB,EAAOH,GAAOb,EAGpB,GAEOgB,CACT,EAGA6G,EAAAA,aAAA,SAA6B/E,GAC3B,IAAIwW,EAAgB,GACdC,EAAUzW,EAAI6O,MAAM,4BAC1B,GAAI4H,EAAS,CAEXzW,EAAMyW,EAAQ,GACd,IAAM/B,EAAS+B,EAAQ,GACnB/B,IACF8B,GAAW,EAAAzR,EAAA2R,kBAAiBhC,IAGxB,IAAAiC,EAA2BH,EAAQG,MAAzBC,EAAYC,EAAKL,EAA7B,WACN,MAAI,SAAS5I,KAAK5N,KAAS2W,EAClB,CACLvH,MAAO,mBACPE,kBAAmB,yBAAA7Q,OAAyBuB,IAG3C2W,EAOE,CACLG,MAAOF,EAAaE,MACpBH,MAAKA,EACLI,YAAa/W,GATN,CACLoP,MAAO,gBACPE,kBAAmB,4BASzB,kLChYItS,EACAga,uNACJ,SAAWA,GACPA,EAAsB,WAAI,UAC1BA,EAAyB,cAAI,UAC7BA,EAAsB,WAAI,SAC1BA,EAA0B,eAAI,UAC9BA,EAAyB,cAAI,kBAC7BA,EAAwB,aAAI,kBAC5BA,EAAsB,WAAI,gBAC1BA,EAA+B,oBAAI,YACnCA,EAAgC,qBAAI,uBACpCA,EAA6B,kBAAI,mBACpC,CAXD,CAWGA,IAAcA,EAAY,CAAC,IAC9B,IAoBIC,EA4BAC,EAhDAC,EAGQ,SAHRA,EAOU,WAPVA,EAQe,gBARfA,EASY,aATZA,EAUe,gBAVfA,EAWoB,qBAXpBA,EAYiB,kBAZjBA,EAaM,OAbNA,EAeY,aAGZC,EAAqB,CAAC,OAAQ,OAC9BC,EAAoB,CAAC,IAAK,KAAM,KAAM,KAAM,MAEhD,SAAWJ,GACPA,EAAa,GAAI,IACjBA,EAAa,GAAI,IACjBA,EAAc,IAAI,KAClBA,EAAc,IAAI,KAClBA,EAAa,GAAI,IACpB,CAND,CAMGA,IAAaA,EAAW,CAAC,KACTja,EAAK,CAAC,GAClBia,EAASK,IAAM,MAClBta,EAAGia,EAASM,IAAM,MAClBva,EAAGia,EAASO,KAAO,OACnBxa,EAAGia,EAASQ,IAAM,MAClBza,EAAGia,EAASS,KAAO,OAgBvB,SAAWR,GACPA,EAAiB,MAAI,QACrBA,EAAe,IAAI,KACtB,CAHD,CAGGA,IAAcA,EAAY,CAAC,IClE9B,IACQS,EADJ3U,GACI2U,EAAgB,SAAU7D,EAAG8D,GAI7B,OAHAD,EAAgBxZ,OAAO0Z,gBAClB,CAAEC,UAAW,cAAgBpa,OAAS,SAAUoW,EAAG8D,GAAK9D,EAAEgE,UAAYF,CAAG,GAC1E,SAAU9D,EAAG8D,GAAK,IAAK,IAAIG,KAAKH,EAAOzZ,OAAOiE,UAAU4V,eAAexW,KAAKoW,EAAGG,KAAIjE,EAAEiE,GAAKH,EAAEG,GAAI,EAC7FJ,EAAc7D,EAAG8D,EAC5B,EACO,SAAU9D,EAAG8D,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIK,UAAU,uBAAyBzZ,OAAOoZ,GAAK,iCAE7D,SAASM,IAAO/X,KAAKyD,YAAckQ,CAAG,CADtC6D,EAAc7D,EAAG8D,GAEjB9D,EAAE1R,UAAkB,OAANwV,EAAazZ,OAAOga,OAAOP,IAAMM,EAAG9V,UAAYwV,EAAExV,UAAW,IAAI8V,EACnF,GAEAE,EAAW,GACXC,EAAmB,CAAC,EAcpBC,EAAkB,SAAUvV,GAE5B,SAASuV,EAAehK,EAAQiK,GAC5B,GAAIA,IAAaF,EACb,MAAM,IAAIJ,UAAU,0DAExB,OAAOlV,EAAOvB,KAAKrB,KAAMmO,IAAWnO,IACxC,CAcA,OApBA6C,EAAUsV,EAAgBvV,GAO1BuV,EAAeE,IAAM,SAAUlK,GAC3B,IAAK,IAAIP,EAAI,EAAG0K,EAAML,EAAS5S,OAAQuI,EAAI0K,EAAK1K,IAC5C,GAAIqK,EAASrK,GAAGO,SAAWA,EACvB,OAAO8J,EAASrK,GAAGlP,SAG3B,IAAI6Z,EAAS,IAAIJ,EAAehK,EAAQ+J,GAKxC,OAJAD,EAAS5H,KAAK,CACVlC,OAAQA,EACRzP,SAAU6Z,IAEPA,CACX,EACOJ,CACX,CAtBsB,CAZlB,SAAsBhK,GAClBnQ,OAAOwa,iBAAiBxY,KAAM,CAC1BmO,OAAQ,CACJgH,YAAY,EACZC,UAAU,EACVC,cAAc,EACdtY,MAAOoR,IAGnB,GA2BJoK,EAAA,ECpDWE,EAA0BN,EAAAA,IAAmB,oBAC7CO,EAAwBP,EAAAA,IAAmB,kBAC3CQ,EAAuBR,EAAAA,IAAmB,iBAC1CS,EAAuBT,EAAAA,IAAmB,iBAC1CU,EAAmBV,EAAAA,IAAmB,aACtCW,EAAyBX,EAAAA,IAAmB,0BAC5CY,EAAqBZ,EAAAA,IAAmB,sBACxCa,EAAyBb,EAAAA,IAAmB,0BAC5Cc,EAA+Bd,EAAAA,IAAmB,gCAClDe,EAA2Bf,EAAAA,IAAmB,4BAC9CgB,EAAqBhB,EAAAA,IAAmB,eACxCiB,EAAgBjB,EAAAA,IAAmB,UACnCkB,EAAkBlB,EAAAA,IAAmB,YCbrCmB,EAAU,SAAU3P,GAAK,OAAO3L,OAAOiE,UAAUC,SAASb,KAAKsI,GAAGxH,MAAM,GAAI,GAAGoE,aAAe,EAC9FgT,EAAW,SAAU5P,GAAK,MAAsB,WAAf2P,EAAQ3P,EAAiB,EAE1D6P,EAAW,SAAU7P,GAAK,MAAsB,WAAf2P,EAAQ3P,EAAiB,EAG1DnM,EAAU,SAAUmM,GAAK,OAAOpM,MAAMC,QAAQmM,EAAI,EAClD8P,EAAS,SAAU9P,GAAK,MAAsB,SAAf2P,EAAQ3P,EAAe,EACtD+P,EAAW,SAAU/P,GAAK,MAAsB,WAAf2P,EAAQ3P,EAAiB,EAC1DgQ,EAAmB,SAAUhQ,GAAK,OAAOA,GAAMA,EAAEiQ,yBAAyBzB,CAAiB,ECIlG0B,EAAc,WACd,SAASA,EAAWC,GAChB,IAAKtc,EAAQsc,GACT,MAAM,IAAIhC,UAAU,mDAAqDxZ,cAAcwb,IAE3F,GAAIA,EAAOzU,OAAS,EAChB,MAAM,IAAI6D,MAAM,2CAEpB4Q,EAAOnT,QAAQ,SAAUoT,GACrB,KAAMA,aAAiBC,IACnB,MAAM,IAAIlC,UAAU,mDAAqDxZ,cAAcyb,EAAO,MAEtG,GACA/Z,KAAK8Z,OAASA,CAClB,CAoDA,OAnDAD,EAAW5X,UAAUrF,MAAQ,SAAUgB,GACnC,IAAIf,EACJ,OAAOA,EAAK,CAAC,GACNe,GAAO,CACN0N,KAAM,aACN2O,YAAaja,KAAK8Z,OAAOrc,IAAI,SAAUsc,GAAS,OAAOA,EAAMG,SAASD,WAAa,IAEvFpd,CACR,EACAgd,EAAW5X,UAAUiY,OAAS,WAC1B,MAAO,CACH5O,KAAM,aACN2O,YAAaja,KAAK8Z,OAAOrc,IAAI,SAAUsc,GAAS,OAAOA,EAAMG,SAASD,WAAa,GAE3F,EACAJ,EAAWM,SAAW,SAAUC,GAC5B,IAAIC,EAAKxd,EACT,GAAwB,eAApBud,EAAW9O,OAA0B9N,EAAQ4c,EAAWH,aACxD,OAAO,EAEX,IACI,IAAK,IAAIlb,EAlDqB,SAASub,GAC/C,IAAIC,EAAsB,mBAAXC,QAAyBA,OAAOC,SAAUC,EAAIH,GAAKD,EAAEC,GAAI3M,EAAI,EAC5E,GAAI8M,EAAG,OAAOA,EAAErZ,KAAKiZ,GACrB,GAAIA,GAAyB,iBAAbA,EAAEjV,OAAqB,MAAO,CAC1CsV,KAAM,WAEF,OADIL,GAAK1M,GAAK0M,EAAEjV,SAAQiV,OAAS,GAC1B,CAAEvd,MAAOud,GAAKA,EAAE1M,KAAMgN,MAAON,EACxC,GAEJ,MAAM,IAAIxC,UAAUyC,EAAI,0BAA4B,kCACxD,CAwC0BM,CAAST,EAAWH,aAAc1a,EAAKR,EAAG4b,QAASpb,EAAGqb,KAAMrb,EAAKR,EAAG4b,OAAQ,CACtF,IAAIZ,EAAQxa,EAAGxC,MACf,IAAKyc,EAASO,EAAM,MAAQP,EAASO,EAAM,IACvC,OAAO,CAEf,CACJ,CACA,MAAOe,GAAST,EAAM,CAAEpL,MAAO6L,EAAS,CAAC,QAErC,IACQvb,IAAOA,EAAGqb,OAAS/d,EAAKkC,EAAGgc,SAASle,EAAGwE,KAAKtC,EACpD,CAAC,QACS,GAAIsb,EAAK,MAAMA,EAAIpL,KAAO,CACxC,CACA,OAAO,CACX,EACA4K,EAAWmB,SAAW,SAAUZ,GAC5B,IAAIa,EAAab,EAAWN,OAAO,GAC/BoB,EAAYd,EAAWN,OAAOM,EAAWN,OAAOzU,OAAS,GAC7D,GAAI4V,EAAWE,WAAaD,EAAUC,UAAYF,EAAWG,YAAcF,EAAUE,UACjF,OAAO,CAEf,EACApd,OAAOsT,eAAeuI,EAAW5X,UAAW,gBAAiB,CACzD8D,IAAK,WACD,OAAO+S,CACX,EACA3D,YAAY,EACZE,cAAc,IAEXwE,CACX,CAnEkB,GCddgB,EAAsC,SAASP,GAC/C,IAAIC,EAAsB,mBAAXC,QAAyBA,OAAOC,SAAUC,EAAIH,GAAKD,EAAEC,GAAI3M,EAAI,EAC5E,GAAI8M,EAAG,OAAOA,EAAErZ,KAAKiZ,GACrB,GAAIA,GAAyB,iBAAbA,EAAEjV,OAAqB,MAAO,CAC1CsV,KAAM,WAEF,OADIL,GAAK1M,GAAK0M,EAAEjV,SAAQiV,OAAS,GAC1B,CAAEvd,MAAOud,GAAKA,EAAE1M,KAAMgN,MAAON,EACxC,GAEJ,MAAM,IAAIxC,UAAUyC,EAAI,0BAA4B,kCACxD,EAIIc,EAAW,WACX,SAASA,EAAQC,GACb,IAAK9d,EAAQ8d,GACT,MAAM,IAAIxD,UAAU,uDAAyDxZ,cAAcgd,IAE/F,GAAqB,IAAjBA,EAAMjW,OACN,MAAM,IAAI6D,MAAM,8CAEpBoS,EAAM3U,QAAQ,SAAUoE,GACpB,KAAMA,aAAgB8O,GAClB,MAAM,IAAI/B,UAAU,uDAAyDxZ,cAAcyM,EAAM,OAErG,IAAK8O,EAAAA,SAAoB9O,GACrB,MAAM,IAAI7B,MAAM,cAAc5K,OAAOyM,EAAK+O,OAAOrc,IAAI,SAAUma,GAAK,OAAOA,EAAE2D,kBAAoB,GAAI,0BAE7G,GACAvb,KAAKsb,MAAQA,CACjB,CAwEA,OAvEAD,EAAQpZ,UAAUrF,MAAQ,SAAUgB,GAChC,IAAIf,EACJ,OAAOA,EAAK,CAAC,GACNe,GAAO,CACN0N,KAAM,UACN2O,YAAaja,KAAKsb,MAAM7d,IAAI,SAAUsN,GAClC,OAAOA,EAAK+O,OAAOrc,IAAI,SAAUsc,GAAS,MAAO,CAACA,EAAMqB,UAAWrB,EAAMoB,SAAW,EACxF,IAEJte,CACR,EACAwe,EAAQpZ,UAAUiY,OAAS,WACvB,MAAO,CACH5O,KAAM,UACN2O,YAAaja,KAAKsb,MAAM7d,IAAI,SAAUsN,GAClC,OAAOA,EAAK+O,OAAOrc,IAAI,SAAUsc,GAAS,MAAO,CAACA,EAAMqB,UAAWrB,EAAMoB,SAAW,EACxF,GAER,EACAE,EAAQlB,SAAW,SAAUqB,GACzB,IAAInB,EAAKxd,EAAI4e,EAAK1c,EAClB,GAAqB,YAAjByc,EAAQlQ,OAAuB9N,EAAQge,EAAQvB,aAC/C,OAAO,EAEX,IACI,IAAK,IAAI1a,EAAKsb,EAASW,EAAQvB,aAAcxa,EAAKF,EAAGob,QAASlb,EAAGmb,KAAMnb,EAAKF,EAAGob,OAAQ,CACnF,IAAI5P,EAAOtL,EAAG1C,MACd,IAAKiD,KAAK0b,kBAAkB3Q,GACxB,OAAO,EAEX,IACI,IAAK,IAAI4Q,GAAUF,OAAW,EAAGZ,EAAS9P,IAAQ6Q,EAAWD,EAAOhB,QAASiB,EAAShB,KAAMgB,EAAWD,EAAOhB,OAAQ,CAClH,IAAIZ,EAAQ6B,EAAS7e,MACrB,IAAKyc,EAASO,EAAM,MAAQP,EAASO,EAAM,IACvC,OAAO,CAEf,CACJ,CACA,MAAO8B,GAASJ,EAAM,CAAExM,MAAO4M,EAAS,CAAC,QAErC,IACQD,IAAaA,EAAShB,OAAS7b,EAAK4c,EAAOZ,SAAShc,EAAGsC,KAAKsa,EACpE,CAAC,QACS,GAAIF,EAAK,MAAMA,EAAIxM,KAAO,CACxC,CACJ,CACJ,CACA,MAAO6L,GAAST,EAAM,CAAEpL,MAAO6L,EAAS,CAAC,QAErC,IACQrb,IAAOA,EAAGmb,OAAS/d,EAAK0C,EAAGwb,SAASle,EAAGwE,KAAK9B,EACpD,CAAC,QACS,GAAI8a,EAAK,MAAMA,EAAIpL,KAAO,CACxC,CACA,OAAO,CACX,EACAoM,EAAQK,kBAAoB,SAAUtB,GAClC,IAAIa,EAAab,EAAW,GACxBc,EAAYd,EAAWA,EAAW/U,OAAS,GAC/C,OAAI4V,EAAW,KAAOC,EAAU,IAAMD,EAAW,KAAOC,EAAU,EAItE,EACAld,OAAOsT,eAAe+J,EAAQpZ,UAAW,gBAAiB,CACtD8D,IAAK,WACD,OAAOgT,CACX,EACA5D,YAAY,EACZE,cAAc,IAEXgG,CACX,CA1Fe,GCAXS,EAAc,WACd,SAASA,EAAWhC,GAChB,IAAKtc,EAAQsc,GACT,MAAM,IAAIhC,UAAU,mDAAqDxZ,cAAcwb,IAE3F,GAAsB,IAAlBA,EAAOzU,OACP,MAAM,IAAI6D,MAAM,0CAEpB4Q,EAAOnT,QAAQ,SAAUoT,GACrB,KAAMA,aAAiBC,IACnB,MAAM,IAAIlC,UAAU,mDAAqDxZ,cAAcyb,EAAO,MAEtG,GACA/Z,KAAK8Z,OAASA,CAClB,CA6CA,OA5CAgC,EAAW7Z,UAAUrF,MAAQ,SAAUgB,GACnC,IAAIf,EACJ,OAAOA,EAAK,CAAC,GACNe,GAAO,CACN0N,KAAM,aACN2O,YAAaja,KAAK8Z,OAAOrc,IAAI,SAAUsc,GAAS,OAAOA,EAAMG,SAASD,WAAa,IAEvFpd,CACR,EACAif,EAAW7Z,UAAUiY,OAAS,WAC1B,MAAO,CACH5O,KAAM,aACN2O,YAAaja,KAAK8Z,OAAOrc,IAAI,SAAUsc,GAAS,OAAOA,EAAMG,SAASD,WAAa,GAE3F,EACA6B,EAAW3B,SAAW,SAAU4B,GAC5B,IAAI1B,EAAKxd,EACT,GAAwB,eAApBkf,EAAWzQ,OAA0B9N,EAAQue,EAAW9B,aACxD,OAAO,EAEX,IACI,IAAK,IAAIlb,EAlDqB,SAASub,GAC/C,IAAIC,EAAsB,mBAAXC,QAAyBA,OAAOC,SAAUC,EAAIH,GAAKD,EAAEC,GAAI3M,EAAI,EAC5E,GAAI8M,EAAG,OAAOA,EAAErZ,KAAKiZ,GACrB,GAAIA,GAAyB,iBAAbA,EAAEjV,OAAqB,MAAO,CAC1CsV,KAAM,WAEF,OADIL,GAAK1M,GAAK0M,EAAEjV,SAAQiV,OAAS,GAC1B,CAAEvd,MAAOud,GAAKA,EAAE1M,KAAMgN,MAAON,EACxC,GAEJ,MAAM,IAAIxC,UAAUyC,EAAI,0BAA4B,kCACxD,CAwC0BM,CAASkB,EAAW9B,aAAc1a,EAAKR,EAAG4b,QAASpb,EAAGqb,KAAMrb,EAAKR,EAAG4b,OAAQ,CACtF,IAAIZ,EAAQxa,EAAGxC,MACf,IAAKyc,EAASO,EAAM,MAAQP,EAASO,EAAM,IACvC,OAAO,CAEf,CACJ,CACA,MAAOe,GAAST,EAAM,CAAEpL,MAAO6L,EAAS,CAAC,QAErC,IACQvb,IAAOA,EAAGqb,OAAS/d,EAAKkC,EAAGgc,SAASle,EAAGwE,KAAKtC,EACpD,CAAC,QACS,GAAIsb,EAAK,MAAMA,EAAIpL,KAAO,CACxC,CACA,OAAO,CACX,EACAjR,OAAOsT,eAAewK,EAAW7Z,UAAW,gBAAiB,CACzD8D,IAAK,WACD,OAAOiT,CACX,EACA7D,YAAY,EACZE,cAAc,IAEXyG,CACX,CA5DkB,GCddjB,EAAsC,SAASP,GAC/C,IAAIC,EAAsB,mBAAXC,QAAyBA,OAAOC,SAAUC,EAAIH,GAAKD,EAAEC,GAAI3M,EAAI,EAC5E,GAAI8M,EAAG,OAAOA,EAAErZ,KAAKiZ,GACrB,GAAIA,GAAyB,iBAAbA,EAAEjV,OAAqB,MAAO,CAC1CsV,KAAM,WAEF,OADIL,GAAK1M,GAAK0M,EAAEjV,SAAQiV,OAAS,GAC1B,CAAEvd,MAAOud,GAAKA,EAAE1M,KAAMgN,MAAON,EACxC,GAEJ,MAAM,IAAIxC,UAAUyC,EAAI,0BAA4B,kCACxD,EAIIyB,EAAmB,WACnB,SAASA,EAAgBV,GACrB,IAAK9d,EAAQ8d,GACT,MAAM,IAAIxD,UAAU,uDAAyDxZ,cAAcgd,IAE/F,GAAqB,IAAjBA,EAAMjW,OACN,MAAM,IAAI6D,MAAM,8CAEpBoS,EAAM3U,QAAQ,SAAUoE,GACpB,KAAMA,aAAgB8O,GAClB,MAAM,IAAI/B,UAAU,uDAAyDxZ,cAAcyM,EAAM,MAEzG,GACA/K,KAAKsb,MAAQA,CACjB,CA6DA,OA5DAU,EAAgB/Z,UAAUrF,MAAQ,SAAUgB,GACxC,IAAIf,EACJ,OAAOA,EAAK,CAAC,GACNe,GAAO,CACN0N,KAAM,kBACN2O,YAAaja,KAAKsb,MAAM7d,IAAI,SAAUsN,GAClC,OAAOA,EAAK+O,OAAOrc,IAAI,SAAUsc,GAAS,MAAO,CAACA,EAAMqB,UAAWrB,EAAMoB,SAAW,EACxF,IAEJte,CACR,EACAmf,EAAgB/Z,UAAUiY,OAAS,WAC/B,MAAO,CACH5O,KAAM,kBACN2O,YAAaja,KAAKsb,MAAM7d,IAAI,SAAUsN,GAClC,OAAOA,EAAK+O,OAAOrc,IAAI,SAAUsc,GAAS,MAAO,CAACA,EAAMqB,UAAWrB,EAAMoB,SAAW,EACxF,GAER,EACAa,EAAgB7B,SAAW,SAAU8B,GACjC,IAAI5B,EAAKxd,EAAI4e,EAAK1c,EAClB,GAA6B,oBAAzBkd,EAAgB3Q,OAA+B9N,EAAQye,EAAgBhC,aACvE,OAAO,EAEX,IACI,IAAK,IAAI1a,EAAKsb,EAASoB,EAAgBhC,aAAcxa,EAAKF,EAAGob,QAASlb,EAAGmb,KAAMnb,EAAKF,EAAGob,OAAQ,CAC3F,IAAI5P,EAAOtL,EAAG1C,MACd,IACI,IAAK,IAAI4e,GAAUF,OAAW,EAAGZ,EAAS9P,IAAQ6Q,EAAWD,EAAOhB,QAASiB,EAAShB,KAAMgB,EAAWD,EAAOhB,OAAQ,CAClH,IAAIZ,EAAQ6B,EAAS7e,MACrB,IAAKyc,EAASO,EAAM,MAAQP,EAASO,EAAM,IACvC,OAAO,CAEf,CACJ,CACA,MAAO8B,GAASJ,EAAM,CAAExM,MAAO4M,EAAS,CAAC,QAErC,IACQD,IAAaA,EAAShB,OAAS7b,EAAK4c,EAAOZ,SAAShc,EAAGsC,KAAKsa,EACpE,CAAC,QACS,GAAIF,EAAK,MAAMA,EAAIxM,KAAO,CACxC,CACJ,CACJ,CACA,MAAO6L,GAAST,EAAM,CAAEpL,MAAO6L,EAAS,CAAC,QAErC,IACQrb,IAAOA,EAAGmb,OAAS/d,EAAK0C,EAAGwb,SAASle,EAAGwE,KAAK9B,EACpD,CAAC,QACS,GAAI8a,EAAK,MAAMA,EAAIpL,KAAO,CACxC,CACA,OAAO,CACX,EACAjR,OAAOsT,eAAe0K,EAAgB/Z,UAAW,gBAAiB,CAC9D8D,IAAK,WACD,OAAOkT,CACX,EACA9D,YAAY,EACZE,cAAc,IAEX2G,CACX,CA5EuB,GCdnBnB,EAAsC,SAASP,GAC/C,IAAIC,EAAsB,mBAAXC,QAAyBA,OAAOC,SAAUC,EAAIH,GAAKD,EAAEC,GAAI3M,EAAI,EAC5E,GAAI8M,EAAG,OAAOA,EAAErZ,KAAKiZ,GACrB,GAAIA,GAAyB,iBAAbA,EAAEjV,OAAqB,MAAO,CAC1CsV,KAAM,WAEF,OADIL,GAAK1M,GAAK0M,EAAEjV,SAAQiV,OAAS,GAC1B,CAAEvd,MAAOud,GAAKA,EAAE1M,KAAMgN,MAAON,EACxC,GAEJ,MAAM,IAAIxC,UAAUyC,EAAI,0BAA4B,kCACxD,EAII2B,EAAgB,WAChB,SAASA,EAAaC,GAClB,IAAI9B,EAAKxd,EACT,IAAKW,EAAQ2e,GACT,MAAM,IAAIrE,UAAU,uDAAyDxZ,cAAc6d,IAE/F,GAAwB,IAApBA,EAAS9W,OACT,MAAM,IAAI6D,MAAM,gDAEpB,IACI,IAAK,IAAIkT,EAAavB,EAASsB,GAAWE,EAAeD,EAAWzB,QAAS0B,EAAazB,KAAMyB,EAAeD,EAAWzB,OAAQ,CAC9H,IAAIa,EAAUa,EAAatf,MAC3B,KAAMye,aAAmBH,GACrB,MAAM,IAAIvD,UAAU,sDAAwDxZ,cAAckd,EAAS,MAE3G,CACJ,CACA,MAAOV,GAAST,EAAM,CAAEpL,MAAO6L,EAAS,CAAC,QAErC,IACQuB,IAAiBA,EAAazB,OAAS/d,EAAKuf,EAAWrB,SAASle,EAAGwE,KAAK+a,EAChF,CAAC,QACS,GAAI/B,EAAK,MAAMA,EAAIpL,KAAO,CACxC,CACAjP,KAAKmc,SAAWA,CACpB,CA6EA,OA5EAD,EAAaja,UAAUrF,MAAQ,SAAUgB,GACrC,IAAIf,EACJ,OAAOA,EAAK,CAAC,GACNe,GAAO,CACN0N,KAAM,eACN2O,YAAaja,KAAKmc,SAAS1e,IAAI,SAAU+d,GACrC,OAAOA,EAAQF,MAAM7d,IAAI,SAAUsN,GAC/B,OAAOA,EAAK+O,OAAOrc,IAAI,SAAUsc,GAAS,MAAO,CAACA,EAAMqB,UAAWrB,EAAMoB,SAAW,EACxF,EACJ,IAEJte,CACR,EACAqf,EAAaja,UAAUiY,OAAS,WAC5B,MAAO,CACH5O,KAAM,eACN2O,YAAaja,KAAKmc,SAAS1e,IAAI,SAAU+d,GACrC,OAAOA,EAAQF,MAAM7d,IAAI,SAAUsN,GAC/B,OAAOA,EAAK+O,OAAOrc,IAAI,SAAUsc,GAAS,MAAO,CAACA,EAAMqB,UAAWrB,EAAMoB,SAAW,EACxF,EACJ,GAER,EACAe,EAAa/B,SAAW,SAAUmC,GAC9B,IAAIb,EAAK5e,EAAI0f,EAAKxd,EAAIyd,EAAKjd,EAC3B,GAA0B,iBAAtB+c,EAAahR,OAA4B9N,EAAQ8e,EAAarC,aAC9D,OAAO,EAEX,IACI,IAAK,IAAIxa,EAAKob,EAASyB,EAAarC,aAAcla,EAAKN,EAAGkb,QAAS5a,EAAG6a,KAAM7a,EAAKN,EAAGkb,OAAQ,CACxF,IAAIa,EAAUzb,EAAGhD,MACjB,IACI,IAAK,IAAI0f,GAAaF,OAAW,EAAG1B,EAASW,IAAWkB,EAAcD,EAAU9B,QAAS+B,EAAY9B,KAAM8B,EAAcD,EAAU9B,OAAQ,CACvI,IAAI5P,EAAO2R,EAAY3f,MACvB,IACI,IAAK,IAAI4e,GAAUa,OAAW,EAAG3B,EAAS9P,IAAQ6Q,EAAWD,EAAOhB,QAASiB,EAAShB,KAAMgB,EAAWD,EAAOhB,OAAQ,CAClH,IAAIZ,EAAQ6B,EAAS7e,MACrB,IAAKyc,EAASO,EAAM,MAAQP,EAASO,EAAM,IACvC,OAAO,CAEf,CACJ,CACA,MAAO4C,GAASH,EAAM,CAAEvN,MAAO0N,EAAS,CAAC,QAErC,IACQf,IAAaA,EAAShB,OAASrb,EAAKoc,EAAOZ,SAASxb,EAAG8B,KAAKsa,EACpE,CAAC,QACS,GAAIa,EAAK,MAAMA,EAAIvN,KAAO,CACxC,CACJ,CACJ,CACA,MAAO2N,GAASL,EAAM,CAAEtN,MAAO2N,EAAS,CAAC,QAErC,IACQF,IAAgBA,EAAY9B,OAAS7b,EAAK0d,EAAU1B,SAAShc,EAAGsC,KAAKob,EAC7E,CAAC,QACS,GAAIF,EAAK,MAAMA,EAAItN,KAAO,CACxC,CACJ,CACJ,CACA,MAAO4M,GAASJ,EAAM,CAAExM,MAAO4M,EAAS,CAAC,QAErC,IACQ9b,IAAOA,EAAG6a,OAAS/d,EAAK4C,EAAGsb,SAASle,EAAGwE,KAAK5B,EACpD,CAAC,QACS,GAAIgc,EAAK,MAAMA,EAAIxM,KAAO,CACxC,CACA,OAAO,CACX,EACAjR,OAAOsT,eAAe4K,EAAaja,UAAW,gBAAiB,CAC3D8D,IAAK,WACD,OAAOmT,CACX,EACA/D,YAAY,EACZE,cAAc,IAEX6G,CACX,CAvGoB,GCdhBW,EAAkC,SAAUvC,EAAGwC,GAC/C,IAAIpC,EAAsB,mBAAXF,QAAyBF,EAAEE,OAAOC,UACjD,IAAKC,EAAG,OAAOJ,EACf,IAAmBrG,EAAY1P,EAA3BqJ,EAAI8M,EAAErZ,KAAKiZ,GAAOyC,EAAK,GAC3B,IACI,WAAmB,IAAXD,GAAgBA,KAAM,MAAQ7I,EAAIrG,EAAE+M,QAAQC,MAAMmC,EAAG1M,KAAK4D,EAAElX,MACxE,CACA,MAAOkS,GAAS1K,EAAI,CAAE0K,MAAOA,EAAS,CAAC,QAEnC,IACQgF,IAAMA,EAAE2G,OAASF,EAAI9M,EAAU,SAAI8M,EAAErZ,KAAKuM,EAClD,CAAC,QACS,GAAIrJ,EAAG,MAAMA,EAAE0K,KAAO,CACpC,CACA,OAAO8N,CACX,EAGIC,GAAQ,WACR,SAASA,IACT,CA0GA,OAzGAA,EAAKC,sBAAwB,SAAUC,GACnC,OAAOA,EAAUzf,IAAI,SAAUgK,GAC3B,OAAOuV,EAAKG,YAAY1V,EAC5B,EACJ,EACAuV,EAAKG,YAAc,SAAU1V,GACzB,IAAIf,EAAO1I,OAAO0I,KAAKe,GACnB2V,EAAa,CAAC,EA0DlB,OAzDI7f,MAAMC,QAAQiK,KACd2V,EAAa,IAEjB1W,EAAKC,QAAQ,SAAU/I,GACnB,IAEIyf,EAFA3f,EAAO+J,EAAS7J,GAGpB,OAFWof,EAAKM,UAAU5f,IAGtB,KAAKsZ,EACDqG,EAAY,IAAIrD,GAAMtc,EAAKuc,YAAY,GAAIvc,EAAKuc,YAAY,IAC5D,MACJ,KAAKjD,EACDqG,EAAY,IAAIxD,EAAWnc,EAAKuc,YAAYxc,IAAI,SAAUsc,GAAS,OAAO,IAAIC,GAAMD,EAAM,GAAIA,EAAM,GAAK,IACzG,MACJ,KAAK/C,EACDqG,EAAY,IAAIhC,EAAQ3d,EAAKuc,YAAYxc,IAAI,SAAUsN,GAAQ,OAAO,IAAI8O,EAAW9O,EAAKtN,IAAI,SAAUZ,GACpG,IAAIkC,EAAK8d,EAAOhgB,EAAI,GAAI0gB,EAAMxe,EAAG,GAAIye,EAAMze,EAAG,GAC9C,OAAO,IAAIib,GAAMuD,EAAKC,EAC1B,GAAK,IACL,MACJ,KAAKxG,EACDqG,EAAY,IAAIvB,EAAWpe,EAAKuc,YAAYxc,IAAI,SAAUsc,GAAS,OAAO,IAAIC,GAAMD,EAAM,GAAIA,EAAM,GAAK,IACzG,MACJ,KAAK/C,EACDqG,EAAY,IAAIrB,EAAgBte,EAAKuc,YAAYxc,IAAI,SAAUsN,GAAQ,OAAO,IAAI8O,EAAW9O,EAAKtN,IAAI,SAAUZ,GAC5G,IAAIkC,EAAK8d,EAAOhgB,EAAI,GAAI0gB,EAAMxe,EAAG,GAAIye,EAAMze,EAAG,GAC9C,OAAO,IAAIib,GAAMuD,EAAKC,EAC1B,GAAK,IACL,MACJ,KAAKxG,EACDqG,EAAY,IAAInB,EAAaxe,EAAKuc,YAAYxc,IAAI,SAAU+d,GACxD,OAAO,IAAIH,EAAQG,EAAQ/d,IAAI,SAAUsN,GAAQ,OAAO,IAAI8O,EAAW9O,EAAKtN,IAAI,SAAUZ,GACtF,IAAIkC,EAAK8d,EAAOhgB,EAAI,GAAI0gB,EAAMxe,EAAG,GAAIye,EAAMze,EAAG,GAC9C,OAAO,IAAIib,GAAMuD,EAAKC,EAC1B,GAAK,GACT,IACA,MACJ,KAAKxG,EACDqG,EAAY3f,EACZ,MACJ,KAAKsZ,EACL,ITpDL,QSqDSqG,EAAYL,EAAKG,YAAYzf,GAC7B,MACJ,KAAKsZ,EACDqG,EAAY,IAAIzJ,KAAKlW,EAAK+f,OAC1B,MACJ,QACIJ,EAAY3f,EAEhBH,MAAMC,QAAQ4f,GACdA,EAAW/M,KAAKgN,GAGhBD,EAAWxf,GAAOyf,CAE1B,GACOD,CACX,EACAJ,EAAKM,UAAY,SAAUI,GACvB,IAAIpS,EAAOtN,OAAOiE,UAAUC,SAASb,KAAKqc,GAAKvb,MAAM,GAAI,GACzD,OAAImJ,IAAS0L,EACFA,GAEP1L,IAAS0L,IACL0G,EAAID,MACJnS,EAAO0L,EAEFgD,GAAAA,SAAe0D,GACpBpS,EAAO0L,EAEF6C,EAAAA,SAAoB6D,GACzBpS,EAAO0L,EAEFqE,EAAAA,SAAiBqC,GACtBpS,EAAO0L,EAEF8E,EAAAA,SAAoB4B,GACzBpS,EAAO0L,EAEFgF,EAAAA,SAAyB0B,GAC9BpS,EAAO0L,EAEFkF,EAAAA,SAAsBwB,KAC3BpS,EAAO0L,IAGR1L,EACX,EACA0R,EAAKW,cAAgB,WAGjB,IAFA,IACIC,EAAS,GACJhQ,EAAI,EAAGA,EAAI,GAAIA,IACpBgQ,GAHQ,yBAGQC,OAAOpK,KAAKS,MAAsB4J,GAAhBrK,KAAKC,WAE3C,OAAOkK,CACX,EACOZ,CACX,CA7GY,GClBD5L,GAiBQ,CACX/Q,KAAM,gBACNiD,QAAS,yBAnBN8N,GA0BG,gCA1BHA,GA6BkB,CACrB/Q,KAAM,0BACNiD,QAAS,qCC/BbT,GAAyC,WACzC,IAAI2U,EAAgB,SAAU7D,EAAG8D,GAI7B,OAHAD,EAAgBxZ,OAAO0Z,gBAClB,CAAEC,UAAW,cAAgBpa,OAAS,SAAUoW,EAAG8D,GAAK9D,EAAEgE,UAAYF,CAAG,GAC1E,SAAU9D,EAAG8D,GAAK,IAAK,IAAIG,KAAKH,EAAOzZ,OAAOiE,UAAU4V,eAAexW,KAAKoW,EAAGG,KAAIjE,EAAEiE,GAAKH,EAAEG,GAAI,EAC7FJ,EAAc7D,EAAG8D,EAC5B,EACA,OAAO,SAAU9D,EAAG8D,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIK,UAAU,uBAAyBzZ,OAAOoZ,GAAK,iCAE7D,SAASM,IAAO/X,KAAKyD,YAAckQ,CAAG,CADtC6D,EAAc7D,EAAG8D,GAEjB9D,EAAE1R,UAAkB,OAANwV,EAAazZ,OAAOga,OAAOP,IAAMM,EAAG9V,UAAYwV,EAAExV,UAAW,IAAI8V,EACnF,CACJ,CAd6C,GAezCtb,GAAsC,WAStC,OARAA,GAAWuB,OAAO+f,QAAU,SAASC,GACjC,IAAK,IAAIzD,EAAG3M,EAAI,EAAGkP,EAAIhO,UAAUzJ,OAAQuI,EAAIkP,EAAGlP,IAE5C,IAAK,IAAIgK,KADT2C,EAAIzL,UAAUlB,GACO5P,OAAOiE,UAAU4V,eAAexW,KAAKkZ,EAAG3C,KACzDoG,EAAEpG,GAAK2C,EAAE3C,IAEjB,OAAOoG,CACX,EACOvhB,GAASgN,MAAMzJ,KAAM8O,UAChC,EAQO,SAASmP,GAAalJ,EAASzB,GAClC,GAAwB,mBAAbA,EAIX,OAAOyB,EAHHA,EAAQ5L,KAAK,SAAUlN,GAAO,OAAOqX,EAAS,EAAGrX,EAAM,EAAG,SAAU2Q,GAAO,OAAO0G,EAAS1G,EAAM,EAIzG,CACA,IAQIsR,GAAS,CAAC,EACP,SAASC,GAAcC,GAC1B,IAAK1a,GAAAA,cACD,MAAM,IAAIwF,MAAM,yDAEpB,IAAImV,EAAMD,EAAG9b,OAAO+b,IAapB,OAZKH,GAAOG,KACRH,GAAOG,GAAO,IAAI3a,GAAAA,cAAiB,CAC/B4a,QAAS,CACLC,UAAW,CACPC,aAAc,IACdC,qBAAsB,IACtBC,wBAAyB,IACzBlb,QAASE,GAAAA,cAAiB0a,EAAG9b,aAKtC4b,GAAOG,EAClB,CACO,IAAIM,GAAa,SAAUC,GAC9B,YAA2Bhf,IAAvBgf,EAAW3b,QACJ,CACHA,QAAS2b,EAAW3b,SAGrB,CAAC,CACZ,EACW4b,GAAkB,SAAUvE,GACnC,IAAKf,EAASe,GACV,OAAOA,EAEX,IAAK,IAAI1c,KAAO0c,OACG1a,IAAX0a,EAAE1c,UACK0c,EAAE1c,GAEJ2b,EAASe,EAAE1c,MAChB0c,EAAE1c,GAAOihB,GAAgBvE,EAAE1c,KAGnC,OAAO0c,CACX,EACWwE,GAAmB,SAAU/gB,GAEpC,OADAA,EAAS8gB,GAAgB9gB,GAClBpB,GAAAA,MAAAA,UAAgBoB,EAAQ,CAAE4B,SAAS,GAC9C,EAIIof,GAAY,SAAUnc,GAEtB,SAASmc,EAAS9P,GACd,IAAIrJ,EAAQhD,EAAOvB,KAAKrB,KAAMiP,EAAM3L,UAAYtD,KAGhD,OAFA4F,EAAMvF,KAAO4O,EAAM5O,KACnBuF,EAAMtC,QAAU2L,EAAM3L,QACfsC,CACX,CACA,OAPA/C,GAAUkc,EAAUnc,GAObmc,CACX,CATgB,CASd7V,OAES8V,GAAI,SAAUC,GACrB,OAAO,IAAIF,GAASE,EACxB,EACO,SAASC,GAAcC,EAAaljB,GACvC,IAAoB,IAAhBkjB,EACA,OAAOljB,EAEX,MAAM+iB,GAAEviB,GAAS,CAAC,EAAGR,GACzB,CCpHA,ICCWmjB,GDDP3iB,GAAsC,WAStC,OARAA,GAAWuB,OAAO+f,QAAU,SAASC,GACjC,IAAK,IAAIzD,EAAG3M,EAAI,EAAGkP,EAAIhO,UAAUzJ,OAAQuI,EAAIkP,EAAGlP,IAE5C,IAAK,IAAIgK,KADT2C,EAAIzL,UAAUlB,GACO5P,OAAOiE,UAAU4V,eAAexW,KAAKkZ,EAAG3C,KACzDoG,EAAEpG,GAAK2C,EAAE3C,IAEjB,OAAOoG,CACX,EACOvhB,GAASgN,MAAMzJ,KAAM8O,UAChC,EAOIuQ,GAAmB,CAAC,QAAS,SAAU,aAAc,QAAS,WAAY,UAAW,OACrFC,GAAY,WACZ,SAASA,IACT,CAiJA,OAhJAA,EAASC,WAAa,SAAUxF,EAAOyF,GACnC,GZNI,WYMAxC,GAAAA,UAAewC,GACf,MAAM,IAAItW,MAAM,iCAEpB,IAAIuW,EAAYhM,KAAKiM,IAAIF,GACzB,GAAc,aAAVzF,GAAwB0F,EAAY,GACpC,MAAM,IAAIvW,MAAM,qDAEf,GAAc,cAAV6Q,GAAyB0F,EAAY,IAC1C,MAAM,IAAIvW,MAAM,wDAEpB,OAAO,CACX,EACAoW,EAASK,UAAY,SAAUC,EAAOC,GAClC,IAAKC,OAAOH,UAAUE,GAClB,MAAM,IAAI3W,MAAM0W,EAAQ/I,EAAAA,eAE5B,OAAO,CACX,EACAyI,EAASS,cAAgB,SAAUH,EAAOI,GACtC,GAAoB,kBAATA,EACP,MAAM,IAAI9W,MAAM0W,EAAQ/I,EAAAA,cAE5B,OAAO,CACX,EACAyI,EAASW,aAAe,SAAUL,EAAO7iB,GACrC,GAAuB,WAAnBuc,EAAQvc,GACR,MAAMiiB,GAAEviB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,GAAGhF,OAAOshB,EAAO,oCAErF,IAAK,IAAIhiB,KAAOb,EAAO,CACnB,IAAImjB,EAAWnjB,EAAMa,GACrB,GAA0B,WAAtB0b,EAAQ4G,IACR,GAAiB,IAAbA,GAA+B,IAAbA,EAClB,MAAMlB,GAAEviB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,qEAGnE,GAA0B,WAAtBgW,EAAQ4G,GAGb,MAAMlB,GAAEviB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,uBAExE,CACA,OAAO,CACX,EACAgc,EAASa,QAAU,SAAUP,EAAO7iB,GAChC,GAAuB,WAAnBuc,EAAQvc,GACR,MAAMiiB,GAAEviB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,GAAGhF,OAAOshB,EAAO,+BAErF,IAAK,IAAIhiB,KAAOb,EAAO,CACnB,IAAImjB,EAAWnjB,EAAMa,GACrB,GAAiB,IAAbsiB,IAAgC,IAAdA,EAClB,MAAMlB,GAAEviB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,gCAExE,CACA,OAAO,CACX,EACAgc,EAASc,aAAe,SAAUC,GAC9B,IAA+C,IAA3CpJ,EAAAA,QAA2BoJ,GAC3B,MAAM,IAAInX,MAAM2N,EAAAA,gBAEpB,OAAO,CACX,EACAyI,EAASgB,YAAc,SAAUC,GAC7B,IAAK,mBAAmB9S,KAAK8S,GACzB,MAAM,IAAIrX,MAEd,OAAO,CACX,EACAoW,EAASkB,WAAa,SAAUC,GAC5B,IAAuC,IAAnCvJ,EAAAA,QAA0BuJ,GAC1B,MAAM,IAAIvX,MAAM2N,EAAAA,YAEpB,OAAO,CACX,EACAyI,EAASoB,WAAa,SAAU5e,GAC5B,IAAK,qCAAqC2L,KAAK3L,GAC3C,MAAM,IAAIoH,MAAM2N,EAAAA,eAEpB,OAAO,CACX,EACAyI,EAASqB,QAAU,SAAUC,GACzB,IAAK,sBAAsBnT,KAAKmT,GAC5B,MAAM,IAAI1X,MAAM2N,EAAAA,YAEpB,OAAO,CACX,EACAyI,EAASuB,eAAiB,SAAUvjB,GAEhC,QADqB,IAAjBA,IAAsBA,EAAU,CAAC,GACZ,WAArBgc,EAAQhc,GACR,MAAM0hB,GAAEviB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,+BAEpE,IAAIoD,EAAO1I,OAAO0I,KAAKpJ,GACvB,IAAK,IAAIoV,KAAShM,EACd,GAAI2Y,GAAiB7S,QAAQ9F,EAAKgM,IAAU,EACxC,MAAMsM,GAAEviB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,GAAGhF,OAAOoI,EAAKgM,GAAQ,8BAG/F,IAAI7V,EAAKS,EAASkC,EAAQ3C,EAAG2C,MAAOF,EAASzC,EAAGyC,OAAQF,EAAavC,EAAGuC,WAAYM,EAAQ7C,EAAG6C,MAC3FohB,EAAWxjB,EAAQwjB,SAmBvB,YAlBclhB,IAAVJ,GACA8f,EAASK,UAAU,QAASngB,QAEjBI,IAAXN,GACAggB,EAASK,UAAU,SAAUrgB,QAEdM,IAAfR,GACAkgB,EAASW,aAAa,aAAc7gB,QAE1BQ,IAAVF,GACA4f,EAASa,QAAQ,QAASzgB,QAEbE,IAAbkhB,GACAxB,EAASS,cAAc,WAAYe,QAEflhB,IAApBtC,EAAQ2F,SACRqc,EAASK,UAAU,UAAWriB,EAAQ2F,UAEnC,CACX,EACAqc,EAASyB,mBAAqB,SAAU9f,GACpC,GAAkC,IAA9BjD,OAAO0I,KAAKzF,GAAOoE,OACnB,MAAM2Z,GAAEviB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,yCAEpE,OAAO,CACX,EACAgc,EAAS0B,eAAiB,SAAUpB,GAChC,GAAIriB,MAAMC,QAAQoiB,IAA2B,IAAjBA,EAAMva,OAAc,CAC5C,GAA0B,WAAtBiU,EAAQsG,EAAM,KACdA,EAAM,GAAGhG,gBAAkBf,GACP,iBAAb+G,EAAM,GACb,OAAO,EAEX,GAAIriB,MAAMC,QAAQoiB,EAAM,KAA2B,IAApBA,EAAM,GAAGva,OAAc,CAClD,IAAI+V,EAAYwE,EAAM,GAAG,GACrBzE,EAAWyE,EAAM,GAAG,GAGxB,GAFAN,EAASC,WAAW,YAAanE,GACjCkE,EAASC,WAAW,WAAYpE,GACR,iBAAbyE,EAAM,GACb,OAAO,CAEf,CACJ,CACA,MAAM,IAAI1W,MAAM,GAAG5K,OAAOuY,EAAAA,mBAC9B,EACOyI,CACX,CApJgB,GEfZtF,GAAS,WACT,SAASA,EAAMoB,EAAWD,GACtBmE,GAAAA,WAAoB,YAAalE,GACjCkE,GAAAA,WAAoB,WAAYnE,GAChCnb,KAAKob,UAAYA,EACjBpb,KAAKmb,SAAWA,CACpB,CAmCA,OAlCAnB,EAAM/X,UAAUrF,MAAQ,SAAUgB,GAC9B,IAAIf,EACJ,OAAOA,EAAK,CAAC,GACNe,GAAO,CACN0N,KAAM,QACN2O,YAAa,CAACja,KAAKob,UAAWpb,KAAKmb,WAEvCte,CACR,EACAmd,EAAM/X,UAAUiY,OAAS,WACrB,MAAO,CACH5O,KAAM,QACN2O,YAAa,CACTja,KAAKob,UACLpb,KAAKmb,UAGjB,EACAnB,EAAM/X,UAAUsZ,iBAAmB,WAC/B,MAAO,IAAIjd,OAAO0B,KAAKob,UAAW,KAAK9c,OAAO0B,KAAKmb,SAAU,IACjE,EACAnB,EAAMG,SAAW,SAAUJ,GACvB,MAAsB,UAAfA,EAAMzO,MACT9N,EAAQuc,EAAME,cACdqF,GAAAA,WAAoB,YAAavF,EAAME,YAAY,KACnDqF,GAAAA,WAAoB,WAAYvF,EAAME,YAAY,GAC1D,EACAjc,OAAOsT,eAAe0I,EAAM/X,UAAW,gBAAiB,CACpD8D,IAAK,WACD,OAAO8S,CACX,EACA1D,YAAY,EACZE,cAAc,IAEX2E,CACX,CA1Ca,IDDb,SAAWoF,GACPA,EAA6B,IAAI,MACjCA,EAAgC,OAAI,SACpCA,EAA6B,IAAI,MACjCA,EAA6B,IAAI,MACjCA,EAA8B,KAAI,OAClCA,EAA8B,KAAI,OAClCA,EAAkC,SAAI,UACtCA,EAA6B,IAAI,MACjCA,EAA+B,MAAI,QACnCA,EAAiC,QAAI,UACrCA,EAAoC,WAAI,WACxCA,EAA6B,IAAI,MACjCA,EAAgC,OAAI,SACpCA,EAA6B,IAAI,MACjCA,EAA6B,IAAI,KACpC,CAhBD,CAgBGA,KAA4BA,GAA0B,CAAC,IAC1D,IEbW6B,GFaPC,GAAiB,WACjB,SAASA,EAAcC,EAAUC,EAAUC,GACvCrhB,KAAK4Z,cAAgBlB,EACrB1a,OAAOwa,iBAAiBxY,KAAM,CAC1B4Z,cAAe,CACXzE,YAAY,EACZE,cAAc,KAGtBrV,KAAKmhB,SAAWA,EAChBnhB,KAAKohB,SAAWA,EAChBphB,KAAKqhB,UAAYA,GAAa5I,CAClC,CAKA,OAJAyI,EAAcjf,UAAUqf,cAAgB,SAAUD,GAE9C,OADc,IAAIH,EAAclhB,KAAKmhB,SAAUnhB,KAAKohB,SAAUC,EAElE,EACOH,CACX,CAlBqB,GAoBd,SAASK,GAAgBC,GAC5B,OAAOA,GAAWA,aAAkBN,IAAmBM,EAAO5H,gBAAkBlB,CACpF,EElCA,SAAWuI,GACPA,EAA4B,IAAI,MAChCA,EAA2B,GAAI,KAC/BA,EAA4B,IAAI,MAChCA,EAA4B,IAAI,KACnC,CALD,CAKGA,KAA2BA,GAAyB,CAAC,IACxD,IAAIQ,GAAgB,WAChB,SAASA,EAAaN,EAAUC,EAAUC,GAWtC,GAVArhB,KAAK4Z,cAAgBhB,EACrB5a,OAAOwa,iBAAiBxY,KAAM,CAC1B4Z,cAAe,CACXzE,YAAY,EACZE,cAAc,KAGtBrV,KAAKmhB,SAAWA,EAChBnhB,KAAKohB,SAAWA,EAChBphB,KAAKqhB,UAAYA,GAAa5I,EAC1BzY,KAAKqhB,YAAc5I,EACnB,GAAIlb,MAAMC,QAAQ4jB,GAAW,CACzBA,EAAWA,EAASjf,QACpBnC,KAAKohB,SAAWA,EAChB,IAAK,IAAIxT,EAAI,EAAG0K,EAAM8I,EAAS/b,OAAQuI,EAAI0K,EAAK1K,KAExC8T,GADA1iB,EAAQoiB,EAASxT,KACQ+T,GAAe3iB,MACxCoiB,EAASxT,GAAK5O,EAAMsiB,cAActhB,KAAKqhB,WAGnD,KACK,CACD,IAAIriB,GACA0iB,GADA1iB,EAAQoiB,IACiBO,GAAe3iB,MACxCoiB,EAAWpiB,EAAMsiB,cAActhB,KAAKqhB,WAE5C,CAER,CA+BA,OA9BAI,EAAaxf,UAAUqf,cAAgB,SAAUD,GAC7C,IAAID,EAAWphB,KAAKohB,SAAS3jB,IAAI,SAAUmkB,GACvC,OAAIA,aAAmBH,EACZG,EAAQN,cAAcD,GAGtBO,CAEf,GAEA,OADc,IAAIH,EAAazhB,KAAKmhB,SAAUC,EAAUC,EAE5D,EACAI,EAAaxf,UAAU4f,IAAM,WAEzB,IADA,IAAIC,EAAkB,GACb3c,EAAK,EAAGA,EAAK2J,UAAUzJ,OAAQF,IACpC2c,EAAgB3c,GAAM2J,UAAU3J,GAEpC,IAAI4c,EAAcxkB,MAAMC,QAAQsR,UAAU,IAAMA,UAAU,GAAKvR,MAAMykB,KAAKlT,WAE1E,OADAiT,EAAYlU,QAAQ7N,MACb,IAAIyhB,EAAaR,GAAuBgB,IAAKF,EAAa/hB,KAAKqhB,UAC1E,EACAI,EAAaxf,UAAUigB,GAAK,WAExB,IADA,IAAIJ,EAAkB,GACb3c,EAAK,EAAGA,EAAK2J,UAAUzJ,OAAQF,IACpC2c,EAAgB3c,GAAM2J,UAAU3J,GAEpC,IAAI4c,EAAcxkB,MAAMC,QAAQsR,UAAU,IAAMA,UAAU,GAAKvR,MAAMykB,KAAKlT,WAE1E,OADAiT,EAAYlU,QAAQ7N,MACb,IAAIyhB,EAAaR,GAAuBkB,GAAIJ,EAAa/hB,KAAKqhB,UACzE,EACOI,CACX,CA9DoB,GAgEb,SAASC,GAAeF,GAC3B,OAAOA,GAAWA,aAAkBC,IAAkBD,EAAO5H,gBAAkBhB,CACnF,CAIA,IClDWwJ,GAjCPvf,GAAyC,WACzC,IAAI2U,EAAgB,SAAU7D,EAAG8D,GAI7B,OAHAD,EAAgBxZ,OAAO0Z,gBAClB,CAAEC,UAAW,cAAgBpa,OAAS,SAAUoW,EAAG8D,GAAK9D,EAAEgE,UAAYF,CAAG,GAC1E,SAAU9D,EAAG8D,GAAK,IAAK,IAAIG,KAAKH,EAAOzZ,OAAOiE,UAAU4V,eAAexW,KAAKoW,EAAGG,KAAIjE,EAAEiE,GAAKH,EAAEG,GAAI,EAC7FJ,EAAc7D,EAAG8D,EAC5B,EACA,OAAO,SAAU9D,EAAG8D,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIK,UAAU,uBAAyBzZ,OAAOoZ,GAAK,iCAE7D,SAASM,IAAO/X,KAAKyD,YAAckQ,CAAG,CADtC6D,EAAc7D,EAAG8D,GAEjB9D,EAAE1R,UAAkB,OAANwV,EAAazZ,OAAOga,OAAOP,IAAMM,EAAG9V,UAAYwV,EAAExV,UAAW,IAAI8V,EACnF,CACJ,CAd6C,IAkC7C,SAAWqK,GACPA,EAA2B,GAAI,KAC/BA,EAA4B,IAAI,MAChCA,EAA2B,GAAI,KAC/BA,EAA4B,IAAI,MAChCA,EAA2B,GAAI,KAC/BA,EAA4B,IAAI,MAChCA,EAA2B,GAAI,KAC/BA,EAA4B,IAAI,MAChCA,EAA4B,IAAI,MAChCA,EAAmC,WAAI,YACvCA,EAA+B,OAAI,SACnCA,EAA6B,KAAI,OACjCA,EAA4B,IAAI,MAChCA,EAAiC,SAAI,UACrCA,EAAmC,WAAI,YACvCA,EAAuC,eAAI,eAC9C,CAjBD,CAiBGA,KAA2BA,GAAyB,CAAC,IACxD,IAAIC,GAAgB,SAAUzf,GAE1B,SAASyf,EAAalB,EAAUC,EAAUC,GACtC,IAAIzb,EAAQhD,EAAOvB,KAAKrB,KAAMmhB,EAAUC,EAAUC,IAAcrhB,KAGhE,OAFA4F,EAAMub,SAAWA,EACjBvb,EAAMgU,cAAgBjB,EACf/S,CACX,CAyFA,OA/FA/C,GAAUwf,EAAczf,GAOxByf,EAAapgB,UAAUiY,OAAS,WAC5B,IAAIrd,EAAIkC,EAAIQ,EACZ,OAAQS,KAAKmhB,UACT,KAAKiB,GAAuBE,GAC5B,KAAKF,GAAuBG,IACxB,OAAO1lB,EAAK,CAAC,GACN,IAAMmD,KAAKmhB,UAAYnhB,KAAKohB,SAC/BvkB,EACR,KAAKulB,GAAuBI,IACxB,OAAOzjB,EAAK,CAAC,GACD,IAAIiB,KAAKohB,SAAS,GAC1BriB,EACR,QACI,OAAOQ,EAAK,CAAC,GACN,IAAMS,KAAKmhB,UAAYnhB,KAAKohB,SAAS,GACxC7hB,EAEhB,EACA8iB,EAAapgB,UAAUqf,cAAgB,SAAUD,GAE7C,OADc,IAAIgB,EAAariB,KAAKmhB,SAAUnhB,KAAKohB,SAAUC,EAEjE,EACAgB,EAAapgB,UAAUkV,GAAK,SAAU1F,GAClC,IAAIgR,EAAU,IAAIJ,EAAaD,GAAuBM,GAAI,CAACjR,GAAMzR,KAAKqhB,WACtE,OAAOrhB,KAAK6hB,IAAIY,EACpB,EACAJ,EAAapgB,UAAU0gB,IAAM,SAAUlR,GACnC,IAAIgR,EAAU,IAAIJ,EAAaD,GAAuBI,IAAK,CAAC/Q,GAAMzR,KAAKqhB,WACvE,OAAOrhB,KAAK6hB,IAAIY,EACpB,EACAJ,EAAapgB,UAAUqV,GAAK,SAAU7F,GAClC,IAAIgR,EAAU,IAAIJ,EAAaD,GAAuBQ,GAAI,CAACnR,GAAMzR,KAAKqhB,WACtE,OAAOrhB,KAAK6hB,IAAIY,EACpB,EACAJ,EAAapgB,UAAUsV,IAAM,SAAU9F,GACnC,IAAIgR,EAAU,IAAIJ,EAAaD,GAAuBS,IAAK,CAACpR,GAAMzR,KAAKqhB,WACvE,OAAOrhB,KAAK6hB,IAAIY,EACpB,EACAJ,EAAapgB,UAAUmV,GAAK,SAAU3F,GAClC,IAAIgR,EAAU,IAAIJ,EAAaD,GAAuBU,GAAI,CAACrR,GAAMzR,KAAKqhB,WACtE,OAAOrhB,KAAK6hB,IAAIY,EACpB,EACAJ,EAAapgB,UAAUoV,IAAM,SAAU5F,GACnC,IAAIgR,EAAU,IAAIJ,EAAaD,GAAuBW,IAAK,CAACtR,GAAMzR,KAAKqhB,WACvE,OAAOrhB,KAAK6hB,IAAIY,EACpB,EACAJ,EAAapgB,UAAU+gB,GAAK,SAAUxiB,GAClC,IAAIiiB,EAAU,IAAIJ,EAAaD,GAAuBE,GAAI9hB,EAAMR,KAAKqhB,WACrE,OAAOrhB,KAAK6hB,IAAIY,EACpB,EACAJ,EAAapgB,UAAUghB,IAAM,SAAUziB,GACnC,IAAIiiB,EAAU,IAAIJ,EAAaD,GAAuBG,IAAK/hB,EAAMR,KAAKqhB,WACtE,OAAOrhB,KAAK6hB,IAAIY,EACpB,EACAJ,EAAapgB,UAAUihB,QAAU,SAAUzR,GACvC,KAAMA,EAAI0R,oBAAoBnJ,IAC1B,MAAM,IAAIlC,UAAU,mDAAqDxZ,cAAcmT,EAAI0R,WAE/F,QAAwBvjB,IAApB6R,EAAI2R,cAA8B5J,EAAS/H,EAAI2R,aAC/C,MAAM,IAAItL,UAAU,uDAAyDxZ,cAAcmT,EAAI2R,cAEnG,QAAwBxjB,IAApB6R,EAAI4R,cAA8B7J,EAAS/H,EAAI4R,aAC/C,MAAM,IAAIvL,UAAU,uDAAyDxZ,cAAcmT,EAAI4R,cAEnG,IAAIZ,EAAU,IAAIJ,EAAaD,GAAuBkB,SAAU,CAAC7R,GAAMzR,KAAKqhB,WAC5E,OAAOrhB,KAAK6hB,IAAIY,EACpB,EACAJ,EAAapgB,UAAUshB,UAAY,SAAU9R,GACzC,KAAMA,EAAI0R,oBAAoBjH,GACxBzK,EAAI0R,oBAAoB9H,GACzBiE,GAAAA,eAAwB7N,EAAI+R,eAC7B,MAAM,IAAI1L,UAAU,qEAAuExZ,cAAcmT,EAAI0R,WAEjH,IAAIV,EAAU,IAAIJ,EAAaD,GAAuBqB,WAAY,CAAChS,GAAMzR,KAAKqhB,WAC9E,OAAOrhB,KAAK6hB,IAAIY,EACpB,EACAJ,EAAapgB,UAAUyhB,cAAgB,SAAUjS,GAC7C,KAAMA,EAAI0R,oBAAoBnJ,IACxBvI,EAAI0R,oBAAoBtJ,GACxBpI,EAAI0R,oBAAoB9H,GACxB5J,EAAI0R,oBAAoBrH,GACxBrK,EAAI0R,oBAAoBnH,GACxBvK,EAAI0R,oBAAoBjH,GAC1B,MAAM,IAAIpE,UAAU,qHAAuHxZ,cAAcmT,EAAI0R,WAEjK,IAAIV,EAAU,IAAIJ,EAAaD,GAAuBuB,eAAgB,CAAClS,GAAMzR,KAAKqhB,WAClF,OAAOrhB,KAAK6hB,IAAIY,EACpB,EACOJ,CACX,CAjGoB,CAiGlBZ,IAEK,SAASE,GAAeH,GAC3B,OAAOA,GAAUA,aAAkBa,IAAgBb,EAAO5H,gBAAkBjB,CAChF,CAIO,SAASiL,GAAoBpC,GAChC,OAAOG,GAAeH,EAC1B,CACA,IC7JWqC,GAAc,CAAC,EAC1B,IAAK,IAAIjmB,MAAOwkB,GACZyB,GAAYjmB,IAAO,IAAMA,GAE7B,IAAK,IAAIA,MAAOqjB,GACZ4C,GAAYjmB,IAAO,IAAMA,GAE7B,IAAK,IAAIA,MAAOwhB,GACZyE,GAAYjmB,IAAO,IAAMA,GAMtB,SAASkmB,GAAiB3C,GAC7B,OAAO0C,GAAY1C,IAAa,IAAMA,CAC1C,CANA0C,GAAYzB,GAAAA,KAA8B,MAC1CyB,GAAYzE,GAAAA,QAAkC,SAC9CyE,GAAYzE,GAAAA,OAAiC,OAC7CyE,GAAYzE,GAAAA,SAAmC,QChB/C,IAAI3iB,GAAsC,WAStC,OARAA,GAAWuB,OAAO+f,QAAU,SAASC,GACjC,IAAK,IAAIzD,EAAG3M,EAAI,EAAGkP,EAAIhO,UAAUzJ,OAAQuI,EAAIkP,EAAGlP,IAE5C,IAAK,IAAIgK,KADT2C,EAAIzL,UAAUlB,GACO5P,OAAOiE,UAAU4V,eAAexW,KAAKkZ,EAAG3C,KACzDoG,EAAEpG,GAAK2C,EAAE3C,IAEjB,OAAOoG,CACX,EACOvhB,GAASgN,MAAMzJ,KAAM8O,UAChC,EACI+N,GAAkC,SAAUvC,EAAGwC,GAC/C,IAAIpC,EAAsB,mBAAXF,QAAyBF,EAAEE,OAAOC,UACjD,IAAKC,EAAG,OAAOJ,EACf,IAAmBrG,EAAY1P,EAA3BqJ,EAAI8M,EAAErZ,KAAKiZ,GAAOyC,EAAK,GAC3B,IACI,WAAmB,IAAXD,GAAgBA,KAAM,MAAQ7I,EAAIrG,EAAE+M,QAAQC,MAAMmC,EAAG1M,KAAK4D,EAAElX,MACxE,CACA,MAAOkS,GAAS1K,EAAI,CAAE0K,MAAOA,EAAS,CAAC,QAEnC,IACQgF,IAAMA,EAAE2G,OAASF,EAAI9M,EAAU,SAAI8M,EAAErZ,KAAKuM,EAClD,CAAC,QACS,GAAIrJ,EAAG,MAAMA,EAAE0K,KAAO,CACpC,CACA,OAAO8N,CACX,EACI3J,GAAgD,SAAU2Q,EAAI/B,EAAMgC,GACpE,GAAIA,GAA6B,IAArBlV,UAAUzJ,OAAc,IAAK,IAA4B0X,EAAxBnP,EAAI,EAAGqW,EAAIjC,EAAK3c,OAAYuI,EAAIqW,EAAGrW,KACxEmP,GAAQnP,KAAKoU,IACRjF,IAAIA,EAAKxf,MAAM0E,UAAUE,MAAMd,KAAK2gB,EAAM,EAAGpU,IAClDmP,EAAGnP,GAAKoU,EAAKpU,IAGrB,OAAOmW,EAAGzlB,OAAOye,GAAMxf,MAAM0E,UAAUE,MAAMd,KAAK2gB,GACtD,EAKO,SAAS5gB,GAAUqQ,GACtB,OAAOyS,GAAgBzS,EAAK,CAACA,GACjC,CACA,SAASyS,GAAgBzS,EAAK0S,GAC1B,IAAIxK,EAAiBlI,GAmBhB,IAAIgI,EAAOhI,GACZ,OAAOA,EAEN,GAAIiI,EAASjI,GACd,MAAO,CACHvU,mBAAoB,CAChBE,QAASqU,EAAI2S,OACb9mB,QAASmU,EAAI4S,QAIpB,GAAI7mB,EAAQiU,GACb,OAAOA,EAAIhU,IAAI,SAAUC,GACrB,GAAIymB,EAAQ3X,QAAQ9O,IAAS,EACzB,MAAM,IAAIwL,MAAM,6CAEpB,OAAOgb,GAAgBxmB,EAAM0V,GAAcA,GAAc,GAAIyJ,GAAOsH,IAAU,GAAQ,CAACzmB,IAAO,GAClG,GAEC,GAAI6b,EAAS9H,GAAM,CACpB,IAAI6S,EAAS7nB,GAAS,CAAC,EAAGgV,GACtB8S,EAAW,CAAC,EAChB,IAAK,IAAI3mB,KAAO0mB,EAAQ,CACpB,GAAIH,EAAQ3X,QAAQ8X,EAAO1mB,KAAS,EAChC,MAAM,IAAIsL,MAAM,kDAEAtJ,IAAhB0kB,EAAO1mB,KACP2mB,EAAS3mB,GAAOsmB,GAAgBI,EAAO1mB,GAAMwV,GAAcA,GAAc,GAAIyJ,GAAOsH,IAAU,GAAQ,CAACG,EAAO1mB,KAAO,IAE7H,CACA,OAAO2mB,CACX,CAEI,OAAO9S,CACX,CApDI,OAAQA,EAAImI,eACR,KAAKf,EACD,OAAOpH,EAAIyI,SAEf,KAAKf,EAGL,KAAKC,EAGL,KAAKC,EACD,OAAO5H,EAAI7U,QAEf,QACI,OAAO6U,EAAIyI,OAASzI,EAAIyI,SAAWzI,EAuCnD,CClGA,IAAIhV,GAAsC,WAStC,OARAA,GAAWuB,OAAO+f,QAAU,SAASC,GACjC,IAAK,IAAIzD,EAAG3M,EAAI,EAAGkP,EAAIhO,UAAUzJ,OAAQuI,EAAIkP,EAAGlP,IAE5C,IAAK,IAAIgK,KADT2C,EAAIzL,UAAUlB,GACO5P,OAAOiE,UAAU4V,eAAexW,KAAKkZ,EAAG3C,KACzDoG,EAAEpG,GAAK2C,EAAE3C,IAEjB,OAAOoG,CACX,EACOvhB,GAASgN,MAAMzJ,KAAM8O,UAChC,EACI+N,GAAkC,SAAUvC,EAAGwC,GAC/C,IAAIpC,EAAsB,mBAAXF,QAAyBF,EAAEE,OAAOC,UACjD,IAAKC,EAAG,OAAOJ,EACf,IAAmBrG,EAAY1P,EAA3BqJ,EAAI8M,EAAErZ,KAAKiZ,GAAOyC,EAAK,GAC3B,IACI,WAAmB,IAAXD,GAAgBA,KAAM,MAAQ7I,EAAIrG,EAAE+M,QAAQC,MAAMmC,EAAG1M,KAAK4D,EAAElX,MACxE,CACA,MAAOkS,GAAS1K,EAAI,CAAE0K,MAAOA,EAAS,CAAC,QAEnC,IACQgF,IAAMA,EAAE2G,OAASF,EAAI9M,EAAU,SAAI8M,EAAErZ,KAAKuM,EAClD,CAAC,QACS,GAAIrJ,EAAG,MAAMA,EAAE0K,KAAO,CACpC,CACA,OAAO8N,CACX,EACI3J,GAAgD,SAAU2Q,EAAI/B,EAAMgC,GACpE,GAAIA,GAA6B,IAArBlV,UAAUzJ,OAAc,IAAK,IAA4B0X,EAAxBnP,EAAI,EAAGqW,EAAIjC,EAAK3c,OAAYuI,EAAIqW,EAAGrW,KACxEmP,GAAQnP,KAAKoU,IACRjF,IAAIA,EAAKxf,MAAM0E,UAAUE,MAAMd,KAAK2gB,EAAM,EAAGpU,IAClDmP,EAAGnP,GAAKoU,EAAKpU,IAGrB,OAAOmW,EAAGzlB,OAAOye,GAAMxf,MAAM0E,UAAUE,MAAMd,KAAK2gB,GACtD,EAGA,SAASwC,GAAQxlB,EAAOylB,EAAuBC,EAASP,GACpD,IAAIQ,EAASloB,GAAS,CAAC,EAAGuC,GAC1B,IAAK,IAAIpB,KAAOoB,EACZ,IAAI,MAAMyO,KAAK7P,GAAf,CAEA,IAAIb,EAAQiC,EAAMpB,GAClB,QAAcgC,IAAV7C,GAIJ,GAAKA,GAEDwc,EAASxc,KAAW0nB,EAAsB1nB,GAAQ,CAClD,GAAIonB,EAAQ3X,QAAQzP,IAAU,EAC1B,MAAM,IAAImM,MAAM,6CAEpB,IAEI0b,EAAiBJ,GAAQznB,EAAO0nB,EAFnBrR,GAAcA,GAAc,GAAIyJ,GAAO6H,IAAU,GAAQ,CAAC9mB,IAAM,GAChEwV,GAAcA,GAAc,GAAIyJ,GAAOsH,IAAU,GAAQ,CAACpnB,IAAQ,IAEnF4nB,EAAO/mB,GAAOgnB,EACd,IAAIC,GAAoB,EACxB,IAAK,IAAIC,KAAYF,EACZ,MAAMnX,KAAKqX,GAKZD,GAAoB,GAJpBF,EAAO,GAAGrmB,OAAOV,EAAK,KAAKU,OAAOwmB,IAAaF,EAAeE,UACvDH,EAAO/mB,GAAKknB,IAMtBD,UACMF,EAAO/mB,EAEtB,cA1BW+mB,EAAO/mB,EAHd,CA+BR,OAAO+mB,CACX,CACO,SAASI,GAAmB/lB,GAC/B,OAAOwlB,GAAQxlB,EAAOgmB,GAAsB,GAAI,CAAChmB,GACrD,CAIO,SAASimB,GAA0BjmB,EAAOkmB,EAAWtnB,GAIxD,IAAK,IAAIunB,KAHJD,EAAUtnB,WACJoB,EAAMpB,GAEQsnB,EACjBlmB,EAAMmmB,GACF3nB,EAAQwB,EAAMmmB,IACdnmB,EAAMmmB,GAAc9U,KAAK6U,EAAUC,IAE9B5L,EAASva,EAAMmmB,IAChB5L,EAAS2L,EAAUC,IACnBnnB,OAAO+f,OAAO/e,EAAMmmB,GAAeD,EAAUC,KAG7CzgB,QAAQC,KAAK,0DAA0DrG,OAAOgb,EAAQ4L,GAAY,wBAAyBA,EAAWtnB,GACtIoB,EAAMmmB,GAAgBD,EAAUC,KAIpCzgB,QAAQC,KAAK,6BAA6BrG,OAAOgb,EAAQta,GAAQ,wBAAyBA,EAAOkmB,EAAWtnB,GAC5GoB,EAAMmmB,GAAgBD,EAAUC,IAIpCnmB,EAAMmmB,GAAgBD,EAAUC,EAG5C,CACO,SAASH,GAAqBvT,GACjC,OAAOkI,EAAiBlI,IAAQgI,EAAOhI,IAAQiI,EAASjI,EAC5D,CACO,SAAS2T,GAAuB3T,GACnC,OAAO4T,GAA0B5T,EACrC,CC5GA,IAAI6T,GAAoB,WACpB,SAASA,IACT,CAqIA,OApIAA,EAAiBC,OAAS,SAAUvmB,GAEhC,OADkB,IAAIsmB,GACHE,aAAaxmB,EACpC,EACAsmB,EAAiBG,YAAc,SAAUzmB,EAAO0mB,GAC5C,IAAIC,EAAc,IAAIL,EACtB,OAAOxG,GAAiB4G,EAAM1mB,EAAQ2mB,EAAYH,aAAaxmB,GACnE,EACAsmB,EAAiBrjB,UAAUujB,aAAe,SAAUxmB,GAChD,OAAIuiB,GAAgBviB,GACTgB,KAAK4lB,oBAAoB5mB,GAER,WAAnBsa,EAAQta,GACNgB,KAAK6lB,mBAAmB7mB,GAGxBA,CAEf,EACAsmB,EAAiBrjB,UAAU2jB,oBAAsB,SAAU5mB,GACvD,GAAIA,EAAMqiB,YAAc5I,EACpB,MAAM,IAAIvP,MAAM,4DAEpB,OAAQlK,EAAMmiB,UACV,KAAK/B,GAAAA,KACL,KAAKA,GAAAA,KACL,KAAKA,GAAAA,SACL,KAAKA,GAAAA,IACL,KAAKA,GAAAA,MACL,KAAKA,GAAAA,QACL,KAAKA,GAAAA,WACD,OAAOpf,KAAK8lB,yBAAyB9mB,GAEzC,QACI,OAAOgB,KAAK+lB,yBAAyB/mB,GAGjD,EACAsmB,EAAiBrjB,UAAU8jB,yBAA2B,SAAU/mB,GAC5D,IAAInC,EAAIkC,EAAIQ,EAAIE,EACZumB,EAAMlC,GAAiB9kB,EAAMmiB,UACjC,OAAQniB,EAAMmiB,WACL/B,GAAAA,SACMviB,EAAK,CAAC,GACNmpB,KAAQjnB,EAAK,CAAC,GACVC,EAAMqiB,WAAa,GACtBtiB,GACJlC,KAGG0C,EAAK,CAAC,GACNymB,KAAQvmB,EAAK,CAAC,GACVT,EAAMqiB,WAAariB,EAAMoiB,SAAS,GACrC3hB,GACJF,EAGhB,EACA+lB,EAAiBrjB,UAAU6jB,yBAA2B,SAAU9mB,GAC5D,IAAInC,EAAIkC,EAAIQ,EAAIE,EAAIM,EAAIO,EAAIC,EAAIJ,EAAI8lB,EAAIC,EACpCF,EAAMlC,GAAiB9kB,EAAMmiB,UACjC,OAAQniB,EAAMmiB,UACV,KAAK/B,GAAAA,KACD,IAAI+G,OAAiB,EASrB,OAPIA,EADA3oB,EAAQwB,EAAMoiB,UACF,CACRgF,MAAOpnB,EAAMoiB,SAAS3jB,IAAI2nB,KAIlBpmB,EAAMoiB,UAEfvkB,EAAK,CAAC,GACNmpB,KAAQjnB,EAAK,CAAC,GACVC,EAAMqiB,WAAa8E,EACtBpnB,GACJlC,EAER,KAAKuiB,GAAAA,QAKD,OAJI+G,EAAY,CACZC,MAAOpnB,EAAMoiB,SAAS3jB,IAAI2nB,IAC1BiB,UAAW,IAER9mB,EAAK,CAAC,GACNymB,KAAQvmB,EAAK,CAAC,GACVT,EAAMqiB,WAAa8E,EACtB1mB,GACJF,EAER,KAAK6f,GAAAA,IACD,OAAOrf,EAAK,CAAC,GACNimB,KAAQ1lB,EAAK,CAAC,GACVtB,EAAMqiB,WAAa,EACtB/gB,GACJP,EAER,KAAKqf,GAAAA,MACD,OAAO7e,EAAK,CAAC,GACNylB,KAAQ7lB,EAAK,CAAC,GACVnB,EAAMqiB,YAAc,EACvBlhB,GACJI,EAER,QACI,OAAO0lB,EAAK,CAAC,GACND,KAAQE,EAAK,CAAC,GACVlnB,EAAMqiB,WAAa+D,GAAuBpmB,EAAMoiB,UACnD8E,GACJD,EAGhB,EACAX,EAAiBrjB,UAAU4jB,mBAAqB,SAAU7mB,GACtD,IAAIsnB,EAAYvB,GAAmB/lB,GACnC,IAAK,IAAIpB,KAAO0oB,EACZ,IAAI,MAAM7Y,KAAK7P,GAAf,CAEA,IAAI6T,EAAM6U,EAAU1oB,GACpB,GAAI2jB,GAAgB9P,GAChB6U,EAAU1oB,GAAO6T,EAAI6P,cAAc1jB,GAEnCqnB,GAA0BqB,EADVtmB,KAAK4lB,oBAAoBU,EAAU1oB,IACHA,OAE/C,CACD0oB,EAAU1oB,GAAO6T,EAAM2T,GAAuB3T,GAC9C,IAAI8U,EAAc,IAAIrF,GAAc9B,GAAAA,IAA6B,CAAC3N,GAAM7T,GAExEqnB,GAA0BqB,EADVtmB,KAAK4lB,oBAAoBW,GACO3oB,EACpD,CAZI,CAcR,OAAO0oB,CACX,EACOhB,CACX,CAxIwB,GCNpB7oB,GAAsC,WAStC,OARAA,GAAWuB,OAAO+f,QAAU,SAASC,GACjC,IAAK,IAAIzD,EAAG3M,EAAI,EAAGkP,EAAIhO,UAAUzJ,OAAQuI,EAAIkP,EAAGlP,IAE5C,IAAK,IAAIgK,KADT2C,EAAIzL,UAAUlB,GACO5P,OAAOiE,UAAU4V,eAAexW,KAAKkZ,EAAG3C,KACzDoG,EAAEpG,GAAK2C,EAAE3C,IAEjB,OAAOoG,CACX,EACOvhB,GAASgN,MAAMzJ,KAAM8O,UAChC,EACIzF,GAAwC,SAAUmd,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAI7nB,UAAU,SAAUsJ,EAASoB,GAC/C,SAASqd,EAAU7pB,GAAS,IAAM8pB,EAAKF,EAAUhM,KAAK5d,GAAS,CAAE,MAAOwH,GAAKgF,EAAOhF,EAAI,CAAE,CAC1F,SAASuiB,EAAS/pB,GAAS,IAAM8pB,EAAKF,EAAiB,MAAE5pB,GAAS,CAAE,MAAOwH,GAAKgF,EAAOhF,EAAI,CAAE,CAC7F,SAASsiB,EAAKrqB,GAJlB,IAAeO,EAIaP,EAAOoe,KAAOzS,EAAQ3L,EAAOO,QAJ1CA,EAIyDP,EAAOO,MAJhDA,aAAiB2pB,EAAI3pB,EAAQ,IAAI2pB,EAAE,SAAUve,GAAWA,EAAQpL,EAAQ,IAIjBoM,KAAKyd,EAAWE,EAAW,CAC7GD,GAAMF,EAAYA,EAAUld,MAAM+c,EAASC,GAAc,KAAK9L,OAClE,EACJ,EACIoM,GAA4C,SAAUP,EAAS3f,GAC/D,IAAsGuJ,EAAG4W,EAAGhJ,EAAGiJ,EAA3GvR,EAAI,CAAEwR,MAAO,EAAG9mB,KAAM,WAAa,GAAW,EAAP4d,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGmJ,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEtM,KAAM0M,EAAK,GAAI7R,MAAS6R,EAAK,GAAItM,OAAUsM,EAAK,IAAwB,mBAAX7M,SAA0ByM,EAAEzM,OAAOC,UAAY,WAAa,OAAOza,IAAM,GAAIinB,EACvJ,SAASI,EAAKvK,GAAK,OAAO,SAAUnP,GAAK,OACzC,SAAc8S,GACV,GAAIrQ,EAAG,MAAM,IAAI0H,UAAU,mCAC3B,KAAOmP,IAAMA,EAAI,EAAGxG,EAAG,KAAO/K,EAAI,IAAKA,OACnC,GAAItF,EAAI,EAAG4W,IAAMhJ,EAAY,EAARyC,EAAG,GAASuG,EAAU,OAAIvG,EAAG,GAAKuG,EAAS,SAAOhJ,EAAIgJ,EAAU,SAAMhJ,EAAE3c,KAAK2lB,GAAI,GAAKA,EAAErM,SAAWqD,EAAIA,EAAE3c,KAAK2lB,EAAGvG,EAAG,KAAK7F,KAAM,OAAOoD,EAE3J,OADIgJ,EAAI,EAAGhJ,IAAGyC,EAAK,CAAS,EAARA,EAAG,GAAQzC,EAAEjhB,QACzB0jB,EAAG,IACP,KAAK,EAAG,KAAK,EAAGzC,EAAIyC,EAAI,MACxB,KAAK,EAAc,OAAX/K,EAAEwR,QAAgB,CAAEnqB,MAAO0jB,EAAG,GAAI7F,MAAM,GAChD,KAAK,EAAGlF,EAAEwR,QAASF,EAAIvG,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/K,EAAE0R,IAAI7f,MAAOmO,EAAEyR,KAAK5f,MAAO,SACxC,QACI,MAAkByW,GAAZA,EAAItI,EAAEyR,MAAY9hB,OAAS,GAAK2Y,EAAEA,EAAE3Y,OAAS,KAAkB,IAAVob,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/K,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAV+K,EAAG,MAAczC,GAAMyC,EAAG,GAAKzC,EAAE,IAAMyC,EAAG,GAAKzC,EAAE,IAAM,CAAEtI,EAAEwR,MAAQzG,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAY/K,EAAEwR,MAAQlJ,EAAE,GAAI,CAAEtI,EAAEwR,MAAQlJ,EAAE,GAAIA,EAAIyC,EAAI,KAAO,CACpE,GAAIzC,GAAKtI,EAAEwR,MAAQlJ,EAAE,GAAI,CAAEtI,EAAEwR,MAAQlJ,EAAE,GAAItI,EAAE0R,IAAI/W,KAAKoQ,GAAK,KAAO,CAC9DzC,EAAE,IAAItI,EAAE0R,IAAI7f,MAChBmO,EAAEyR,KAAK5f,MAAO,SAEtBkZ,EAAK5Z,EAAKxF,KAAKmlB,EAAS9Q,EAC5B,CAAE,MAAOnR,GAAKkc,EAAK,CAAC,EAAGlc,GAAIyiB,EAAI,CAAG,CAAC,QAAW5W,EAAI4N,EAAI,CAAG,CACzD,GAAY,EAARyC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE1jB,MAAO0jB,EAAG,GAAKA,EAAG,QAAU,EAAG7F,MAAM,EAC9E,CAtBgDiM,CAAK,CAAC/J,EAAGnP,GAAK,CAAG,CAuBrE,EAUI2Z,GAAqB,WACrB,SAASA,EAAkBlJ,EAAImJ,EAAM3I,EAAY4I,EAAOnoB,GACpD,IAAIuG,EAAQ5F,KACZA,KAAKynB,MAAQ,SAAUnqB,GAEnB,OADS6gB,GAAcvY,EAAM8hB,KACnBD,MAAMhrB,GAASA,GAAS,CAAC,EAAGa,GAAU,CAAEqqB,MAAO/hB,EAAM8hB,IAAIplB,OAAO+b,IAAKve,eAAgB8F,EAAMgiB,MAAO5oB,MAAOhC,KAAKoB,UAAU,CAC1Ha,IAAK2G,EAAMiiB,OAEvB,EACA7nB,KAAK0nB,IAAMtJ,EACXpe,KAAK4nB,MAAQL,EACbvnB,KAAK6nB,GAAKL,EACVxnB,KAAK8nB,eAAiBzoB,EACtBW,KAAKwD,QAAUE,GAAAA,cAAiB1D,KAAK0nB,IAAIplB,QACzCtC,KAAK+nB,YAAcnJ,CACvB,CA4PA,OA3PA0I,EAAkBrlB,UAAU+V,OAAS,SAAUzb,EAAM+W,GACjD,OAAO2K,GAAaje,KAAKgoB,QAAQzrB,GAAO+W,EAC5C,EACAgU,EAAkBrlB,UAAU+lB,QAAU,SAAUzrB,GAC5C,OAAO8M,GAAUrJ,UAAW,OAAQ,EAAG,WACnC,IAAIioB,EAASlqB,EAAQ9B,EACrB,OAAO8qB,GAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EAYD,QAXAe,EAAU1qB,MAAMC,QAAQjB,KACRyD,KAAK6nB,KACjBtrB,EAAU,IAAIyD,KAAK6nB,IAEvB9pB,EAAS,CACL+B,eAAgBE,KAAK4nB,MACrBrrB,KAAM0rB,EACA1rB,EAAKkB,IAAI,SAAUC,GAAQ,OAAOohB,GAAiB1d,GAAU1D,GAAQ,GACrE,CAACohB,GAAiB1d,GAAU7E,KAClC8C,cAAeW,KAAK8nB,gBAEjB,CAAC,EAAG9nB,KAAKwD,QAAQV,KAAK,0BAA2B/E,EAAQ4gB,GAAW3e,KAAK+nB,eACpF,KAAK,EAED,OADA9rB,EAAMY,EAAGuD,QACDC,KACG,CAAC,EAAGpE,GAEX+D,KAAK8nB,eACE,CAAC,EAAG,CACHvmB,SAAU,EACVC,GAAI,EACJqmB,GAAI5rB,EAAIM,KAAKmE,YAAY,GACzB6C,UAAWtH,EAAIsH,YAGvB0kB,EACO,CAAC,EAAG,CACHxnB,IAAMxE,EAAIM,MAAQN,EAAIM,KAAKmE,aAAgB,GAC3C6C,UAAWtH,EAAIsH,YAGpB,CAAC,EAAG,CACHskB,GAAI5rB,EAAIM,KAAKmE,YAAY,GACzB6C,UAAWtH,EAAIsH,YAGnC,EACJ,EACJ,EACA+jB,EAAkBrlB,UAAUimB,IAAM,SAAU3rB,EAAM+W,GAC9C,OAAO2K,GAAaje,KAAKmoB,KAAK5rB,GAAO+W,EACzC,EACAgU,EAAkBrlB,UAAUkmB,KAAO,SAAU5rB,GACzC,OAAO8M,GAAUrJ,UAAW,OAAQ,EAAG,WACnC,IAAIooB,EAAaC,EAAYzI,EAAO3jB,EACpC,OAAO8qB,GAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EACD,OAAKlnB,KAAK6nB,GAGLtrB,GAAwB,iBAATA,EAGhBA,EAAKsb,eAAe,OACb,CAAC,EAAGqH,GAAclf,KAAK0nB,IAAIplB,OAAO6c,YAAa1iB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,iBAElH8kB,GAAc,EACdC,EAAa,SAAUC,GACnB,GAAoB,iBAATA,EACP,IAAK,IAAI1qB,KAAO0qB,EACRA,EAAK1qB,aAAgBsjB,GACrBkH,GAAc,EAEY,iBAAdE,EAAK1qB,IACjByqB,EAAWC,EAAK1qB,GAIhC,EACAyqB,EAAW9rB,GACP6rB,EACO,CAAC,EAAGlJ,GAAclf,KAAK0nB,IAAIplB,OAAO6c,YAAa1iB,GAASA,GAAS,CAAC,EAAG2U,IAAiC,CAAE9N,QAAS,iCAE5Hsc,EAAQ,CACJ9f,eAAgBE,KAAK4nB,MACrBW,UAAWxR,EAAAA,IACXxa,KAAMuiB,GAAiB1d,GAAU7E,IACjC8C,cAAeW,KAAK8nB,eACpBnnB,OAAO,EACP6nB,OAAO,EACP5nB,QAAQ,GAERZ,KAAK6nB,KACLjI,EAAa,MAAId,GAAiB,CAAE7f,IAAKe,KAAK6nB,MAE3C,CAAC,EAAG7nB,KAAKwD,QAAQV,KAAK,0BAA2B8c,EAAOjB,GAAW3e,KAAK+nB,iBAlCpE,CAAC,EAAG7I,GAAclf,KAAK0nB,IAAIplB,OAAO6c,YAAa1iB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,gBAHvG,CAAC,EAAG4b,GAAclf,KAAK0nB,IAAIplB,OAAO6c,YAAa1iB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,gBAsCtH,KAAK,EAED,OADArH,EAAMY,EAAGuD,QACDC,KACG,CAAC,EAAGpE,GAEX+D,KAAK8nB,eACE,CAAC,EAAG,CACHW,QAASxsB,EAAIM,KAAKksB,QAClBC,SAAU,CAAC,CAAEzpB,IAAKhD,EAAIM,KAAKosB,YAC3BplB,UAAWtH,EAAIsH,YAGpB,CAAC,EAAG,CACHklB,QAASxsB,EAAIM,KAAKksB,QAClBG,WAAY3sB,EAAIM,KAAKosB,UACrBplB,UAAWtH,EAAIsH,YAGnC,EACJ,EACJ,EACA+jB,EAAkBrlB,UAAU4mB,OAAS,SAAUtsB,EAAM+W,GACjD,OAAO2K,GAAaje,KAAK8oB,QAAQvsB,GAAO+W,EAC5C,EACAgU,EAAkBrlB,UAAU6mB,QAAU,SAAUvsB,GAC5C,OAAO8M,GAAUrJ,UAAW,OAAQ,EAAG,WACnC,IAAIhB,EAAO4gB,EAAO3jB,EAClB,OAAO8qB,GAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EACD,OAAK3qB,GAAwB,iBAATA,EAGhBA,EAAKsb,eAAe,OACb,CAAC,EAAGqH,GAAclf,KAAK0nB,IAAIplB,OAAO6c,YAAa1iB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,iBAElHtE,EAAQ8f,GAAiB,CAAE7f,IAAKe,KAAK6nB,KACrCjI,EAAQ,CACJ9f,eAAgBE,KAAK4nB,MACrBvoB,cAAeW,KAAK8nB,eACpBvrB,KAAM+oB,GAAAA,YAA6B/oB,EAAMyD,KAAK+nB,YAAYrC,MAAO,GACjE1mB,MAAOA,EACPupB,UAAWxR,EAAAA,IACXpW,OAAO,EACP6nB,OAAO,EACP5nB,QAAQ,GAEL,CAAC,EAAGZ,KAAKwD,QAAQV,KAAK,0BAA2B8c,EAAOjB,GAAW3e,KAAK+nB,gBAhBpE,CAAC,EAAG7I,GAAclf,KAAK0nB,IAAIplB,OAAO6c,YAAa1iB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,gBAiBtH,KAAK,EAED,OADArH,EAAMY,EAAGuD,QACDC,KACG,CAAC,EAAGpE,GAER,CAAC,EAAG,CACHwsB,QAASxsB,EAAIM,KAAKksB,QAClBllB,UAAWtH,EAAIsH,YAGnC,EACJ,EACJ,EACA+jB,EAAkBrlB,UAAU8mB,OAAS,SAAUzV,GAC3C,OAAOtT,KAAKgpB,OAAO1V,EACvB,EACAgU,EAAkBrlB,UAAU+mB,OAAS,SAAU1V,GAC3C,OAAO2K,GAAaje,KAAKipB,UAAW3V,EACxC,EACAgU,EAAkBrlB,UAAUgnB,QAAU,WAClC,OAAO5f,GAAUrJ,UAAW,OAAQ,EAAG,WACnC,IAAIhB,EAAO4gB,EAAO3jB,EAClB,OAAO8qB,GAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EASD,OARAloB,EAAQ8f,GAAiB,CAAE7f,IAAKe,KAAK6nB,KACrCjI,EAAQ,CACJ9f,eAAgBE,KAAK4nB,MACrBvoB,cAAeW,KAAK8nB,eACpB9oB,MAAOA,EACPupB,UAAWxR,EAAAA,IACXpW,OAAO,GAEJ,CAAC,EAAGX,KAAKwD,QAAQV,KAAK,0BAA2B8c,EAAOjB,GAAW3e,KAAK+nB,eACnF,KAAK,EAED,OADA9rB,EAAMY,EAAGuD,QACDC,KACG,CAAC,EAAGpE,GAER,CAAC,EAAG,CACHitB,QAASjtB,EAAIM,KAAK2sB,QAClB3lB,UAAWtH,EAAIsH,YAGnC,EACJ,EACJ,EACA+jB,EAAkBrlB,UAAU8D,IAAM,SAAUuN,GACxC,OAAO2K,GAAaje,KAAKmpB,OAAQ7V,EACrC,EACAgU,EAAkBrlB,UAAUknB,KAAO,WAC/B,OAAO9f,GAAUrJ,UAAW,OAAQ,EAAG,WACnC,IAAIhB,EAAOI,EAAYwgB,EAAO3jB,EAAKuE,EAAM0c,EACzC,OAAO6J,GAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EAaD,OAZAloB,EAAQ8f,GAAiB,CAAE7f,IAAKe,KAAK6nB,KACrCzoB,EAAaY,KAAK+nB,YAAY3oB,WAC9BwgB,EAAQ,CACJ9f,eAAgBE,KAAK4nB,MACrB5oB,MAAOA,EACPK,cAAeW,KAAK8nB,eACpBS,UAAWxR,EAAAA,IACXpW,OAAO,GAEPvB,IACAwgB,EAAMxgB,WAAa0f,GAAiB1f,IAEjC,CAAC,EAAGY,KAAKwD,QAAQV,KAAK,uBAAwB8c,EAAOjB,GAAW3e,KAAK+nB,eAChF,KAAK,EAED,OADA9rB,EAAMY,EAAGuD,QACDC,KACG,CAAC,EAAGpE,IAEfuE,EAAOvE,EAAIM,KAAKiE,KAAK/C,IAAI,SAAUC,GAAQ,OAAOf,GAAAA,MAAAA,MAAYe,EAAO,GACrEwf,EAAYF,GAAAA,sBAA2Bxc,GACnCR,KAAK8nB,eACE,CAAC,EAAG,CACHvrB,KAAM2gB,EAAU,IAAM,KACtB3Z,UAAWtH,EAAIsH,YAGpB,CAAC,EAAG,CACHhH,KAAM2gB,EACN3Z,UAAWtH,EAAIsH,aAGnC,EACJ,EACJ,EACA+jB,EAAkBrlB,UAAUmnB,MAAQ,SAAUhqB,GAC1C,IAAIiqB,EAAsB,CAAC,EAC3B,IAAK,IAAIC,KAAKlqB,EACmB,kBAAlBA,EAAWkqB,KAClBD,EAAoBC,IAAuB,IAAlBlqB,EAAWkqB,GAAc,EAAI,GAE7B,iBAAlBlqB,EAAWkqB,KAClBD,EAAoBC,GAAKlqB,EAAWkqB,GAAK,EAAI,EAAI,GAExB,iBAAlBlqB,EAAWkqB,KAClBD,EAAoBC,GAAKlqB,EAAWkqB,IAG5C,IAAIC,EAAe9sB,GAAS,CAAC,EAAGuD,KAAK+nB,aAErC,OADAwB,EAAanqB,WAAaiqB,EACnB,IAAI/B,EAAkBtnB,KAAK0nB,IAAK1nB,KAAK4nB,MAAO2B,EAAcvpB,KAAK6nB,GAAI7nB,KAAK8nB,eACnF,EACOR,CACX,CA5QyB,GChDrBkC,GAAmB,WACnB,SAASA,IACT,CASA,OARAA,EAAgBjE,OAAS,SAAUvmB,GAE/B,OADc,IAAIyqB,IACHC,YAAY1qB,EAC/B,EACAwqB,EAAgB/D,YAAc,SAAUzmB,EAAO0mB,GAC3C,IAAIiE,EAAU,IAAIF,GAClB,OAAO3K,GAAiB4G,EAAM1mB,EAAQ2qB,EAAQD,YAAY1qB,GAC9D,EACOwqB,CACX,CAZuB,GAcnBC,GAAgB,WAChB,SAASA,IACT,CA2OA,OA1OAA,EAAaxnB,UAAUynB,YAAc,SAAU1qB,EAAOpB,GAClD,IAAIf,EAAIkC,EAAIQ,EACZ,OAAIylB,GAAqBhmB,GACjB0iB,GAAe1iB,GACRgB,KAAK4pB,mBAAmB5qB,GAE1B2iB,GAAe3iB,GACbgB,KAAK6pB,mBAAmB7qB,GAE1B0a,EAAS1a,KACPnC,EAAK,CAAC,GAAMe,GAAOoC,KAAK8pB,aAAa9qB,GAAQnC,GAE/C4c,EAAOza,KACLD,EAAK,CAAC,GAAMnB,GAAOwnB,GAAuBpmB,GAAQD,KAGlDQ,EAAK,CAAC,GAAM3B,GAAOoC,KAAK+pB,kBAAkB/qB,GAAQO,GAIzDga,EAASva,GACFgB,KAAK+pB,kBAAkB/qB,GAGvBA,CAGnB,EACAyqB,EAAaxnB,UAAU6nB,aAAe,SAAU9qB,GAC5C,MAAO,CACH9B,mBAAoB,CAChBE,QAAS4B,EAAMolB,OACf9mB,QAAS0B,EAAMqlB,OAG3B,EACAoF,EAAaxnB,UAAU2nB,mBAAqB,SAAU5qB,GAClD,IAAInC,EAAIkC,EAAIQ,EAAIE,EAAIM,EAAIO,EAAIC,EACxBqF,EAAQ5F,KACZ,OAAQhB,EAAMmiB,UACV,KAAKF,GAAAA,IACL,KAAKA,GAAAA,IACL,KAAKA,GAAAA,GACD,IAAI+E,EAAMlC,GAAiB9kB,EAAMmiB,UAC7B6I,EAAahrB,EAAMoiB,SAAS3jB,IAAI,SAAUwsB,GAAU,OAAOrkB,EAAM8jB,YAAYO,EAAQjrB,EAAMqiB,UAAY,GAC3G,OAAOxkB,EAAK,CAAC,GACNmpB,GAAOgE,EACVntB,EAER,KAAKokB,GAAAA,IACG+E,EAAMlC,GAAiB9kB,EAAMmiB,UAAjC,IACI+I,EAAqBlrB,EAAMoiB,SAAS,GACxC,OAAI1H,EAASwQ,KACFnrB,EAAK,CAAC,GACNC,EAAMqiB,aAAc9hB,EAAK,CAAC,GACtBymB,GAAOhmB,KAAK8pB,aAAaI,GAC5B3qB,GACJR,IAGAirB,EAAahqB,KAAK0pB,YAAYQ,GAAoBlrB,EAAMqiB,YACrD5hB,EAAK,CAAC,GACNT,EAAMqiB,aAActhB,EAAK,CAAC,GACtBimB,GAAOgE,EACVjqB,GACJN,GAGZ,QAEI,GADIumB,EAAMlC,GAAiB9kB,EAAMmiB,UACH,IAA1BniB,EAAMoiB,SAAS/b,OAAc,CAC7B,IAAI8kB,EAAWnqB,KAAK0pB,YAAY1qB,EAAMoiB,SAAS,IAC/C,OAAO9gB,EAAK,CAAC,GACN0lB,GAAOmE,EACV7pB,CACR,CAGI,OADI0pB,EAAahrB,EAAMoiB,SAAS3jB,IAAIuC,KAAK0pB,YAAY5lB,KAAK9D,QACnDO,EAAK,CAAC,GACNylB,GAAOgE,EACVzpB,EAIpB,EACAkpB,EAAaxnB,UAAU4nB,mBAAqB,SAAU7qB,GAClD,OAAI4kB,GAAoB5kB,GACbgB,KAAKoqB,wBAAwBprB,EAK5C,EACAyqB,EAAaxnB,UAAUmoB,wBAA0B,SAAUprB,GACvD,IAAInC,EAAIkC,EAAIQ,EAAIE,EAAIM,EAAIO,EAAIC,EAAIJ,EAAI8lB,EAAIC,EAAImE,EAC5C,GAAIrrB,EAAMqiB,YAAc5I,EACpB,MAAM,IAAIvP,MAAM,4DAEpB,IAAI8c,EAAMlC,GAAiB9kB,EAAMmiB,UACjC,OAAQniB,EAAMmiB,UACV,KAAKiB,GAAAA,GACL,KAAKA,GAAAA,IACL,KAAKA,GAAAA,GACL,KAAKA,GAAAA,IACL,KAAKA,GAAAA,GACL,KAAKA,GAAAA,IACL,KAAKA,GAAAA,WACL,KAAKA,GAAAA,OACL,KAAKA,GAAAA,KACL,KAAKA,GAAAA,IACD,OAAOvlB,EAAK,CAAC,GACNmC,EAAMqiB,aAActiB,EAAK,CAAC,GACtBinB,GAAOZ,GAAuBpmB,EAAMoiB,SAAS,IAChDriB,GACJlC,EAER,KAAKulB,GAAAA,GACL,KAAKA,GAAAA,IACL,KAAKA,GAAAA,IACD,OAAO7iB,EAAK,CAAC,GACNP,EAAMqiB,aAAc5hB,EAAK,CAAC,GACtBumB,GAAOZ,GAAuBpmB,EAAMoiB,UACvC3hB,GACJF,EAER,KAAK6iB,GAAAA,SACD,IAAI9kB,EAAU0B,EAAMoiB,SAAS,GAC7B,OAAOrhB,EAAK,CAAC,GACNf,EAAMqiB,WAAa,CAClBiJ,YAAa,CACTC,UAAWjtB,EAAQ6lB,SAASjJ,SAC5BsQ,aAAcltB,EAAQ8lB,YACtBqH,aAAcntB,EAAQ+lB,cAG9BtjB,EAER,KAAKqiB,GAAAA,WAED,IADI9kB,EAAU0B,EAAMoiB,SAAS,IACjBoC,aAAc,CACtBlE,GAAAA,eAAwBhiB,EAAQkmB,cAChC,IAAIA,EAAelmB,EAAQkmB,aAC3B,OAAIA,EAAa,GAAG5J,gBAAkBf,IAC3BvY,EAAK,CAAC,GACNtB,EAAMqiB,WAAa,CAClBqJ,WAAY,CACRC,cAAe,CAACnH,EAAa,GAAGtJ,SAASD,YAAauJ,EAAa,MAG3EljB,KAEDC,EAAK,CAAC,GACNvB,EAAMqiB,WAAa,CAClBqJ,WAAY,CACRC,cAAertB,EAAQkmB,eAG/BjjB,EACR,CACA,OAAOJ,EAAK,CAAC,GACNnB,EAAMqiB,WAAa,CAClBqJ,WAAY,CACRH,UAAWjtB,EAAQ6lB,SAASjJ,WAGpC/Z,EAER,KAAKiiB,GAAAA,eAED,OADI9kB,EAAU0B,EAAMoiB,SAAS,IACtB6E,EAAK,CAAC,GACNjnB,EAAMqiB,WAAa,CAClBuJ,eAAgB,CACZL,UAAWjtB,EAAQ6lB,SAASjJ,WAGpC+L,EAER,QACI,OAAOC,EAAK,CAAC,GACNlnB,EAAMqiB,aAAcgJ,EAAK,CAAC,GACtBrE,GAAOZ,GAAuBpmB,EAAMoiB,SAAS,IAChDiJ,GACJnE,EAGhB,EACAuD,EAAaxnB,UAAU8nB,kBAAoB,SAAU/qB,GACjD,IAAIsnB,EAAYvB,GAAmB/lB,GACnC,IAAK,IAAIpB,KAAO0oB,EAAW,CACvB,IAAI7U,EAAM6U,EAAU1oB,GACpB,GAAI8jB,GAAejQ,GAAM,CACrB6U,EAAU1oB,GAAO6T,EAAI6P,cAAc1jB,GACnC,IAAIsnB,EAAYllB,KAAK4pB,mBAAmBtD,EAAU1oB,IAClDoC,KAAKilB,0BAA0BqB,EAAWpB,EAAWtnB,EACzD,MACSgmB,GAAoBnS,IACzB6U,EAAU1oB,GAAO6T,EAAI6P,cAAc1jB,GAC/BsnB,EAAYllB,KAAKoqB,wBAAwB9D,EAAU1oB,IACvDoC,KAAKilB,0BAA0BqB,EAAWpB,EAAWtnB,IAEhDonB,GAAqBvT,KAC1B6U,EAAU1oB,GAAOwnB,GAAuB3T,GAEhD,CACA,OAAO6U,CACX,EACAmD,EAAaxnB,UAAUgjB,0BAA4B,SAAUjmB,EAAOkmB,EAAWtnB,GAI3E,IAAK,IAAIunB,KAHJD,EAAUtnB,WACJoB,EAAMpB,GAEQsnB,EACjBlmB,EAAMmmB,GACF3nB,EAAQwB,EAAMmmB,IACdnmB,EAAMmmB,GAAgBnmB,EAAMmmB,GAAc7mB,OAAO4mB,EAAUC,IAEtD5L,EAASva,EAAMmmB,IAChB5L,EAAS2L,EAAUC,IACnBnnB,OAAO+f,OAAO/e,EAAOkmB,IAGrBxgB,QAAQC,KAAK,0DAA0DrG,OAAOgb,EAAQ4L,GAAY,wBAAyBA,EAAWtnB,GACtIoB,EAAMmmB,GAAgBD,EAAUC,KAIpCzgB,QAAQC,KAAK,6BAA6BrG,OAAOgb,EAAQta,GAAQ,wBAAyBA,EAAOkmB,EAAWtnB,GAC5GoB,EAAMmmB,GAAgBD,EAAUC,IAIpCnmB,EAAMmmB,GAAgBD,EAAUC,EAG5C,EACOsE,CACX,CA9OoB,GCtBhBhtB,GAAsC,WAStC,OARAA,GAAWuB,OAAO+f,QAAU,SAASC,GACjC,IAAK,IAAIzD,EAAG3M,EAAI,EAAGkP,EAAIhO,UAAUzJ,OAAQuI,EAAIkP,EAAGlP,IAE5C,IAAK,IAAIgK,KADT2C,EAAIzL,UAAUlB,GACO5P,OAAOiE,UAAU4V,eAAexW,KAAKkZ,EAAG3C,KACzDoG,EAAEpG,GAAK2C,EAAE3C,IAEjB,OAAOoG,CACX,EACOvhB,GAASgN,MAAMzJ,KAAM8O,UAChC,EACIzF,GAAwC,SAAUmd,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAI7nB,UAAU,SAAUsJ,EAASoB,GAC/C,SAASqd,EAAU7pB,GAAS,IAAM8pB,EAAKF,EAAUhM,KAAK5d,GAAS,CAAE,MAAOwH,GAAKgF,EAAOhF,EAAI,CAAE,CAC1F,SAASuiB,EAAS/pB,GAAS,IAAM8pB,EAAKF,EAAiB,MAAE5pB,GAAS,CAAE,MAAOwH,GAAKgF,EAAOhF,EAAI,CAAE,CAC7F,SAASsiB,EAAKrqB,GAJlB,IAAeO,EAIaP,EAAOoe,KAAOzS,EAAQ3L,EAAOO,QAJ1CA,EAIyDP,EAAOO,MAJhDA,aAAiB2pB,EAAI3pB,EAAQ,IAAI2pB,EAAE,SAAUve,GAAWA,EAAQpL,EAAQ,IAIjBoM,KAAKyd,EAAWE,EAAW,CAC7GD,GAAMF,EAAYA,EAAUld,MAAM+c,EAASC,GAAc,KAAK9L,OAClE,EACJ,EACIoM,GAA4C,SAAUP,EAAS3f,GAC/D,IAAsGuJ,EAAG4W,EAAGhJ,EAAGiJ,EAA3GvR,EAAI,CAAEwR,MAAO,EAAG9mB,KAAM,WAAa,GAAW,EAAP4d,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGmJ,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEtM,KAAM0M,EAAK,GAAI7R,MAAS6R,EAAK,GAAItM,OAAUsM,EAAK,IAAwB,mBAAX7M,SAA0ByM,EAAEzM,OAAOC,UAAY,WAAa,OAAOza,IAAM,GAAIinB,EACvJ,SAASI,EAAKvK,GAAK,OAAO,SAAUnP,GAAK,OACzC,SAAc8S,GACV,GAAIrQ,EAAG,MAAM,IAAI0H,UAAU,mCAC3B,KAAOmP,IAAMA,EAAI,EAAGxG,EAAG,KAAO/K,EAAI,IAAKA,OACnC,GAAItF,EAAI,EAAG4W,IAAMhJ,EAAY,EAARyC,EAAG,GAASuG,EAAU,OAAIvG,EAAG,GAAKuG,EAAS,SAAOhJ,EAAIgJ,EAAU,SAAMhJ,EAAE3c,KAAK2lB,GAAI,GAAKA,EAAErM,SAAWqD,EAAIA,EAAE3c,KAAK2lB,EAAGvG,EAAG,KAAK7F,KAAM,OAAOoD,EAE3J,OADIgJ,EAAI,EAAGhJ,IAAGyC,EAAK,CAAS,EAARA,EAAG,GAAQzC,EAAEjhB,QACzB0jB,EAAG,IACP,KAAK,EAAG,KAAK,EAAGzC,EAAIyC,EAAI,MACxB,KAAK,EAAc,OAAX/K,EAAEwR,QAAgB,CAAEnqB,MAAO0jB,EAAG,GAAI7F,MAAM,GAChD,KAAK,EAAGlF,EAAEwR,QAASF,EAAIvG,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/K,EAAE0R,IAAI7f,MAAOmO,EAAEyR,KAAK5f,MAAO,SACxC,QACI,MAAkByW,GAAZA,EAAItI,EAAEyR,MAAY9hB,OAAS,GAAK2Y,EAAEA,EAAE3Y,OAAS,KAAkB,IAAVob,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/K,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAV+K,EAAG,MAAczC,GAAMyC,EAAG,GAAKzC,EAAE,IAAMyC,EAAG,GAAKzC,EAAE,IAAM,CAAEtI,EAAEwR,MAAQzG,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAY/K,EAAEwR,MAAQlJ,EAAE,GAAI,CAAEtI,EAAEwR,MAAQlJ,EAAE,GAAIA,EAAIyC,EAAI,KAAO,CACpE,GAAIzC,GAAKtI,EAAEwR,MAAQlJ,EAAE,GAAI,CAAEtI,EAAEwR,MAAQlJ,EAAE,GAAItI,EAAE0R,IAAI/W,KAAKoQ,GAAK,KAAO,CAC9DzC,EAAE,IAAItI,EAAE0R,IAAI7f,MAChBmO,EAAEyR,KAAK5f,MAAO,SAEtBkZ,EAAK5Z,EAAKxF,KAAKmlB,EAAS9Q,EAC5B,CAAE,MAAOnR,GAAKkc,EAAK,CAAC,EAAGlc,GAAIyiB,EAAI,CAAG,CAAC,QAAW5W,EAAI4N,EAAI,CAAG,CACzD,GAAY,EAARyC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE1jB,MAAO0jB,EAAG,GAAKA,EAAG,QAAU,EAAG7F,MAAM,EAC9E,CAtBgDiM,CAAK,CAAC/J,EAAGnP,GAAK,CAAG,CAuBrE,EAWIkd,GAAS,WACT,SAASA,EAAMzM,EAAImJ,EAAMuD,EAAclM,EAAYvf,GAC/C,IAAIuG,EAAQ5F,KACZA,KAAKynB,MAAQ,SAAUnqB,GACnB,IAAI2G,EAAKka,GAAcvY,EAAM8hB,KACzB7qB,EAAK+I,EAAMmiB,YAAavoB,EAAQ3C,EAAG2C,MAAOE,EAAQ7C,EAAG6C,MACzD,OAAOuE,EAAGwjB,MAAMhrB,GAASA,GAAS,CAAC,EAAGa,GAAU,CAAEqqB,MAAO/hB,EAAM8hB,IAAIplB,OAAO+b,IAAKve,eAAgB8F,EAAMgiB,MAAO5oB,MAAOhC,KAAKoB,UAAUwH,EAAMmlB,eAAgBvrB,MAAOA,EAAOwrB,QAAStrB,EACrKA,EAAMurB,OAAO,SAAUC,EAAKC,GAE1B,OADAD,EAAIC,EAAI/B,OAAS+B,EAAI9K,UACd6K,CACX,EAAG,CAAC,QACFtrB,IACd,EACAI,KAAK0nB,IAAMtJ,EACXpe,KAAK4nB,MAAQL,EACbvnB,KAAK+qB,cAAgBD,EACrB9qB,KAAK+nB,YAAcnJ,GAAc,CAAC,EAClC5e,KAAKorB,SAAW1nB,GAAAA,cAAiB1D,KAAK0nB,IAAIplB,QAC1CtC,KAAK8nB,eAAiBzoB,CAC1B,CAkRA,OAjRAwrB,EAAM5oB,UAAU8D,IAAM,SAAUuN,GAC5B,OAAO2K,GAAaje,KAAKmpB,OAAQ7V,EACrC,EACAuX,EAAM5oB,UAAUknB,KAAO,WACnB,OAAO9f,GAAUrJ,UAAW,OAAQ,EAAG,WACnC,IAAIN,EAAOkgB,EAAOtgB,EAAQE,EAAOJ,EAAYnD,EAAKuE,EAAM0c,EAAW1gB,EACnE,OAAOuqB,GAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EA4BD,OA3BAxnB,EAAQM,KAAK+nB,YAAYroB,MACzBkgB,EAAQ,CACJ9f,eAAgBE,KAAK4nB,MACrBW,UAAWxR,EAAAA,MACX1X,cAAeW,KAAK8nB,gBAEpB9nB,KAAK+qB,gBACLnL,EAAM5gB,MAAQgB,KAAK+qB,eAEnBrrB,IACAkgB,EAAMlgB,MAAQof,GAAiBpf,KAEnCJ,EAASU,KAAK+nB,YAAYzoB,UAEtBsgB,EAAMtgB,OAASA,GAEnBE,EAAQQ,KAAK+nB,YAAYvoB,MAErBogB,EAAMpgB,MADNA,EACcA,EAAQ,IAAOA,EAAQ,IAGvB,KAElBJ,EAAaY,KAAK+nB,YAAY3oB,cAE1BwgB,EAAMxgB,WAAa0f,GAAiB1f,IAEjC,CAAC,EAAGY,KAAKorB,SAAStoB,KAAK,uBAAwB8c,EAAOjB,GAAW3e,KAAK+nB,eACjF,KAAK,EAED,OADA9rB,EAAMY,EAAGuD,QACDC,KACG,CAAC,EAAGpE,IAEfuE,EAAOvE,EAAIM,KAAKiE,KAAK/C,IAAI,SAAUC,GAAQ,OAAOf,GAAAA,MAAAA,MAAYe,EAAO,GACrEwf,EAAYF,GAAAA,sBAA2Bxc,GACvChE,EAAS,CACLD,KAAM2gB,EACN3Z,UAAWtH,EAAIsH,WAEftH,EAAIovB,QACJ7uB,EAAO6uB,MAAQpvB,EAAIovB,OACnBpvB,EAAIuD,QACJhD,EAAOgD,MAAQvD,EAAIuD,OACnBvD,EAAIqD,SACJ9C,EAAO8C,OAASrD,EAAIqD,QACjB,CAAC,EAAG9C,IAEvB,EACJ,EACJ,EACAquB,EAAM5oB,UAAUnB,MAAQ,SAAUwS,GAC9B,OAAO2K,GAAaje,KAAKsrB,SAAUhY,EACvC,EACAuX,EAAM5oB,UAAUqpB,OAAS,WACrB,OAAOjiB,GAAUrJ,UAAW,OAAQ,EAAG,WACnC,IAAI4f,EAAO3jB,EACX,OAAO8qB,GAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EAQD,OAPAtH,EAAQ,CACJ9f,eAAgBE,KAAK4nB,MACrBW,UAAWxR,EAAAA,OAEX/W,KAAK+qB,gBACLnL,EAAM5gB,MAAQgB,KAAK+qB,eAEhB,CAAC,EAAG/qB,KAAKorB,SAAStoB,KAAK,6BAA8B8c,EAAOjB,GAAW3e,KAAK+nB,eACvF,KAAK,EAED,OADA9rB,EAAMY,EAAGuD,QACDC,KACG,CAAC,EAAGpE,GAER,CAAC,EAAG,CACHsH,UAAWtH,EAAIsH,UACf8nB,MAAOpvB,EAAIM,KAAK8uB,QAGpC,EACJ,EACJ,EACAR,EAAM5oB,UAAUspB,MAAQ,SAAUvsB,GAC9B,GAA2D,WAAvDhB,OAAOiE,UAAUC,SAASb,KAAKrC,GAAOmD,MAAM,GAAI,GAChD,MAAM+G,MAAM2N,EAAAA,qBAEhB,IAAInQ,EAAO1I,OAAO0I,KAAK1H,GACnBwsB,EAAY9kB,EAAK+kB,KAAK,SAAU/tB,GAChC,YAAuBkC,IAAhBZ,EAAMtB,EACjB,GACA,GAAIgJ,EAAKrB,SAAWmmB,EAChB,MAAMtiB,MAAM2N,EAAAA,sBAEhB,OAAO,IAAIgU,EAAM7qB,KAAK0nB,IAAK1nB,KAAK4nB,MAAO4B,GAAAA,YAA4BxqB,EAAOgB,KAAK+nB,YAAYrC,MAAO,GAAQ1lB,KAAK+nB,YAAa/nB,KAAK8nB,eACrI,EACA+C,EAAM5oB,UAAU3E,QAAU,SAAUshB,GAEhC,OADAU,GAAAA,eAAwBV,GACjB,IAAIiM,EAAM7qB,KAAK0nB,IAAK1nB,KAAK4nB,MAAO5nB,KAAK+qB,cAAenM,EAAY5e,KAAK8nB,eAChF,EACA+C,EAAM5oB,UAAU+oB,QAAU,SAAUU,EAAWC,GAC3C,IAAI9uB,EACJyiB,GAAAA,YAAqBoM,GACrBpM,GAAAA,aAAsBqM,GACtB,IAAIC,IAAY/uB,EAAK,CAAC,GACf6uB,GAA8B,SAAjBC,GAA2B,EAAI,EAC/C9uB,GACA6C,EAAQM,KAAK+nB,YAAYroB,OAAS,CAAC,EACnC6pB,EAAevrB,OAAO+f,OAAO,CAAC,EAAG/d,KAAK+nB,YAAa,CACnDroB,MAAO1B,OAAO+f,OAAO,CAAC,EAAGre,EAAOksB,KAEpC,OAAO,IAAIf,EAAM7qB,KAAK0nB,IAAK1nB,KAAK4nB,MAAO5nB,KAAK+qB,cAAexB,EAAcvpB,KAAK8nB,eAClF,EACA+C,EAAM5oB,UAAUzC,MAAQ,SAAUA,GAC9B8f,GAAAA,UAAmB,QAAS9f,GAC5B,IAAI+pB,EAAe9sB,GAAS,CAAC,EAAGuD,KAAK+nB,aAErC,OADAwB,EAAa/pB,MAAQA,EACd,IAAIqrB,EAAM7qB,KAAK0nB,IAAK1nB,KAAK4nB,MAAO5nB,KAAK+qB,cAAexB,EAAcvpB,KAAK8nB,eAClF,EACA+C,EAAM5oB,UAAU4pB,KAAO,SAAUvsB,GAC7BggB,GAAAA,UAAmB,SAAUhgB,GAC7B,IAAIiqB,EAAe9sB,GAAS,CAAC,EAAGuD,KAAK+nB,aAErC,OADAwB,EAAajqB,OAASA,EACf,IAAIurB,EAAM7qB,KAAK0nB,IAAK1nB,KAAK4nB,MAAO5nB,KAAK+qB,cAAexB,EAAcvpB,KAAK8nB,eAClF,EACA+C,EAAM5oB,UAAU4mB,OAAS,SAAUtsB,EAAM+W,GACrC,OAAO2K,GAAaje,KAAK8oB,QAAQvsB,GAAO+W,EAC5C,EACAuX,EAAM5oB,UAAU6mB,QAAU,SAAUvsB,GAChC,OAAO8M,GAAUrJ,UAAW,OAAQ,EAAG,WACnC,IAAI8gB,EAAUngB,EAAOif,EAAO3jB,EAC5B,OAAO8qB,GAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EACD,OAAK3qB,GAAwB,iBAATA,EAGhBA,EAAKsb,eAAe,OACb,CAAC,EAAGqH,GAAclf,KAAK0nB,IAAIplB,OAAO6c,YAAa1iB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,iBAElHwd,EAAW9gB,KAAK+nB,YAAYjH,SAC5BngB,OAAqBf,IAAbkhB,GAAgCA,EACxClB,EAAQ,CACJ9f,eAAgBE,KAAK4nB,MACrBW,UAAWxR,EAAAA,MACXpW,MAAOA,EACP6nB,OAAO,EACP5nB,QAAQ,EACRrE,KAAM+oB,GAAAA,YAA6B/oB,EAAMyD,KAAK+nB,YAAYrC,MAAO,IAEjE1lB,KAAK8nB,iBACLlI,EAAMvgB,cAAgBW,KAAK8nB,gBAE3B9nB,KAAK+qB,gBACLnL,EAAM5gB,MAAQgB,KAAK+qB,eAEhB,CAAC,EAAG/qB,KAAKorB,SAAStoB,KAAK,0BAA2B8c,EAAOjB,GAAW3e,KAAK+nB,gBArBrE,CAAC,EAAG7I,GAAclf,KAAK0nB,IAAIplB,OAAO6c,YAAa1iB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,gBAsBtH,KAAK,EAED,OADArH,EAAMY,EAAGuD,QACDC,KACG,CAAC,EAAGpE,GAER,CAAC,EAAG,CACHsH,UAAWtH,EAAIsH,UACfklB,QAASxsB,EAAIM,KAAKksB,QAClBqD,SAAU7vB,EAAIM,KAAKosB,YAGvC,EACJ,EACJ,EACAkC,EAAM5oB,UAAUmnB,MAAQ,SAAUhqB,GAC9B,IAAIiqB,EAAsB,CAAC,EAC3B,IAAK,IAAIC,KAAKlqB,EACmB,kBAAlBA,EAAWkqB,KAClBD,EAAoBC,IAAuB,IAAlBlqB,EAAWkqB,GAAc,EAAI,GAE7B,iBAAlBlqB,EAAWkqB,KAClBD,EAAoBC,GAAKlqB,EAAWkqB,GAAK,EAAI,EAAI,GAExB,iBAAlBlqB,EAAWkqB,KAClBD,EAAoBC,GAAKlqB,EAAWkqB,IAG5C,IAAIC,EAAe9sB,GAAS,CAAC,EAAGuD,KAAK+nB,aAErC,OADAwB,EAAanqB,WAAaiqB,EACnB,IAAIwB,EAAM7qB,KAAK0nB,IAAK1nB,KAAK4nB,MAAO5nB,KAAK+qB,cAAexB,EAAcvpB,KAAK8nB,eAClF,EACA+C,EAAM5oB,UAAU+mB,OAAS,SAAU1V,GAC/B,OAAO2K,GAAaje,KAAKipB,UAAW3V,EACxC,EACAuX,EAAM5oB,UAAUgnB,QAAU,WACtB,OAAO5f,GAAUrJ,UAAW,OAAQ,EAAG,WACnC,IAAInD,EAAIyC,EAAQE,EAAOJ,EAAYM,EAAOohB,EAAUngB,EAAOif,EAAO3jB,EAClE,OAAO8qB,GAAY/mB,KAAM,SAAUjB,GAC/B,OAAQA,EAAGmoB,OACP,KAAK,EAmBD,OAlBArqB,EAAKmD,KAAK+nB,YAAazoB,EAASzC,EAAGyC,OAAQE,EAAQ3C,EAAG2C,MAAOJ,EAAavC,EAAGuC,WAAYM,EAAQ7C,EAAG6C,WACrFE,IAAXN,QACUM,IAAVJ,QACeI,IAAfR,QACUQ,IAAVF,GACAgF,QAAQC,KAAK,sFAEjBmc,EAAW9gB,KAAK+nB,YAAYjH,SAC5BngB,OAAqBf,IAAbkhB,GAAgCA,EACxClB,EAAQ,CACJ9f,eAAgBE,KAAK4nB,MACrB5oB,MAAOgB,KAAK+qB,cACZxC,UAAWxR,EAAAA,MACXpW,MAAOA,GAEPX,KAAK8nB,iBACLlI,EAAMvgB,cAAgBW,KAAK8nB,gBAExB,CAAC,EAAG9nB,KAAKorB,SAAStoB,KAAK,0BAA2B8c,EAAOjB,GAAW3e,KAAK+nB,eACpF,KAAK,EAED,OADA9rB,EAAM8C,EAAGqB,QACDC,KACG,CAAC,EAAGpE,GAER,CAAC,EAAG,CACHsH,UAAWtH,EAAIsH,UACf2lB,QAASjtB,EAAIM,KAAK2sB,UAGtC,EACJ,EACJ,EACA2B,EAAM5oB,UAAU8pB,gBAAkB,SAAUxvB,GACxC,OAAO8M,GAAUrJ,UAAW,OAAQ,EAAG,WACnC,IAAI4f,EAAO3jB,EACX,OAAO8qB,GAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EACD,OAAK3qB,GAAwB,iBAATA,EAGhBA,EAAKsb,eAAe,OACb,CAAC,EAAGqH,GAAclf,KAAK0nB,IAAIplB,OAAO6c,YAAa1iB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,iBAElHsc,EAAQ,CACJ9f,eAAgBE,KAAK4nB,MACrBW,UAAWxR,EAAAA,MACXxa,KAAM+oB,GAAAA,YAA6B/oB,GAAM,IAEzCyD,KAAK8nB,iBACLlI,EAAMvgB,cAAgBW,KAAK8nB,gBAE3B9nB,KAAK+qB,gBACLnL,EAAM5gB,MAAQgB,KAAK+qB,eAEhB,CAAC,EAAG/qB,KAAKorB,SAAStoB,KAAK,8BAA+B8c,EAAOjB,GAAW3e,KAAK+nB,gBAhBzE,CAAC,EAAG7I,GAAclf,KAAK0nB,IAAIplB,OAAO6c,YAAa1iB,GAASA,GAAS,CAAC,EAAG2U,IAAuB,CAAE9N,QAAS,gBAiBtH,KAAK,EAED,OADArH,EAAMY,EAAGuD,QACDC,KACG,CAAC,EAAGpE,GAER,CAAC,EAAG,CACHsH,UAAWtH,EAAIsH,UACfklB,QAASxsB,EAAIM,KAAKksB,QAClBuD,IAAK/vB,EAAIM,KAAKyvB,KAAOrvB,GAAAA,MAAAA,MAAYV,EAAIM,KAAKyvB,OAG9D,EACJ,EACJ,EACOnB,CACX,CAtSa,GCdToB,GAAe,WACf,SAASA,EAAY7N,EAAIte,EAAgBosB,GACrC,IAAItmB,EAAQ5F,KACZA,KAAKmsB,QAAU,GACX/N,GAAMte,IACNE,KAAK0nB,IAAMtJ,EACXpe,KAAKorB,SAAW1nB,GAAAA,cAAiB1D,KAAK0nB,IAAIplB,QAC1CtC,KAAKosB,gBAAkBtsB,EACnBosB,GAAeA,EAAY7mB,OAAS,GACpC6mB,EAAYvlB,QAAQ,SAAU1F,GAC1Bqe,GAAAA,mBAA4Bre,GAC5B,IAAIorB,EAAYruB,OAAO0I,KAAKzF,GAAO,GACnC2E,EAAM0mB,MAAMD,EAAWprB,EAAMorB,IAAY,EAC7C,GAGZ,CA+GA,OA9GAJ,EAAYhqB,UAAUsqB,IAAM,WACxB,OA7D8C/F,EA6D7BxmB,KA7DsCymB,OA6D3B,EA7D0CE,EA6D/B,WACnC,IAAInqB,EACJ,OAtDoC,SAAUgqB,EAAS3f,GAC/D,IAAsGuJ,EAAG4W,EAAGhJ,EAAGiJ,EAA3GvR,EAAI,CAAEwR,MAAO,EAAG9mB,KAAM,WAAa,GAAW,EAAP4d,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGmJ,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEtM,KAAM0M,EAAK,GAAI7R,MAAS6R,EAAK,GAAItM,OAAUsM,EAAK,IAAwB,mBAAX7M,SAA0ByM,EAAEzM,OAAOC,UAAY,WAAa,OAAOza,IAAM,GAAIinB,EACvJ,SAASI,EAAKvK,GAAK,OAAO,SAAUnP,GAAK,OACzC,SAAc8S,GACV,GAAIrQ,EAAG,MAAM,IAAI0H,UAAU,mCAC3B,KAAOmP,IAAMA,EAAI,EAAGxG,EAAG,KAAO/K,EAAI,IAAKA,OACnC,GAAItF,EAAI,EAAG4W,IAAMhJ,EAAY,EAARyC,EAAG,GAASuG,EAAU,OAAIvG,EAAG,GAAKuG,EAAS,SAAOhJ,EAAIgJ,EAAU,SAAMhJ,EAAE3c,KAAK2lB,GAAI,GAAKA,EAAErM,SAAWqD,EAAIA,EAAE3c,KAAK2lB,EAAGvG,EAAG,KAAK7F,KAAM,OAAOoD,EAE3J,OADIgJ,EAAI,EAAGhJ,IAAGyC,EAAK,CAAS,EAARA,EAAG,GAAQzC,EAAEjhB,QACzB0jB,EAAG,IACP,KAAK,EAAG,KAAK,EAAGzC,EAAIyC,EAAI,MACxB,KAAK,EAAc,OAAX/K,EAAEwR,QAAgB,CAAEnqB,MAAO0jB,EAAG,GAAI7F,MAAM,GAChD,KAAK,EAAGlF,EAAEwR,QAASF,EAAIvG,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/K,EAAE0R,IAAI7f,MAAOmO,EAAEyR,KAAK5f,MAAO,SACxC,QACI,MAAkByW,GAAZA,EAAItI,EAAEyR,MAAY9hB,OAAS,GAAK2Y,EAAEA,EAAE3Y,OAAS,KAAkB,IAAVob,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/K,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAV+K,EAAG,MAAczC,GAAMyC,EAAG,GAAKzC,EAAE,IAAMyC,EAAG,GAAKzC,EAAE,IAAM,CAAEtI,EAAEwR,MAAQzG,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAY/K,EAAEwR,MAAQlJ,EAAE,GAAI,CAAEtI,EAAEwR,MAAQlJ,EAAE,GAAIA,EAAIyC,EAAI,KAAO,CACpE,GAAIzC,GAAKtI,EAAEwR,MAAQlJ,EAAE,GAAI,CAAEtI,EAAEwR,MAAQlJ,EAAE,GAAItI,EAAE0R,IAAI/W,KAAKoQ,GAAK,KAAO,CAC9DzC,EAAE,IAAItI,EAAE0R,IAAI7f,MAChBmO,EAAEyR,KAAK5f,MAAO,SAEtBkZ,EAAK5Z,EAAKxF,KAAKmlB,EAAS9Q,EAC5B,CAAE,MAAOnR,GAAKkc,EAAK,CAAC,EAAGlc,GAAIyiB,EAAI,CAAG,CAAC,QAAW5W,EAAI4N,EAAI,CAAG,CACzD,GAAY,EAARyC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE1jB,MAAO0jB,EAAG,GAAKA,EAAG,QAAU,EAAG7F,MAAM,EAC9E,CAtBgDiM,CAAK,CAAC/J,EAAGnP,GAAK,CAAG,CAuBrE,CA4BmBoZ,CAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EACD,IAAKlnB,KAAKosB,kBAAoBpsB,KAAK0nB,IAC/B,MAAM,IAAIxe,MAAM,4CAEpB,MAAO,CAAC,EAAGlJ,KAAKorB,SAAStoB,KAAK,8BAA+B,CACrDhD,eAAgBE,KAAKosB,gBACrBprB,OAAQhB,KAAKmsB,WAEzB,KAAK,EAED,OADA3vB,EAASK,EAAGuD,SACE5D,EAAOD,MAAQC,EAAOD,KAAKiE,KAC9B,CAAC,EAAG,CACH+C,UAAW/G,EAAO+G,UAClBhH,KAAMC,EAAOD,KAAKiE,KAAK/C,IAAId,GAAAA,MAAAA,SAGhC,CAAC,EAAGH,GAEvB,EACJ,EAlFG,KAFgEkqB,OA6D/B,KA3DtBA,EAAI7nB,UAAU,SAAUsJ,EAASoB,GAC/C,SAASqd,EAAU7pB,GAAS,IAAM8pB,EAAKF,EAAUhM,KAAK5d,GAAS,CAAE,MAAOwH,GAAKgF,EAAOhF,EAAI,CAAE,CAC1F,SAASuiB,EAAS/pB,GAAS,IAAM8pB,EAAKF,EAAiB,MAAE5pB,GAAS,CAAE,MAAOwH,GAAKgF,EAAOhF,EAAI,CAAE,CAC7F,SAASsiB,EAAKrqB,GAJlB,IAAeO,EAIaP,EAAOoe,KAAOzS,EAAQ3L,EAAOO,QAJ1CA,EAIyDP,EAAOO,MAJhDA,aAAiB2pB,EAAI3pB,EAAQ,IAAI2pB,EAAE,SAAUve,GAAWA,EAAQpL,EAAQ,IAIjBoM,KAAKyd,EAAWE,EAAW,CAC7GD,GAAMF,EAAYA,EAAUld,MAAM+c,EAASC,GAAc,KAAK9L,OAClE,GAPwC,IAAU6L,EAASC,EAAYC,EAAGC,CAqF1E,EACAsF,EAAYhqB,UAAUuqB,OAAS,WAC3B,OAAOxsB,KAAKmsB,OAChB,EACAF,EAAYhqB,UAAU2Y,KAAO,WACzB,OAAO5a,KAAKmsB,QAAQ1uB,IAAI,SAAUZ,GAC9B,IAAIkC,EACAoC,EAAWtE,EAAGsE,SAAUD,EAAarE,EAAGqE,WAC5C,OAAOnC,EAAK,CAAC,GACNoC,GAAYnE,KAAKJ,MAAMsE,GAC1BnC,CACR,EACJ,EACAktB,EAAYhqB,UAAUqqB,MAAQ,SAAUrrB,EAAO2e,EAAO8F,QACjC,IAAbA,IAAkBA,GAAM,GAC5B,IAAI+G,EAWJ,OATIA,EADmB,WAAnBnT,EAAQsG,GACSd,GAAiBc,GAGjB5iB,KAAKoB,UAAUwhB,GAEpC5f,KAAKmsB,QAAQ9b,KAAK,CACdlP,SAAUukB,EAAMzkB,EAAQ,IAAI3C,OAAO2C,GACnCC,WAAYurB,IAETzsB,IACX,EACAisB,EAAYhqB,UAAUyqB,UAAY,SAAU9M,GACxC,OAAO5f,KAAKssB,MAAM,YAAa1M,EACnC,EACAqM,EAAYhqB,UAAU0qB,OAAS,SAAU/M,GACrC,OAAO5f,KAAKssB,MAAM,SAAU1M,EAChC,EACAqM,EAAYhqB,UAAU2qB,WAAa,SAAUhN,GACzC,OAAO5f,KAAKssB,MAAM,aAAc1M,EACpC,EACAqM,EAAYhqB,UAAUnB,MAAQ,SAAU8e,GACpC,OAAO5f,KAAKssB,MAAM,QAAS1M,EAC/B,EACAqM,EAAYhqB,UAAUihB,QAAU,SAAUtD,GAUtC,OATIA,EAAM5gB,QACN4gB,EAAM5gB,MAAQwqB,GAAAA,OAAuB5J,EAAM5gB,QAE3C4gB,EAAMiN,oBAA4D,iBAA9BjN,EAAMiN,qBAC1CjN,EAAMiN,mBAAqBjN,EAAMiN,oBAEjCjN,EAAMkN,OACNlN,EAAMkN,KAAO,IAAI9S,GAAM4F,EAAMkN,KAAK1R,UAAWwE,EAAMkN,KAAK3R,UAAUjB,UAE/Dla,KAAKssB,MAAM,UAAW1M,EACjC,EACAqM,EAAYhqB,UAAU6T,MAAQ,SAAU8J,GACpC,OAAO5f,KAAKssB,MAAM,QAAS1M,EAC/B,EACAqM,EAAYhqB,UAAUzC,MAAQ,SAAUogB,GACpC,OAAO5f,KAAKssB,MAAM,QAAS1M,EAC/B,EACAqM,EAAYhqB,UAAUyM,MAAQ,SAAUkR,GACpC,OAAO5f,KAAKssB,MAAM,QAAS9C,GAAAA,OAAuB5J,GACtD,EACAqM,EAAYhqB,UAAU8qB,QAAU,SAAUnN,GACtC,OAAO5f,KAAKssB,MAAM,UAAW1M,EACjC,EACAqM,EAAYhqB,UAAU+qB,OAAS,SAAUpN,GACrC,OAAO5f,KAAKssB,MAAM,SAAU1M,EAChC,EACAqM,EAAYhqB,UAAUgrB,YAAc,SAAUrN,GAC1C,OAAO5f,KAAKssB,MAAM,cAAe1M,EACrC,EACAqM,EAAYhqB,UAAUirB,OAAS,SAAUtN,GACrC,OAAO5f,KAAKssB,MAAM,SAAU1M,EAChC,EACAqM,EAAYhqB,UAAU4pB,KAAO,SAAUjM,GACnC,OAAO5f,KAAKssB,MAAM,OAAQ1M,EAC9B,EACAqM,EAAYhqB,UAAUkrB,KAAO,SAAUvN,GACnC,OAAO5f,KAAKssB,MAAM,OAAQ1M,EAC9B,EACAqM,EAAYhqB,UAAUmrB,YAAc,SAAUxN,GAC1C,OAAO5f,KAAKssB,MAAM,cAAe1M,EACrC,EACAqM,EAAYhqB,UAAUorB,OAAS,SAAUzN,GACrC,OAAO5f,KAAKssB,MAAM,SAAU1M,EAChC,EACOqM,CACX,CAhImB,GAiInBqB,GAAA,GC5KIzqB,GAAyC,WACzC,IAAI2U,EAAgB,SAAU7D,EAAG8D,GAI7B,OAHAD,EAAgBxZ,OAAO0Z,gBAClB,CAAEC,UAAW,cAAgBpa,OAAS,SAAUoW,EAAG8D,GAAK9D,EAAEgE,UAAYF,CAAG,GAC1E,SAAU9D,EAAG8D,GAAK,IAAK,IAAIG,KAAKH,EAAOzZ,OAAOiE,UAAU4V,eAAexW,KAAKoW,EAAGG,KAAIjE,EAAEiE,GAAKH,EAAEG,GAAI,EAC7FJ,EAAc7D,EAAG8D,EAC5B,EACA,OAAO,SAAU9D,EAAG8D,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIK,UAAU,uBAAyBzZ,OAAOoZ,GAAK,iCAE7D,SAASM,IAAO/X,KAAKyD,YAAckQ,CAAG,CADtC6D,EAAc7D,EAAG8D,GAEjB9D,EAAE1R,UAAkB,OAANwV,EAAazZ,OAAOga,OAAOP,IAAMM,EAAG9V,UAAYwV,EAAExV,UAAW,IAAI8V,EACnF,CACJ,CAd6C,GA0DzCwV,GAAuB,SAAU3qB,GAEjC,SAAS2qB,EAAoBnP,EAAImJ,EAAM3I,EAAYvf,GAC/C,IAAIuG,EAAQhD,EAAOvB,KAAKrB,KAAMoe,EAAImJ,EAAM,GAAI3I,EAAYvf,IAAkBW,KAI1E,OAHIX,IACAuG,EAAMkiB,eAAiBzoB,GAEpBuG,CACX,CAyEA,OAhFA/C,GAAU0qB,EAAqB3qB,GAQ/B5E,OAAOsT,eAAeic,EAAoBtrB,UAAW,OAAQ,CACzD8D,IAAK,WACD,OAAO/F,KAAK4nB,KAChB,EACAzS,YAAY,EACZE,cAAc,IAElBkY,EAAoBtrB,UAAU+pB,IAAM,SAAUxE,GAC1C,GAAqB,iBAAVA,GAAuC,iBAAVA,EACpC,MAAM,IAAIte,MAAM,kBAEpB,OAAO,IAAIoe,GAAkBtnB,KAAK0nB,IAAK1nB,KAAK4nB,MAAO5nB,KAAK+nB,YAAaP,EAAOxnB,KAAK8nB,eACrF,EACAyF,EAAoBtrB,UAAUurB,IAAM,SAAUjxB,EAAM+W,GAChD,OAAO2K,GAAaje,KAAKytB,KAAKlxB,GAAO+W,EACzC,EACAia,EAAoBtrB,UAAUwrB,KAAO,SAAUlxB,GAC3C,OArE8CiqB,EAqE7BxmB,KArEsCymB,OAqE3B,EArE0CE,EAqE/B,WACnC,IAAI+G,EAAe3vB,EAAQ9B,EAC3B,OA9DoC,SAAUuqB,EAAS3f,GAC/D,IAAsGuJ,EAAG4W,EAAGhJ,EAAGiJ,EAA3GvR,EAAI,CAAEwR,MAAO,EAAG9mB,KAAM,WAAa,GAAW,EAAP4d,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGmJ,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEtM,KAAM0M,EAAK,GAAI7R,MAAS6R,EAAK,GAAItM,OAAUsM,EAAK,IAAwB,mBAAX7M,SAA0ByM,EAAEzM,OAAOC,UAAY,WAAa,OAAOza,IAAM,GAAIinB,EACvJ,SAASI,EAAKvK,GAAK,OAAO,SAAUnP,GAAK,OACzC,SAAc8S,GACV,GAAIrQ,EAAG,MAAM,IAAI0H,UAAU,mCAC3B,KAAOmP,IAAMA,EAAI,EAAGxG,EAAG,KAAO/K,EAAI,IAAKA,OACnC,GAAItF,EAAI,EAAG4W,IAAMhJ,EAAY,EAARyC,EAAG,GAASuG,EAAU,OAAIvG,EAAG,GAAKuG,EAAS,SAAOhJ,EAAIgJ,EAAU,SAAMhJ,EAAE3c,KAAK2lB,GAAI,GAAKA,EAAErM,SAAWqD,EAAIA,EAAE3c,KAAK2lB,EAAGvG,EAAG,KAAK7F,KAAM,OAAOoD,EAE3J,OADIgJ,EAAI,EAAGhJ,IAAGyC,EAAK,CAAS,EAARA,EAAG,GAAQzC,EAAEjhB,QACzB0jB,EAAG,IACP,KAAK,EAAG,KAAK,EAAGzC,EAAIyC,EAAI,MACxB,KAAK,EAAc,OAAX/K,EAAEwR,QAAgB,CAAEnqB,MAAO0jB,EAAG,GAAI7F,MAAM,GAChD,KAAK,EAAGlF,EAAEwR,QAASF,EAAIvG,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/K,EAAE0R,IAAI7f,MAAOmO,EAAEyR,KAAK5f,MAAO,SACxC,QACI,MAAkByW,GAAZA,EAAItI,EAAEyR,MAAY9hB,OAAS,GAAK2Y,EAAEA,EAAE3Y,OAAS,KAAkB,IAAVob,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/K,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAV+K,EAAG,MAAczC,GAAMyC,EAAG,GAAKzC,EAAE,IAAMyC,EAAG,GAAKzC,EAAE,IAAM,CAAEtI,EAAEwR,MAAQzG,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAY/K,EAAEwR,MAAQlJ,EAAE,GAAI,CAAEtI,EAAEwR,MAAQlJ,EAAE,GAAIA,EAAIyC,EAAI,KAAO,CACpE,GAAIzC,GAAKtI,EAAEwR,MAAQlJ,EAAE,GAAI,CAAEtI,EAAEwR,MAAQlJ,EAAE,GAAItI,EAAE0R,IAAI/W,KAAKoQ,GAAK,KAAO,CAC9DzC,EAAE,IAAItI,EAAE0R,IAAI7f,MAChBmO,EAAEyR,KAAK5f,MAAO,SAEtBkZ,EAAK5Z,EAAKxF,KAAKmlB,EAAS9Q,EAC5B,CAAE,MAAOnR,GAAKkc,EAAK,CAAC,EAAGlc,GAAIyiB,EAAI,CAAG,CAAC,QAAW5W,EAAI4N,EAAI,CAAG,CACzD,GAAY,EAARyC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE1jB,MAAO0jB,EAAG,GAAKA,EAAG,QAAU,EAAG7F,MAAM,EAC9E,CAtBgDiM,CAAK,CAAC/J,EAAGnP,GAAK,CAAG,CAuBrE,CAoCmBoZ,CAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EAeD,OAdAwG,EAAgBnxB,EACXiB,EAAQjB,KACTmxB,EAAgB,CAACnxB,IAErBmxB,EAAgBA,EAAcjwB,IAAI,SAAUC,GACxC,OAAOohB,GAAiB1d,GAAU1D,GACtC,GACAK,EAAS,CACL+B,eAAgBE,KAAK4nB,MACrBrrB,KAAMmxB,GAEN1tB,KAAK8nB,iBACL/pB,EAAOsB,cAAgBW,KAAK8nB,gBAEzB,CAAC,EAAG9nB,KAAKorB,SAAStoB,KAAK,0BAA2B/E,EAAQ4gB,GAAW3e,KAAK+nB,eACrF,KAAK,EAED,OADA9rB,EAAMY,EAAGuD,QACDC,KACG,CAAC,EAAGpE,GAEVuB,EAAQjB,GAcN,CAAC,EAAG,CACHkE,IAAKxE,EAAIM,KAAKmE,YACd6C,UAAWtH,EAAIsH,YAffvD,KAAK8nB,eACE,CAAC,EAAG,CACHvmB,SAAU,EACVC,GAAI,EACJqmB,GAAI5rB,EAAIM,KAAKmE,YAAY,GACzB6C,UAAWtH,EAAIsH,YAGpB,CAAC,EAAG,CACHskB,GAAI5rB,EAAIM,KAAKmE,YAAY,GACzB6C,UAAWtH,EAAIsH,YAQvC,EACJ,EAhHG,KAFgEmjB,OAqE/B,KAnEtBA,EAAI7nB,UAAU,SAAUsJ,EAASoB,GAC/C,SAASqd,EAAU7pB,GAAS,IAAM8pB,EAAKF,EAAUhM,KAAK5d,GAAS,CAAE,MAAOwH,GAAKgF,EAAOhF,EAAI,CAAE,CAC1F,SAASuiB,EAAS/pB,GAAS,IAAM8pB,EAAKF,EAAiB,MAAE5pB,GAAS,CAAE,MAAOwH,GAAKgF,EAAOhF,EAAI,CAAE,CAC7F,SAASsiB,EAAKrqB,GAJlB,IAAeO,EAIaP,EAAOoe,KAAOzS,EAAQ3L,EAAOO,QAJ1CA,EAIyDP,EAAOO,MAJhDA,aAAiB2pB,EAAI3pB,EAAQ,IAAI2pB,EAAE,SAAUve,GAAWA,EAAQpL,EAAQ,IAIjBoM,KAAKyd,EAAWE,EAAW,CAC7GD,GAAMF,EAAYA,EAAUld,MAAM+c,EAASC,GAAc,KAAK9L,OAClE,GAPwC,IAAU6L,EAASC,EAAYC,EAAGC,CAmH1E,EACA4G,EAAoBtrB,UAAUqrB,UAAY,SAAUpB,GAEhD,YADyB,IAArBA,IAA0BA,EAAc,IACrC,IAAID,GAAYjsB,KAAK0nB,IAAK1nB,KAAK4nB,MAAQ5nB,KAAK+nB,YAAYrC,IAAgBwG,EAAc,GACjG,EACAqB,EAAoBtrB,UAAU3E,QAAU,SAAUshB,GAE9C,OADAU,GAAAA,eAAwBV,GACjB,IAAI2O,EAAoBvtB,KAAK0nB,IAAK1nB,KAAK4nB,MAAOhJ,EAAY5e,KAAK8nB,eAC1E,EACOyF,CACX,CAlF2B,CAkFzB1C,ICvIS8C,GAAU,CACjBxW,GAAI,SAAU1F,GACV,OAAO,IAAI4Q,GAAaD,GAAAA,GAA2B,CAAC3Q,GACxD,EACAkR,IAAK,SAAUlR,GACX,OAAO,IAAI4Q,GAAaD,GAAAA,IAA4B,CAAC3Q,GACzD,EACA2F,GAAI,SAAU3F,GACV,OAAO,IAAI4Q,GAAaD,GAAAA,GAA2B,CAAC3Q,GACxD,EACA4F,IAAK,SAAU5F,GACX,OAAO,IAAI4Q,GAAaD,GAAAA,IAA4B,CAAC3Q,GACzD,EACA6F,GAAI,SAAU7F,GACV,OAAO,IAAI4Q,GAAaD,GAAAA,GAA2B,CAAC3Q,GACxD,EACA8F,IAAK,SAAU9F,GACX,OAAO,IAAI4Q,GAAaD,GAAAA,IAA4B,CAAC3Q,GACzD,EACAuR,GAAI,SAAUvR,GACV,OAAO,IAAI4Q,GAAaD,GAAAA,GAA2B3Q,EACvD,EACAwR,IAAK,SAAUxR,GACX,OAAO,IAAI4Q,GAAaD,GAAAA,IAA4B3Q,EACxD,EACAmc,IAAK,SAAUnc,GACX,OAAO,IAAI4Q,GAAaD,GAAAA,IAA4B3Q,EACxD,EACAoc,UAAW,SAAUpc,GACjB,OAAO,IAAI4Q,GAAaD,GAAAA,WAAmC,CAAC3Q,GAChE,EACAqc,OAAQ,SAAUrc,GACd,OAAO,IAAI4Q,GAAaD,GAAAA,OAA+B,CAAC3Q,GAC5D,EACAsc,KAAM,SAAUtc,GACZ,OAAO,IAAI4Q,GAAaD,GAAAA,KAA6B,CAAC3Q,GAC1D,EACAuc,IAAK,WACD,OACW,IAAI3L,GAAaD,GAAAA,IADJ,GAApBtT,UAAUzJ,OAC0C,CAACyJ,UAAU,IAC3C,GAApBA,UAAUzJ,OAC0C,CAAC,CAACyJ,UAAU,GAAIA,UAAU,KAC9BA,UACxD,EACAoU,QAAS,SAAUzR,GACf,OAAO,IAAI4Q,GAAaD,GAAAA,SAAiC,CAAC3Q,GAC9D,EACA8R,UAAW,SAAU9R,GACjB,OAAO,IAAI4Q,GAAaD,GAAAA,WAAmC,CAAC3Q,GAChE,EACAiS,cAAe,SAAUjS,GACrB,OAAO,IAAI4Q,GAAaD,GAAAA,eAAuC,CAAC3Q,GACpE,EACAoQ,IAAK,WAED,IADA,IAAIC,EAAkB,GACb3c,EAAK,EAAGA,EAAK2J,UAAUzJ,OAAQF,IACpC2c,EAAgB3c,GAAM2J,UAAU3J,GAEpC,IAAI4c,EAAcvkB,EAAQsR,UAAU,IAAMA,UAAU,GAAKvR,MAAMykB,KAAKlT,WACpE,OAAO,IAAI2S,GAAaR,GAAAA,IAA4Bc,EACxD,EACAkM,IAAK,WAED,IADA,IAAInM,EAAkB,GACb3c,EAAK,EAAGA,EAAK2J,UAAUzJ,OAAQF,IACpC2c,EAAgB3c,GAAM2J,UAAU3J,GAEpC,IAAI4c,EAAcvkB,EAAQsR,UAAU,IAAMA,UAAU,GAAKvR,MAAMykB,KAAKlT,WACpE,OAAO,IAAI2S,GAAaR,GAAAA,IAA4Bc,EACxD,EACAG,GAAI,WAEA,IADA,IAAIJ,EAAkB,GACb3c,EAAK,EAAGA,EAAK2J,UAAUzJ,OAAQF,IACpC2c,EAAgB3c,GAAM2J,UAAU3J,GAEpC,IAAI4c,EAAcvkB,EAAQsR,UAAU,IAAMA,UAAU,GAAKvR,MAAMykB,KAAKlT,WACpE,OAAO,IAAI2S,GAAaR,GAAAA,GAA2Bc,EACvD,EACAmM,IAAK,WAED,IADA,IAAIpM,EAAkB,GACb3c,EAAK,EAAGA,EAAK2J,UAAUzJ,OAAQF,IACpC2c,EAAgB3c,GAAM2J,UAAU3J,GAEpC,IAAI4c,EAAcvkB,EAAQsR,UAAU,IAAMA,UAAU,GAAKvR,MAAMykB,KAAKlT,WACpE,OAAO,IAAI2S,GAAaR,GAAAA,IAA4Bc,EACxD,EACAmG,IAAK,SAAUzW,GACX,OAAO,IAAIyP,GAAc9B,GAAAA,IAA6B,CAAC3N,GAC3D,EACAuX,OAAQ,WACJ,OAAO,IAAI9H,GAAc9B,GAAAA,OAAgC,GAC7D,EACA+O,IAAK,SAAU1c,GACX,OAAO,IAAIyP,GAAc9B,GAAAA,IAA6B,CAAC3N,GAC3D,EACA2c,IAAK,SAAU3c,GACX,OAAO,IAAIyP,GAAc9B,GAAAA,IAA6B,CAAC3N,GAC3D,EACApB,KAAM,WAEF,IADA,IAIIge,EAJAxf,EAAO,GACF1J,EAAK,EAAGA,EAAK2J,UAAUzJ,OAAQF,IACpC0J,EAAK1J,GAAM2J,UAAU3J,GAGzB,GAAIoU,EAAS1K,EAAK,KAAOA,EAAK,GAAGgJ,eAAe,QAAS,CACrDwW,EAAS,CAAC,EACV,IAAI/wB,EAAUuR,EAAK,QACEjP,IAAjBtC,EAAQgxB,OACRD,EAAc,MAAI/wB,EAAQgxB,WAEL1uB,IAArBtC,EAAQixB,WACRF,EAAkB,UAAI/wB,EAAQixB,eAEb3uB,IAAjBtC,EAAQ6vB,OACRkB,EAAc,MAAI/wB,EAAQ6vB,WAERvtB,IAAlBtC,EAAQ6E,QACRksB,EAAe,OAAI/wB,EAAQ6E,MAEnC,MAEIksB,EADK7wB,EAAQqR,EAAK,IACTA,EAAK,GAGLtR,MAAMykB,KAAKnT,GAExB,OAAO,IAAIqS,GAAc9B,GAAAA,KAA8BiP,EAC3D,EACAG,KAAM,SAAUH,GACZ,OAAO,IAAInN,GAAc9B,GAAAA,KAA8BiP,EAC3D,EACAI,QAAS,SAAUJ,GACf,OAAO,IAAInN,GAAc9B,GAAAA,SAAkCiP,EAC/D,EACA9mB,IAAK,WACD,OAAO,IAAI2Z,GAAc9B,GAAAA,IAA6B,GAC1D,EACAnU,MAAO,WACH,OAAO,IAAIiW,GAAc9B,GAAAA,MAA+B,GAC5D,EACAvR,QAAS,WAEL,IADA,IAAI6gB,EAAa,GACRvpB,EAAK,EAAGA,EAAK2J,UAAUzJ,OAAQF,IACpCupB,EAAWvpB,GAAM2J,UAAU3J,GAE/B,IAAIkpB,EAAS7wB,EAAQsR,UAAU,IAAMA,UAAU,GAAKvR,MAAMykB,KAAKlT,WAC/D,OAAO,IAAIoS,GAAc9B,GAAAA,QAAiCiP,EAC9D,EACAM,SAAU,SAAUN,GAChB,OAAO,IAAInN,GAAc9B,GAAAA,WAAoCiP,EACjE,EACAO,OAAQ,SAAUP,GACd,OAAO,IAAInN,GAAc9B,GAAAA,OAAgC,CAACiP,GAC9D,EACAQ,IAAK,SAAUR,GACX,OAAO,IAAInN,GAAc9B,GAAAA,IAA6B,CAACiP,GAC3D,EACAS,IAAK,SAAUT,GACX,OAAO,IAAInN,GAAc9B,GAAAA,IAA6B,CAACiP,GAC3D,EACAU,IAAK,SAAUV,GACX,OAAO,IAAInN,GAAc9B,GAAAA,IAA6B,CAACiP,GAC3D,EACAW,KAAM,SAAUX,GACZ,MAAO,CACHY,MAAOZ,EAEf,EACAa,WAAY,SAAUC,GAClB,MAAO,CACHC,YAAaD,EAErB,EACAvlB,KAAM,SAAUykB,GACZ,MvB/KmD,WAAf/U,EuB+KvB+U,GACF,CACHgB,QAAShB,EAAO9Z,QAIb,CACH8a,QAAShB,EAAO9Z,OAChB+a,UAAWjB,EAAOkB,SAClBC,eAAgBnB,EAAOoB,cACvBC,oBAAqBrB,EAAOsB,mBAGxC,EACArC,UAAW,CACPvsB,SAAU,WACN,OAAO,IAAIkrB,EACf,EACAvM,IAAK,SAAUE,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtE4N,IAAK,SAAU5N,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtEiQ,KAAM,SAAUjQ,GAAS,OAAO,IAAIgQ,GAAoB,OAAQhQ,EAAQ,EACxEkQ,OAAQ,SAAUlQ,GAAS,OAAO,IAAIgQ,GAAoB,SAAUhQ,EAAQ,EAC5EmQ,IAAK,SAAUnQ,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtE1L,MAAO,SAAU0L,GAAS,OAAO,IAAIgQ,GAAoB,QAAShQ,EAAQ,EAC1EoQ,GAAI,SAAUpQ,GAAS,OAAO,IAAIgQ,GAAoB,KAAMhQ,EAAQ,EACpE3K,IAAK,SAAU2K,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtEqQ,MAAO,SAAUrQ,GAAS,OAAO,IAAIgQ,GAAoB,QAAShQ,EAAQ,EAC1EoO,IAAK,SAAUpO,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtEsQ,SAAU,SAAUtQ,GAAS,OAAO,IAAIgQ,GAAoB,WAAYhQ,EAAQ,EAChFuQ,IAAK,SAAUvQ,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtEwQ,KAAM,SAAUxQ,GAAS,OAAO,IAAIgQ,GAAoB,OAAQhQ,EAAQ,EACxEyQ,SAAU,SAAUzQ,GAAS,OAAO,IAAIgQ,GAAoB,WAAYhQ,EAAQ,EAChF0Q,MAAO,SAAU1Q,GAAS,OAAO,IAAIgQ,GAAoB,QAAShQ,EAAQ,EAC1E2Q,YAAa,SAAU3Q,GAAS,OAAO,IAAIgQ,GAAoB,cAAehQ,EAAQ,EACtF4Q,cAAe,SAAU5Q,GAAS,OAAO,IAAIgQ,GAAoB,gBAAiBhQ,EAAQ,EAC1F6Q,aAAc,SAAU7Q,GAAS,OAAO,IAAIgQ,GAAoB,eAAgBhQ,EAAQ,EACxF1hB,OAAQ,SAAU0hB,GAAS,OAAO,IAAIgQ,GAAoB,SAAUhQ,EAAQ,EAC5EoD,GAAI,SAAUpD,GAAS,OAAO,IAAIgQ,GAAoB,KAAMhQ,EAAQ,EACpE8Q,aAAc,SAAU9Q,GAAS,OAAO,IAAIgQ,GAAoB,eAAgBhQ,EAAQ,EACxFpiB,QAAS,SAAUoiB,GAAS,OAAO,IAAIgQ,GAAoB,UAAWhQ,EAAQ,EAC9EniB,IAAK,SAAUmiB,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtE+Q,MAAO,SAAU/Q,GAAS,OAAO,IAAIgQ,GAAoB,QAAShQ,EAAQ,EAC1EqL,OAAQ,SAAUrL,GAAS,OAAO,IAAIgQ,GAAoB,SAAUhQ,EAAQ,EAC5EgR,aAAc,SAAUhR,GAAS,OAAO,IAAIgQ,GAAoB,eAAgBhQ,EAAQ,EACxFmO,KAAM,SAAUnO,GAAS,OAAO,IAAIgQ,GAAoB,OAAQhQ,EAAQ,EACxEzd,MAAO,SAAUyd,GAAS,OAAO,IAAIgQ,GAAoB,QAAShQ,EAAQ,EAC1EiR,IAAK,SAAUjR,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtEiC,IAAK,SAAUjC,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtEsO,IAAK,SAAUtO,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtEsC,GAAI,SAAUtC,GAAS,OAAO,IAAIgQ,GAAoB,KAAMhQ,EAAQ,EACpEkR,IAAK,SAAUlR,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtEzI,GAAI,SAAUyI,GAAS,OAAO,IAAIgQ,GAAoB,KAAMhQ,EAAQ,EACpEtI,GAAI,SAAUsI,GAAS,OAAO,IAAIgQ,GAAoB,KAAMhQ,EAAQ,EACpErI,IAAK,SAAUqI,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtExI,GAAI,SAAUwI,GAAS,OAAO,IAAIgQ,GAAoB,KAAMhQ,EAAQ,EACpEvI,IAAK,SAAUuI,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtE+C,IAAK,SAAU/C,GAAS,OAAO,IAAIgQ,GAAoB,KAAMhQ,EAAQ,EACrEmR,KAAM,SAAUnR,GAAS,OAAO,IAAIgQ,GAAoB,OAAQhQ,EAAQ,EACxEoR,OAAQ,SAAUpR,GAAS,OAAO,IAAIgQ,GAAoB,SAAUhQ,EAAQ,EAC5EqR,OAAQ,SAAUrR,GAAS,OAAO,IAAIgQ,GAAoB,SAAUhQ,EAAQ,EAC5EsR,cAAe,SAAUtR,GAAS,OAAO,IAAIgQ,GAAoB,gBAAiBhQ,EAAQ,EAC1FuR,eAAgB,SAAUvR,GAAS,OAAO,IAAIgQ,GAAoB,iBAAkBhQ,EAAQ,EAC5FwR,WAAY,SAAUxR,GAAS,OAAO,IAAIgQ,GAAoB,aAAchQ,EAAQ,EACpFyR,UAAW,SAAUzR,GAAS,OAAO,IAAIgQ,GAAoB,YAAahQ,EAAQ,EAClF0R,UAAW,SAAU1R,GAAS,OAAO,IAAIgQ,GAAoB,YAAahQ,EAAQ,EAClF2R,aAAc,SAAU3R,GAAS,OAAO,IAAIgQ,GAAoB,eAAgBhQ,EAAQ,EACxF4R,QAAS,SAAU5R,GAAS,OAAO,IAAIgQ,GAAoB,UAAWhQ,EAAQ,EAC9E6R,YAAa,SAAU7R,GAAS,OAAO,IAAIgQ,GAAoB,cAAehQ,EAAQ,EACtF8R,YAAa,SAAU9R,GAAS,OAAO,IAAIgQ,GAAoB,cAAehQ,EAAQ,EACtF+R,OAAQ,SAAU/R,GAAS,OAAO,IAAIgQ,GAAoB,SAAUhQ,EAAQ,EAC5EgS,MAAO,SAAUhS,GAAS,OAAO,IAAIgQ,GAAoB,QAAShQ,EAAQ,EAC1EiS,OAAQ,SAAUjS,GAAS,OAAO,IAAIgQ,GAAoB,SAAUhQ,EAAQ,EAC5EkS,KAAM,SAAUlS,GAAS,OAAO,IAAIgQ,GAAoB,OAAQhQ,EAAQ,EACxEmS,KAAM,SAAUnS,GAAS,OAAO,IAAIgQ,GAAoB,OAAQhQ,EAAQ,EACxEoS,KAAM,SAAUpS,GAAS,OAAO,IAAIgQ,GAAoB,OAAQhQ,EAAQ,EACxEqS,QAAS,SAAUrS,GAAS,OAAO,IAAIgQ,GAAoB,UAAWhQ,EAAQ,EAC9EsS,aAAc,SAAUtS,GAAS,OAAO,IAAIgQ,GAAoB,eAAgBhQ,EAAQ,EACxFuS,cAAe,SAAUvS,GAAS,OAAO,IAAIgQ,GAAoB,gBAAiBhQ,EAAQ,EAC1FwS,gBAAiB,SAAUxS,GAAS,OAAO,IAAIgQ,GAAoB,kBAAmBhQ,EAAQ,EAC9FyS,eAAgB,SAAUzS,GAAS,OAAO,IAAIgQ,GAAoB,iBAAkBhQ,EAAQ,EAC5F0S,cAAe,SAAU1S,GAAS,OAAO,IAAIgQ,GAAoB,gBAAiBhQ,EAAQ,EAC1F2S,UAAW,SAAU3S,GAAS,OAAO,IAAIgQ,GAAoB,YAAahQ,EAAQ,EAClF4S,gBAAiB,SAAU5S,GAAS,OAAO,IAAIgQ,GAAoB,kBAAmBhQ,EAAQ,EAC9F6S,YAAa,SAAU7S,GAAS,OAAO,IAAIgQ,GAAoB,cAAehQ,EAAQ,EACtF8S,SAAU,SAAU9S,GAAS,OAAO,IAAIgQ,GAAoB,WAAYhQ,EAAQ,EAChFthB,OAAQ,SAAUshB,GAAS,OAAO,IAAIgQ,GAAoB,SAAUhQ,EAAQ,EAC5E+S,aAAc,SAAU/S,GAAS,OAAO,IAAIgQ,GAAoB,eAAgBhQ,EAAQ,EACxFgT,aAAc,SAAUhT,GAAS,OAAO,IAAIgQ,GAAoB,eAAgBhQ,EAAQ,EACxFiT,UAAW,SAAUjT,GAAS,OAAO,IAAIgQ,GAAoB,YAAahQ,EAAQ,EAClFtY,MAAO,SAAUsY,GAAS,OAAO,IAAIgQ,GAAoB,QAAShQ,EAAQ,EAC1EkT,YAAa,SAAUlT,GAAS,OAAO,IAAIgQ,GAAoB,cAAehQ,EAAQ,EACtFmT,SAAU,SAAUnT,GAAS,OAAO,IAAIgQ,GAAoB,WAAYhQ,EAAQ,EAChFoT,WAAY,SAAUpT,GAAS,OAAO,IAAIgQ,GAAoB,aAAchQ,EAAQ,EACpFnL,OAAQ,SAAUmL,GAAS,OAAO,IAAIgQ,GAAoB,SAAUhQ,EAAQ,EAC5EqT,YAAa,SAAUrT,GAAS,OAAO,IAAIgQ,GAAoB,cAAehQ,EAAQ,EACtFsT,SAAU,SAAUtT,GAAS,OAAO,IAAIgQ,GAAoB,WAAYhQ,EAAQ,EAChFuT,QAAS,SAAUvT,GAAS,OAAO,IAAIgQ,GAAoB,UAAWhQ,EAAQ,EAC9EwT,QAAS,SAAUxT,GAAS,OAAO,IAAIgQ,GAAoB,UAAWhQ,EAAQ,EAC9EyT,KAAM,SAAUzT,GAAS,OAAO,IAAIgQ,GAAoB,OAAQhQ,EAAQ,EACxE+O,SAAU,SAAU/O,GAAS,OAAO,IAAIgQ,GAAoB,WAAYhQ,EAAQ,EAChF0T,IAAK,SAAU1T,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtE2T,MAAO,SAAU3T,GAAS,OAAO,IAAIgQ,GAAoB,QAAShQ,EAAQ,EAC1E4T,KAAM,SAAU5T,GAAS,OAAO,IAAIgQ,GAAoB,OAAQhQ,EAAQ,EACxEkP,IAAK,SAAUlP,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtEmP,IAAK,SAAUnP,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtEvP,KAAM,SAAUuP,GAAS,OAAO,IAAIgQ,GAAoB,OAAQhQ,EAAQ,EACxE6T,UAAW,SAAU7T,GAAS,OAAO,IAAIgQ,GAAoB,YAAahQ,EAAQ,EAClF8T,WAAY,SAAU9T,GAAS,OAAO,IAAIgQ,GAAoB,aAAchQ,EAAQ,EACpF+T,IAAK,SAAU/T,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,EACtEgU,IAAK,SAAUhU,GAAS,OAAO,IAAIgQ,GAAoB,MAAOhQ,EAAQ,GAE1EmN,QAAS,CACL5qB,MAAO,SAAUyd,GAAS,OAAO,IAAIiU,GAAmB,QAASjU,EAAQ,EACzEiO,UAAW,SAAUjO,GAAS,OAAO,IAAIiU,GAAmB,YAAajU,EAAQ,IAGrFgQ,GACA,SAA6B9tB,EAAM8d,GAC/B5f,KAAK,IAAM8B,GAAQ8d,CACvB,EAIAiU,GACA,SAA4B/xB,EAAM8d,GAC9B5f,KAAK,IAAM8B,GAAQ8d,CACvB,EC/SAkU,GAAc,WACd,SAASA,EAAWj3B,GAChB,IAAkC0C,QAAb,IAAZ1C,EAAgB,CAAC,EAAIA,GAAYyC,OAAQA,OAAqB,IAAZC,EAAgB,EAAIA,EAC/ES,KAAKV,OAASA,CAClB,CAeA,OAdAtB,OAAOsT,eAAewiB,EAAW7xB,UAAW,gBAAiB,CACzD8D,IAAK,WACD,OAAOoT,CACX,EACAhE,YAAY,EACZE,cAAc,IAElBye,EAAW7xB,UAAUrF,MAAQ,WACzB,MAAO,CACHm3B,iBAAkB,CACdz0B,OAAQU,KAAKV,QAGzB,EACOw0B,CACX,CApBkB,GAsBX,SAASE,GAAsBC,GAClC,OAAO,IAAIH,GAAWG,EAC1B,CCxBA,IAAI7mB,GAAU,WACV,SAASA,EAAOvQ,GACZ,IAAIq3B,EAASr3B,EAAGq3B,OAAQ52B,EAAUT,EAAGS,QACrC,IAAK42B,EACD,MAAM,IAAIpc,UAAU,2BAExB9X,KAAK9C,mBAAqB,CACtBE,QAAS82B,GAAU,GACnB52B,QAASA,GAAW,GAE5B,CAgBA,OAfA8P,EAAOnL,UAAUrF,MAAQ,WACrB,MAAO,CACHM,mBAAoB,CAChBE,QAAS4C,KAAK9C,mBAAmBE,QACjCE,QAAS0C,KAAK9C,mBAAmBI,SAG7C,EACAU,OAAOsT,eAAelE,EAAOnL,UAAW,gBAAiB,CACrD8D,IAAK,WACD,OAAOqT,CACX,EACAjE,YAAY,EACZE,cAAc,IAEXjI,CACX,CA3Bc,GA6BP,SAAS+mB,GAAkBvU,GAC9B,OAAO,IAAIxS,GAAOwS,EACtB,CChCA,IAAIvW,GAAwC,SAAUmd,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAI7nB,UAAU,SAAUsJ,EAASoB,GAC/C,SAASqd,EAAU7pB,GAAS,IAAM8pB,EAAKF,EAAUhM,KAAK5d,GAAS,CAAE,MAAOwH,GAAKgF,EAAOhF,EAAI,CAAE,CAC1F,SAASuiB,EAAS/pB,GAAS,IAAM8pB,EAAKF,EAAiB,MAAE5pB,GAAS,CAAE,MAAOwH,GAAKgF,EAAOhF,EAAI,CAAE,CAC7F,SAASsiB,EAAKrqB,GAJlB,IAAeO,EAIaP,EAAOoe,KAAOzS,EAAQ3L,EAAOO,QAJ1CA,EAIyDP,EAAOO,MAJhDA,aAAiB2pB,EAAI3pB,EAAQ,IAAI2pB,EAAE,SAAUve,GAAWA,EAAQpL,EAAQ,IAIjBoM,KAAKyd,EAAWE,EAAW,CAC7GD,GAAMF,EAAYA,EAAUld,MAAM+c,EAASC,GAAc,KAAK9L,OAClE,EACJ,EACIoM,GAA4C,SAAUP,EAAS3f,GAC/D,IAAsGuJ,EAAG4W,EAAGhJ,EAAGiJ,EAA3GvR,EAAI,CAAEwR,MAAO,EAAG9mB,KAAM,WAAa,GAAW,EAAP4d,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGmJ,KAAM,GAAIC,IAAK,IAChG,OAAOH,EAAI,CAAEtM,KAAM0M,EAAK,GAAI7R,MAAS6R,EAAK,GAAItM,OAAUsM,EAAK,IAAwB,mBAAX7M,SAA0ByM,EAAEzM,OAAOC,UAAY,WAAa,OAAOza,IAAM,GAAIinB,EACvJ,SAASI,EAAKvK,GAAK,OAAO,SAAUnP,GAAK,OACzC,SAAc8S,GACV,GAAIrQ,EAAG,MAAM,IAAI0H,UAAU,mCAC3B,KAAOmP,IAAMA,EAAI,EAAGxG,EAAG,KAAO/K,EAAI,IAAKA,OACnC,GAAItF,EAAI,EAAG4W,IAAMhJ,EAAY,EAARyC,EAAG,GAASuG,EAAU,OAAIvG,EAAG,GAAKuG,EAAS,SAAOhJ,EAAIgJ,EAAU,SAAMhJ,EAAE3c,KAAK2lB,GAAI,GAAKA,EAAErM,SAAWqD,EAAIA,EAAE3c,KAAK2lB,EAAGvG,EAAG,KAAK7F,KAAM,OAAOoD,EAE3J,OADIgJ,EAAI,EAAGhJ,IAAGyC,EAAK,CAAS,EAARA,EAAG,GAAQzC,EAAEjhB,QACzB0jB,EAAG,IACP,KAAK,EAAG,KAAK,EAAGzC,EAAIyC,EAAI,MACxB,KAAK,EAAc,OAAX/K,EAAEwR,QAAgB,CAAEnqB,MAAO0jB,EAAG,GAAI7F,MAAM,GAChD,KAAK,EAAGlF,EAAEwR,QAASF,EAAIvG,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/K,EAAE0R,IAAI7f,MAAOmO,EAAEyR,KAAK5f,MAAO,SACxC,QACI,MAAkByW,GAAZA,EAAItI,EAAEyR,MAAY9hB,OAAS,GAAK2Y,EAAEA,EAAE3Y,OAAS,KAAkB,IAAVob,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/K,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAV+K,EAAG,MAAczC,GAAMyC,EAAG,GAAKzC,EAAE,IAAMyC,EAAG,GAAKzC,EAAE,IAAM,CAAEtI,EAAEwR,MAAQzG,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAY/K,EAAEwR,MAAQlJ,EAAE,GAAI,CAAEtI,EAAEwR,MAAQlJ,EAAE,GAAIA,EAAIyC,EAAI,KAAO,CACpE,GAAIzC,GAAKtI,EAAEwR,MAAQlJ,EAAE,GAAI,CAAEtI,EAAEwR,MAAQlJ,EAAE,GAAItI,EAAE0R,IAAI/W,KAAKoQ,GAAK,KAAO,CAC9DzC,EAAE,IAAItI,EAAE0R,IAAI7f,MAChBmO,EAAEyR,KAAK5f,MAAO,SAEtBkZ,EAAK5Z,EAAKxF,KAAKmlB,EAAS9Q,EAC5B,CAAE,MAAOnR,GAAKkc,EAAK,CAAC,EAAGlc,GAAIyiB,EAAI,CAAG,CAAC,QAAW5W,EAAI4N,EAAI,CAAG,CACzD,GAAY,EAARyC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE1jB,MAAO0jB,EAAG,GAAKA,EAAG,QAAU,EAAG7F,MAAM,EAC9E,CAtBgDiM,CAAK,CAAC/J,EAAGnP,GAAK,CAAG,CAuBrE,EAOIymB,GAAe,WACf,SAASA,EAAYhW,GACjBpe,KAAK0nB,IAAMtJ,EACXpe,KAAKorB,SAAW1nB,GAAAA,cAAiB1D,KAAK0nB,IAAIplB,QAC1CtC,KAAK6I,SAAU,EACf7I,KAAKq0B,UAAW,EAChBr0B,KAAKs0B,QAAS,CAClB,CAwEA,OAvEAF,EAAYnyB,UAAUsyB,KAAO,WACzB,OAAOlrB,GAAUrJ,UAAW,OAAQ,EAAG,WACnC,IAAI/D,EACJ,OAAO8qB,GAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EAAG,MAAO,CAAC,EAAGlnB,KAAKorB,SAAStoB,KAhBzC,8BAiBQ,KAAK,EAED,IADA7G,EAAMY,EAAGuD,QACDC,KACJ,MAAMpE,EAIV,OAFA+D,KAAKs0B,QAAS,EACdt0B,KAAKf,IAAMhD,EAAIoD,cACR,CAAC,GAEpB,EACJ,EACJ,EACA+0B,EAAYnyB,UAAUuyB,WAAa,SAAUC,GACzC,IAAKA,EACD,MAAM,IAAIvrB,MAAM,+BAEpB,OAAO,IAAIqkB,GAAoBvtB,KAAK0nB,IAAK+M,EAAU,CAAC,EAAGz0B,KAAKf,IAChE,EACAm1B,EAAYnyB,UAAUyyB,iBAAmB,WACrC,OAAO10B,KAAKf,GAChB,EACAm1B,EAAYnyB,UAAU0yB,iBAAmB,WACrC,OAAO30B,KAAKorB,QAChB,EACAgJ,EAAYnyB,UAAU2yB,OAAS,WAC3B,OAAOvrB,GAAUrJ,UAAW,OAAQ,EAAG,WACnC,IAAI4f,EAAO3jB,EACX,OAAO8qB,GAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EAID,OAHAtH,EAAQ,CACJvgB,cAAeW,KAAKf,KAEjB,CAAC,EAAGe,KAAKorB,SAAStoB,KAjDpC,6BAiDiD8c,IAC1C,KAAK,EAED,IADA3jB,EAAMY,EAAGuD,QACDC,KACJ,MAAMpE,EAEV,OADA+D,KAAKq0B,UAAW,EACT,CAAC,EAAGp4B,GAEvB,EACJ,EACJ,EACAm4B,EAAYnyB,UAAU4yB,SAAW,SAAUC,GACvC,OAAOzrB,GAAUrJ,UAAW,OAAQ,EAAG,WACnC,IAAI4f,EAAO3jB,EACX,OAAO8qB,GAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EAID,OAHAtH,EAAQ,CACJvgB,cAAeW,KAAKf,KAEjB,CAAC,EAAGe,KAAKorB,SAAStoB,KApErC,4BAoEiD8c,IACzC,KAAK,EAED,IADA3jB,EAAMY,EAAGuD,QACDC,KACJ,MAAMpE,EAGV,OAFA+D,KAAK6I,SAAU,EACf7I,KAAK+0B,YAAcD,EACZ,CAAC,EAAG74B,GAEvB,EACJ,EACJ,EACOm4B,CACX,CAhFmB,GAkFZ,SAASY,KACZ,OAAO3rB,GAAUrJ,UAAW,OAAQ,EAAG,WACnC,IAAIi1B,EACJ,OAAOlO,GAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EAED,MAAO,CAAC,GADR+N,EAAc,IAAIb,GAAYp0B,OACPu0B,QAC3B,KAAK,EAED,OADA13B,EAAGuD,OACI,CAAC,EAAG60B,GAEvB,EACJ,EACJ,CACO,SAASC,GAAe5hB,EAAU6hB,GAErC,YADmB,IAAfA,IAAoBA,EAAQ,GACzB9rB,GAAUrJ,UAAW,OAAQ,EAAG,WACnC,IAAIi1B,EAAaG,EAAaC,EAASC,EACnC1vB,EAAQ5F,KACZ,OAAO+mB,GAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EAGD,OAFArqB,EAAGsqB,KAAK9W,KAAK,CAAC,EAAG,EAAC,CAAI,KAEf,CAAC,GADR4kB,EAAc,IAAIb,GAAYp0B,OACPu0B,QAC3B,KAAK,EAED,OADA13B,EAAGuD,OACI,CAAC,EAAGkT,EAAS2hB,IACxB,KAAK,EAED,GADAG,EAAcv4B,EAAGuD,QACW,IAAxB60B,EAAYpsB,QACZ,MAAMosB,EAAYF,YAEtB,MAAO,CAAC,EAAGE,EAAYL,UAC3B,KAAK,EAED,OADA/3B,EAAGuD,OACI,CAAC,EAAGg1B,GACf,KAAK,EAED,GADAC,EAAUx4B,EAAGuD,QACc,IAAvB60B,EAAYX,OACZ,MAAMe,EA2BV,OAzBAC,EAAoB,SAAUrmB,GAAS,OAAO5F,GAAUzD,OAAY,OAAQ,EAAG,WAE3E,OAAOmhB,GAAY/mB,KAAM,SAAUnD,GAC/B,OAAQA,EAAGqqB,OACP,KAAK,EACD,GAAO+N,EAAYpsB,SAAYosB,EAAYZ,SAAW,MAAO,CAAC,EAAG,GACjEx3B,EAAGqqB,MAAQ,EACf,KAAK,EAED,OADArqB,EAAGsqB,KAAK9W,KAAK,CAAC,EAAG,EAAC,CAAI,IACf,CAAC,EAAG4kB,EAAYJ,YAC3B,KAAK,EAGL,KAAK,EAED,OADQh4B,EAAGuD,OACJ,CAAC,EAAG,GACf,KAAK,EAAG,MAAM6O,EACd,KAAK,EACD,IAA4B,IAAxBgmB,EAAYpsB,QACZ,MAAMosB,EAAYF,YAEtB,MAAM9lB,EAElB,EACJ,EAAI,EACEkmB,GAAS,EACR,CAAC,EAAGG,EAAkBD,IADH,CAAC,EAAG,GAElC,KAAK,EACDx4B,EAAGuD,OACHvD,EAAGqqB,MAAQ,EACf,KAAK,EACD,OAAMmO,GAAWA,EAAQh1B,OAAS+Q,GAC3B,CAAC,EAAG8jB,GAAepxB,KAAK9D,KAApBk1B,CAA0B5hB,IAAY6hB,IADoC,CAAC,EAAG,GAE7F,KAAK,EAAG,MAAO,CAAC,EAAGt4B,EAAGuD,QACtB,KAAK,EAAG,MAAO,CAAC,EAAGk1B,EAAkBD,IACrC,KAAK,EAED,OADAx4B,EAAGuD,OACI,CAAC,EAAG,IACf,KAAK,GAAI,MAAO,CAAC,GAEzB,EACJ,EACJ,CChNA,IAAIm1B,GAAY,WACZ,SAASA,EAAS14B,GACd,IAAkC0C,QAAb,IAAZ1C,EAAgB,CAAC,EAAIA,GAAYgrB,GAAIA,OAAiB,IAAZtoB,EAAgB,GAAKA,EACxES,KAAK6nB,GAAKA,CACd,CAaA,OAZA7pB,OAAOsT,eAAeikB,EAAStzB,UAAW,gBAAiB,CACvD8D,IAAK,WACD,OAAOsT,CACX,EACAlE,YAAY,EACZE,cAAc,IAElBkgB,EAAStzB,UAAUrF,MAAQ,WACvB,MAAO,CACH44B,KAAMx1B,KAAK6nB,GAEnB,EACO0N,CACX,CAlBgB,GAoBT,SAASE,GAAoBxB,GAChC,OAAO,IAAIsB,GAAStB,EACxB,CCvBA,IAsCIvwB,GAAM,WACN,SAASA,EAAGpB,GACRtC,KAAKsC,OAASA,EACdtC,KAAK01B,IAAMA,EACX11B,KAAK21B,WAAa3B,GAClBh0B,KAAKyiB,QAAUkL,GACf3tB,KAAKoN,OAAS+mB,GACdn0B,KAAKu1B,SAAWE,GAChBz1B,KAAKg1B,iBAAmBA,GACxBh1B,KAAKk1B,eAAiBA,GACtBl1B,KAAK41B,aAAenU,GACpBzhB,KAAK61B,cAAgB3U,GACrBlhB,KAAK81B,aAAezT,EACxB,CAkCA,OAjCA3e,EAAGU,cAAgB,SAAU9B,GACzB,IAAIkB,EAAU,IAAIE,EAAGC,SAASrB,GAC1ByzB,EAAevyB,EAAQV,KAgB3B,OAfAU,EAAQV,KAAO,SAAUC,EAAQxG,GAE7B,IADA,IAAIsS,EAAO,GACF1J,EAAK,EAAGA,EAAK2J,UAAUzJ,OAAQF,IACpC0J,EAAK1J,EAAK,GAAK2J,UAAU3J,GAU7B,OARI5I,IACI+F,EAAO5D,WACPnC,EAAKmC,SAAW4D,EAAO5D,UAEvB4D,EAAO3D,WACPpC,EAAKoC,SAAW2D,EAAO3D,WAGxBo3B,EAAa10B,KAAKoI,MAAMssB,EApDS,SAAUhS,EAAI/B,EAAMgC,GACpE,GAAIA,GAA6B,IAArBlV,UAAUzJ,OAAc,IAAK,IAA4B0X,EAAxBnP,EAAI,EAAGqW,EAAIjC,EAAK3c,OAAYuI,EAAIqW,EAAGrW,KACxEmP,GAAQnP,KAAKoU,IACRjF,IAAIA,EAAKxf,MAAM0E,UAAUE,MAAMd,KAAK2gB,EAAM,EAAGpU,IAClDmP,EAAGnP,GAAKoU,EAAKpU,IAGrB,OAAOmW,EAAGzlB,OAAOye,GAAMxf,MAAM0E,UAAUE,MAAMd,KAAK2gB,GACtD,CA4CyD5O,CAAc,CAACpT,KAAM+C,EAAQxG,GApEhD,SAAU+d,EAAGwC,GAC/C,IAAIpC,EAAsB,mBAAXF,QAAyBF,EAAEE,OAAOC,UACjD,IAAKC,EAAG,OAAOJ,EACf,IAAmBrG,EAAY1P,EAA3BqJ,EAAI8M,EAAErZ,KAAKiZ,GAAOyC,EAAK,GAC3B,IACI,WAAmB,IAAXD,GAAgBA,KAAM,MAAQ7I,EAAIrG,EAAE+M,QAAQC,MAAMmC,EAAG1M,KAAK4D,EAAElX,MACxE,CACA,MAAOkS,GAAS1K,EAAI,CAAE0K,MAAOA,EAAS,CAAC,QAEnC,IACQgF,IAAMA,EAAE2G,OAASF,EAAI9M,EAAU,SAAI8M,EAAErZ,KAAKuM,EAClD,CAAC,QACS,GAAIrJ,EAAG,MAAMA,EAAE0K,KAAO,CACpC,CACA,OAAO8N,CACX,CAqD6FF,CAAOhO,IAAO,GACnG,EACOrL,CACX,EACAE,EAAGzB,UAAUuyB,WAAa,SAAUC,GAChC,IAAKA,EACD,MAAM,IAAIvrB,MAAM,+BAEpB,OAAO,IAAIqkB,GAAoBvtB,KAAMy0B,EACzC,EACA/wB,EAAGzB,UAAU+zB,iBAAmB,SAAUvB,GACtC,IACI12B,EAAS,CACT+B,eAAgB20B,GAEpB,OAJc/wB,EAAGU,cAAcpE,KAAKsC,QAIrBQ,KAAK,yBAA0B/E,EAClD,EACO2F,CACX,CAhDU,oBCtCVuyB,EAAArxB,QAAAhJ,QAAA,iDCAAq6B,EAAArxB,QAAAhJ,QAAA,yBCAAq6B,EAAArxB,QAAAhJ,QAAA,gBCCAs6B,EAAA,GAGA,SAAAC,EAAAC,GAEA,IAAAC,EAAAH,EAAAE,GACA,QAAAx2B,IAAAy2B,EACA,OAAAA,EAAAzxB,QAGA,IAAAqxB,EAAAC,EAAAE,GAAA,CAGAxxB,QAAA,IAOA,OAHA0xB,EAAAF,GAAA/0B,KAAA40B,EAAArxB,QAAAqxB,EAAAA,EAAArxB,QAAAuxB,GAGAF,EAAArxB,OACA,CCrBAuxB,EAAAxiB,EAAA,SAAA/O,EAAA2xB,GACA,QAAA34B,KAAA24B,EACAJ,EAAA7b,EAAAic,EAAA34B,KAAAu4B,EAAA7b,EAAA1V,EAAAhH,IACAI,OAAAsT,eAAA1M,EAAAhH,EAAA,CAAyCuX,YAAA,EAAApP,IAAAwwB,EAAA34B,IAGzC,ECPAu4B,EAAA7b,EAAA,SAAAoD,EAAA8Y,GAA8C,OAAAx4B,OAAAiE,UAAA4V,eAAAxW,KAAAqc,EAAA8Y,EAAA,ECC9CL,EAAAliB,EAAA,SAAArP,GACA,oBAAA4V,QAAAA,OAAAic,aACAz4B,OAAAsT,eAAA1M,EAAA4V,OAAAic,YAAA,CAAuD15B,MAAA,WAEvDiB,OAAAsT,eAAA1M,EAAA,cAAgD7H,OAAA,GAChD,ECHA,IAAA25B,EAAAP,EAAA","sources":["webpack://@cloudbase/js-sdk/index.ts/","webpack://@cloudbase/js-sdk/web.ts/","webpack://@cloudbase/js-sdk/common.ts/","webpack://@cloudbase/js-sdk/errors.ts/","webpack://@cloudbase/js-sdk/decorators.ts/","webpack://@cloudbase/js-sdk/abortController.ts/","webpack://@cloudbase/js-sdk/cache.ts/","webpack://@cloudbase/js-sdk/events.ts/","webpack://@cloudbase/js-sdk/langEvent.ts/","webpack://@cloudbase/js-sdk/util.ts/","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/constant.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/utils/symbol.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/helper/symbol.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/utils/type.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/geo/lineString.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/geo/polygon.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/geo/multiPoint.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/geo/multiLineString.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/geo/multiPolygon.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/util.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/const/code.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/utils/utils.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/validate.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/commands/update.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/geo/point.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/commands/logic.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/commands/query.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/operator-map.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/serializer/datatype.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/serializer/common.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/serializer/update.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/document.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/serializer/query.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/query.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/aggregate.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/collection.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/command.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/serverDate/index.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/regexp/index.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/transaction/index.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/ObjectId/index.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/index.js","webpack://@cloudbase/js-sdk/external commonjs2 {\"commonjs\":\"@cloudbase/adapter-interface\",\"commonjs2\":\"@cloudbase/adapter-interface\",\"amd\":\"@cloudbase/adapter-interface\",\"root\":\"@cloudbase/adapter-interface\"}","webpack://@cloudbase/js-sdk/external commonjs2 {\"commonjs\":\"bson\",\"commonjs2\":\"bson\",\"amd\":\"bson\",\"root\":\"bson\"}","webpack://@cloudbase/js-sdk/external commonjs2 {\"commonjs\":\"jwt-decode\",\"commonjs2\":\"jwt-decode\",\"amd\":\"jwt-decode\",\"root\":\"jwt-decode\"}","webpack://@cloudbase/js-sdk/webpack/bootstrap","webpack://@cloudbase/js-sdk/webpack/runtime/define property getters","webpack://@cloudbase/js-sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@cloudbase/js-sdk/webpack/runtime/make namespace object","webpack://@cloudbase/js-sdk/webpack/startup"],"sourcesContent":["import { Db } from '@cloudbase/database'\nimport { ICloudbase } from '@cloudbase/types'\nimport { ICloudbaseComponent } from '@cloudbase/types/component'\nimport cloudbaseNS from '../../index'\nimport { EJSON } from 'bson'\nimport { utils } from '@cloudbase/utilities'\n\ndeclare const cloudbase: ICloudbase\ndeclare type QueryType = 'WHERE' | 'DOC'\n\n/**\n * 数据库配置接口\n */\ninterface IDbConfig {\n /** 实例 ID(可选,默认 '(default)') */\n instance?: string\n /** 数据库名称(可选,默认 '(default)') */\n database?: string\n}\n\ninterface IBaseReq extends IDbConfig {\n collectionName: string\n transactionId?: string\n}\n\ninterface IDocumentsQueryReq extends IBaseReq {\n query?: any\n /** @deprecated 使用 query 替代 */\n queryType?: QueryType\n order?: string[]\n offset?: number\n limit?: number\n projection?: Object\n}\n\ninterface IDocumentsAddReq extends IBaseReq {\n data: Object | Object[]\n}\n\ninterface IDocumentsUpdateReq extends IBaseReq {\n query: Object\n data: Object\n /** 是否批量更新(默认 false) */\n multi?: boolean\n /** 把所有更新数据转为带操作符的 */\n merge?: boolean\n /** 不存在时是否创建(默认 false) */\n upsert?: boolean\n /** 是否替换整个文档(默认 false,为 true 时替换整个文档而非合并更新) */\n replaceMode?: boolean\n /** @deprecated 使用 query 替代 */\n queryType?: QueryType\n}\n\ninterface IDocumentsRemoveReq extends IBaseReq {\n query: Object\n /** 是否批量删除(默认 false) */\n multi?: boolean\n /** @deprecated 使用 query 替代 */\n queryType?: QueryType\n}\n\ninterface IDocumentsCountReq extends IBaseReq {\n query: Object\n /** @deprecated 使用 query 替代 */\n queryType?: QueryType\n}\n\ninterface ICommonRes<T> {\n data?: T & { code?: string }\n requestId: string\n code?: string\n message?: string\n}\n\ninterface IAddRes {\n /** 单条插入时返回的文档 ID(批量插入时不返回) */\n _id?: string\n /** 批量插入时返回的文档 ID 列表 */\n ids?: string[]\n insertedIds: string[]\n}\n\ninterface IRunCommandsReq {\n transactionId?: string\n /** 命令数组,方法会将其转为 MongoDB 原生命令(EJSON 对象格式) */\n commands: Object[]\n}\n\nconst COMPONENT_NAME = 'database'\n\nconst gateWayFunc = {\n /**\n * 过滤响应,移除不必要的字段,并统一把 data.code/data.message 提升到顶层。\n */\n filterRes <T>(res: ICommonRes<T> & { header?: any; statusCode?: number }): ICommonRes<T> {\n res = utils.promoteGatewayError(res)\n delete res.header\n delete res.statusCode\n return res\n },\n\n /**\n * 展开响应数据到顶层(用于事务等场景)\n */\n flattenResData <T>(res: ICommonRes<T>): any {\n if (typeof res.data === 'object' && res.data !== null) {\n const result = { ...res, ...res.data }\n delete result.data\n return result\n }\n return res\n },\n\n /**\n * 安全解析 EJSON\n */\n safeParseEJSON(data: any): any {\n if (typeof data !== 'string') return data\n try {\n return EJSON.parse(data)\n } catch {\n return data\n }\n },\n\n /**\n * 解析 2.0 引擎的 EJSON 字符串参数为纯 JSON 对象。\n *\n * 2.0 引擎的 query/data 等参数为 EJSON.stringify 产出的合法 JSON 字符串,\n * 直接 JSON.parse 即可让 $numberInt/$date/$regularExpression 等类型标记\n * 以纯对象形式保留(注意不能用 EJSON.parse——它会还原成 JS 值/实例,\n * 后续 JSON.stringify 会丢失类型标记)。\n *\n * 实测网关契约(RESTful):\n * - 入参 body:v2 严格模式($numberInt/$numberDouble/$date/$numberLong)均支持;\n * $regularExpression 写入返回 400(写入侧由 parseWriteParam 转 v1 兼容)\n * - 入参 URL query:v1/v2 均支持(含正则查询)\n * - 响应:一律严格模式(v2 编码),由上层 EJSON.parse 还原\n */\n parseEJSONParam(value: any): any {\n if (typeof value !== 'string') return value\n try {\n return JSON.parse(value)\n } catch {\n return value\n }\n },\n\n /**\n * 递归把 v2 的 $regularExpression 转为 v1 的 {$regex, $options}。\n *\n * 仅用于写入/更新的文档数据(data):实测网关 body 不接受 $regularExpression(400),\n * 而 v1 的 {$regex, $options} 可正常写入。查询条件(query)方向 v1/v2 均支持,\n * 不做转换。\n */\n toLegacyRegExp(value: any): any {\n if (!value || typeof value !== 'object') return value\n if (value.$regularExpression && typeof value.$regularExpression === 'object') {\n const { pattern, options } = value.$regularExpression\n return { $regex: pattern, $options: options }\n }\n if (Array.isArray(value)) {\n return value.map(item => gateWayFunc.toLegacyRegExp(item))\n }\n const ret: any = {}\n for (const key in value) {\n ret[key] = gateWayFunc.toLegacyRegExp(value[key])\n }\n return ret\n },\n\n /**\n * 解析写入类参数(文档数据):JSON.parse 保留类型标记后,\n * 仅把 v2 正则转 v1——只用于 insert 路径(实测网关 POST 写入只认 v1 正则;\n * PATCH 更新路径相反,只认 v2,见 modifyDocument 注释)\n */\n parseWriteParam(value: any): any {\n return gateWayFunc.toLegacyRegExp(gateWayFunc.parseEJSONParam(value))\n },\n\n /**\n * 构建 URL 查询参数\n */\n buildQueryParams(params: Record<string, any>): string {\n return Object.entries(params)\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .filter(([_, value]) => value !== undefined && value !== null && value !== '')\n .map(([key, value]) => {\n const stringValue = typeof value === 'object' ? JSON.stringify(value) : String(value)\n return `${encodeURIComponent(key)}=${encodeURIComponent(stringValue)}`\n })\n .join('&')\n },\n\n /**\n * 获取 URL 前缀\n */\n getUrlPrefix(data: IDbConfig): string {\n const instance = data?.instance || '(default)'\n const database = data?.database || '(default)'\n return `/database/instances/${instance}/databases/${database}`\n },\n\n async 'database.queryDocument'(data: IDocumentsQueryReq, customReqOpts?: any,): Promise<ICommonRes<{ offset?: number; limit?: number; list: any[] }>> {\n const isQueryDoc = !!data.query?._id?.$eq\n const queryParams = gateWayFunc.buildQueryParams({\n projection: data.projection,\n transactionId: data.transactionId,\n ...(isQueryDoc\n ? {}\n : {\n offset: data.offset ?? 0,\n limit: data.limit ?? 100,\n order: data.order,\n query: data.query ? EJSON.stringify(data.query, { relaxed: false }) : undefined,\n }),\n })\n\n let url = `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents?${queryParams}`\n\n // 查询单个文档\n if (isQueryDoc) {\n url = `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents/${\n data.query._id?.$eq || data.query._id\n }?${queryParams}`\n }\n\n let res = await this.gateWay({\n url,\n method: 'GET',\n }, customReqOpts)\n\n // 尝试解析 EJSON 格式的数据\n res.data = gateWayFunc.safeParseEJSON(JSON.stringify(res.data))\n\n if (isQueryDoc && !res.code && !res.data?.code) {\n return {\n ...res,\n data: { list: [res.data] }\n }\n }\n\n // 确保 res.data.list 为数组,兼容后端返回数据或直接返回文档数组的情况\n if (!res.code && !res.data?.code) {\n if (Array.isArray(res.data)) {\n // 后端直接返回文档数组\n res = { ...res, data: { list: res.data } }\n } else if (res.data && !Array.isArray(res.data.list)) {\n // 后端返回对象但缺少 list 字段\n res = { ...res, data: { ...res.data, list: [] } }\n }\n } else {\n res = { ...res, data: { ...res.data, list: [] } }\n }\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.addDocument'(data: IDocumentsAddReq, customReqOpts?: any): Promise<ICommonRes<IAddRes>> {\n let res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents`,\n method: 'POST',\n data: {\n data: Array.isArray(data.data) ? data.data : [data.data],\n ...(data.transactionId && { transactionId: data.transactionId }),\n },\n }, customReqOpts)\n\n if (Array.isArray(data.data)) {\n // 数组模式(批量插入),返回 ids 列表\n res = {\n ...res,\n data: {\n ids: res.data?.insertedIds || [],\n ...res.data,\n },\n }\n } else if (res.data?.insertedIds?.[0]) {\n // 非数组模式(单条插入),将 _id 提升到顶层\n res = {\n ...res,\n data: {\n _id: res.data.insertedIds[0],\n ...res.data,\n },\n }\n }\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.updateDocument'(data: IDocumentsUpdateReq, customReqOpts?: any,): Promise<ICommonRes<{ matched: number; updated: number; upsert_id: string }>> {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents`,\n method: 'PATCH',\n data: {\n query: data.query,\n data: data.data,\n multi: !!data.multi,\n upsert: !!data.upsert,\n replaceMode: !!data.replaceMode,\n ...(data.transactionId && { transactionId: data.transactionId }),\n },\n }, customReqOpts)\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.deleteDocument'(data: IDocumentsRemoveReq, customReqOpts?: any): Promise<ICommonRes<{ deleted: number }>> {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents/remove`,\n method: 'POST',\n data: {\n query: data.query,\n multi: !!data.multi,\n ...(data.transactionId && { transactionId: data.transactionId }),\n },\n }, customReqOpts)\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.countDocument'(data: IDocumentsCountReq, customReqOpts?: any): Promise<ICommonRes<{ total: number }>> {\n const queryParams = gateWayFunc.buildQueryParams({\n count: true,\n query: data.query ? EJSON.stringify(data.query, { relaxed: false }) : undefined,\n })\n\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents?${queryParams}`,\n method: 'GET',\n }, customReqOpts)\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.addCollection'(data: { collectionName: string } & IDbConfig, customReqOpts?: any): Promise<ICommonRes<''>> {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections`,\n method: 'POST',\n data: { collectionName: data.collectionName },\n }, customReqOpts)\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.aggregate'(data: { collectionName: string; stages: { stageKey: string; stageValue: any }[] } & IDbConfig, customReqOpts?: any,): Promise<ICommonRes<{ list: string }>> {\n const pipeline = data.stages.map((stage) => {\n try {\n // stageValue 可能是字符串或对象,统一处理\n const value = typeof stage.stageValue === 'string' ? JSON.parse(stage.stageValue) : stage.stageValue\n return {\n [stage.stageKey]: EJSON.serialize(value),\n }\n } catch {\n return { [stage.stageKey]: stage.stageValue }\n }\n })\n\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents/aggregations`,\n method: 'POST',\n data: { pipeline },\n }, customReqOpts)\n\n // 将结果列表转为字符串格式(兼容原有逻辑)\n if (Array.isArray(res.data?.list)) {\n res.data.list = JSON.stringify(res.data.list.map((item: any) => JSON.stringify(item)))\n }\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.startTransaction'(data: IDbConfig, customReqOpts?: any) {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/transactions`,\n method: 'POST',\n }, customReqOpts)\n\n return gateWayFunc.filterRes(gateWayFunc.flattenResData(res))\n },\n\n async 'database.commitTransaction'(data: { transactionId: string } & IDbConfig, customReqOpts?: any) {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/transactions/${data.transactionId}/commit`,\n method: 'POST',\n }, customReqOpts)\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.abortTransaction'(data: { transactionId: string } & IDbConfig, customReqOpts?: any) {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/transactions/${data.transactionId}/rollback`,\n method: 'POST',\n }, customReqOpts)\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.getInTransaction'(data: IDocumentsQueryReq, customReqOpts?: any) {\n const res = await gateWayFunc['database.queryDocument'].call(this, data, customReqOpts)\n\n if (typeof res.data === 'object' && res.data !== null) {\n if (res.data?.code) {\n return gateWayFunc.flattenResData(res)\n }\n return { ...res, data: JSON.stringify(res.data) as any }\n }\n\n return res\n },\n\n async 'database.updateDocInTransaction'(data: IDocumentsUpdateReq, customReqOpts?: any) {\n // 尝试解析 EJSON 格式的数据\n data.data = gateWayFunc.safeParseEJSON(data.data)\n\n const res = await gateWayFunc['database.updateDocument'].call(this, data, customReqOpts)\n return gateWayFunc.flattenResData(res)\n },\n\n async 'database.deleteDocInTransaction'(data: IDocumentsRemoveReq, customReqOpts?: any) {\n const res = await gateWayFunc['database.deleteDocument'].call(this, data, customReqOpts)\n return gateWayFunc.flattenResData(res)\n },\n\n async 'database.insertDocInTransaction'(data: IDocumentsAddReq, customReqOpts?: any,): Promise<ICommonRes<IAddRes & { inserted?: number }>> {\n // 尝试解析 EJSON 格式的数据\n data.data = gateWayFunc.safeParseEJSON(data.data)\n\n let res = await gateWayFunc['database.addDocument'].call(this, data, customReqOpts)\n\n if (typeof res.data === 'object' && res.data !== null) {\n const hasId = !!res.data?._id\n res = {\n ...res,\n inserted: hasId ? 1 : 0,\n ok: hasId ? 1 : 0,\n ...res.data,\n } as any\n } else {\n res = { inserted: 0, ok: 0, ...res } as any\n }\n\n delete res.data\n\n return res\n },\n\n async 'database.runCommands'(data: IRunCommandsReq & IDbConfig, customReqOpts?: any,): Promise<ICommonRes<{ list: Object[][] }>> {\n let res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/commands`,\n method: 'POST',\n data: {\n commands: EJSON.serialize(data.commands),\n ...(data.transactionId && { transactionId: data.transactionId }),\n },\n }, customReqOpts)\n\n if (typeof res.data === 'object' && res.data !== null) {\n res = { ...res, ...res.data }\n delete res.data\n delete res.request_id\n }\n\n // 尝试将结果转换为普通对象\n try {\n res = EJSON.deserialize(res)\n } catch {\n // 忽略转换失败\n }\n\n return gateWayFunc.filterRes(res)\n },\n\n // ===================== 2.0 引擎新接口名映射 =====================\n // @cloudbase/database 2.0 引擎使用新接口名(getDocument/insertDocument/...),\n // 且 query/data 等参数为 EJSON 字符串格式。这里统一适配后委托给上面的\n // 旧接口实现,保证 GATEWAY 模式下新旧引擎都能正确路由到 RESTful 网关。\n\n async 'database.getDocument'(data: IDocumentsQueryReq, customReqOpts?: any): Promise<ICommonRes<{ offset?: number; limit?: number; list: any[] }>> {\n // 2.0 引擎的 query/order/projection 为 EJSON 字符串,\n // 2.0 引擎的 query/order/projection 为 EJSON 字符串,解析为纯 JSON 对象\n // (查询方向 v2 网关支持,类型标记保持原样)\n const normalized: any = { ...data }\n normalized.query = gateWayFunc.parseEJSONParam(normalized.query)\n normalized.order = gateWayFunc.parseEJSONParam(normalized.order)\n normalized.projection = gateWayFunc.parseEJSONParam(normalized.projection)\n\n const res = await gateWayFunc['database.queryDocument'].call(this, normalized, customReqOpts)\n\n // 2.0 引擎期望 data.list 为 EJSON 字符串数组。\n // 注意:旧实现已将响应 EJSON.parse 成 JS 值(Date/BSONRegExp 等实例),\n // 必须用 EJSON.stringify 序列化以保留类型标记(JSON.stringify 会把\n // BSONRegExp 剥成裸 pattern/options、Date 转成 ISO 字符串,造成类型丢失)\n if (Array.isArray(res.data?.list)) {\n res.data.list = res.data.list.map((item: any) => EJSON.stringify(item, { relaxed: false }))\n }\n return res\n },\n\n async 'database.insertDocument'(data: IDocumentsAddReq, customReqOpts?: any): Promise<ICommonRes<IAddRes>> {\n // 2.0 引擎的 data 为 EJSON 字符串数组;\n // 写入口径:仅把 v2 正则转 v1($regex/$options),其余类型标记保持 v2\n const normalized: any = { ...data }\n normalized.data = Array.isArray(normalized.data)\n ? normalized.data.map((item: any) => gateWayFunc.parseWriteParam(item))\n : gateWayFunc.parseWriteParam(normalized.data)\n\n return gateWayFunc['database.addDocument'].call(this, normalized, customReqOpts)\n },\n\n async 'database.modifyDocument'(data: IDocumentsUpdateReq, customReqOpts?: any): Promise<ICommonRes<{ matched: number; updated: number; upsert_id: string }>> {\n const normalized: any = { ...data }\n // query 为查询条件:v1/v2 网关均支持,保持 v2 不转\n // data 为写入内容:同样保持 v2——实测网关 PATCH(更新)路径只认 v2 正则\n // (v1 的 $regex/$options 会被 MongoDB 当 $ 前缀字段拒绝存储),\n // 与 insert 路径(只认 v1)相反\n normalized.query = gateWayFunc.parseEJSONParam(normalized.query)\n normalized.data = gateWayFunc.parseEJSONParam(normalized.data)\n\n return gateWayFunc['database.updateDocument'].call(this, normalized, customReqOpts)\n },\n\n async 'database.removeDocument'(data: IDocumentsRemoveReq, customReqOpts?: any): Promise<ICommonRes<{ deleted: number }>> {\n const normalized: any = { ...data }\n normalized.query = gateWayFunc.parseEJSONParam(normalized.query)\n\n return gateWayFunc['database.deleteDocument'].call(this, normalized, customReqOpts)\n },\n\n async 'database.calculateDocument'(data: IDocumentsCountReq, customReqOpts?: any): Promise<ICommonRes<{ total: number }>> {\n const normalized: any = { ...data }\n normalized.query = gateWayFunc.parseEJSONParam(normalized.query)\n\n return gateWayFunc['database.countDocument'].call(this, normalized, customReqOpts)\n },\n\n async 'database.aggregateDocuments'(data: { collectionName: string; stages: { stageKey: string; stageValue: any }[] } & IDbConfig, customReqOpts?: any,): Promise<ICommonRes<{ list: any }>> {\n // stages 为查询语义(match 等),v2 标记保持原样\n const normalized: any = { ...data }\n if (Array.isArray(normalized.stages)) {\n normalized.stages = normalized.stages.map((stage: any) => ({\n ...stage,\n stageValue: gateWayFunc.parseEJSONParam(stage.stageValue)\n }))\n }\n const res = await gateWayFunc['database.aggregate'].call(this, normalized, customReqOpts)\n\n // 旧实现把 list 转成 JSON 大字符串(0.12.x 兼容格式),\n // 2.0 引擎期望 list 为字符串数组,还原之\n if (typeof res.data?.list === 'string') {\n try {\n res.data.list = JSON.parse(res.data.list)\n } catch {\n // 解析失败保持原样\n }\n }\n return res\n },\n}\n\nfunction database(dbConfig?: IDbConfig) {\n // 对齐 v3 node-sdk newDb 的参数校验:dbConfig 必须是普通对象,\n // undefined 视为默认空配置;string/array/null 等类型抛 INVALID_PARAM(同步)。\n if (\n dbConfig !== undefined\n && Object.prototype.toString.call(dbConfig).slice(8, -1) !== 'Object'\n ) {\n throw utils.createCloudbaseError({\n code: 'INVALID_PARAM',\n msg: 'dbConfig must be an object',\n }, (this.config as any)?.errorFactory)\n }\n\n const { adapter, runtime } = this.platform\n\n class Req extends this.request.constructor {\n constructor(config) {\n super(config)\n }\n\n async send(action: string, data: any, opts?: { timeout?: number }) {\n let res = null\n\n // 2.0 引擎的第三个参数为 getReqOpts(目前仅含 per-request timeout),\n // 转换为基础请求类的 customReqOpts 透传到底层 fetch(AbortController 超时)\n const customReqOpts\n = opts && typeof opts.timeout === 'number' ? { timeout: opts.timeout } : undefined\n\n if (this.config.endPointMode === 'GATEWAY' && gateWayFunc[action]) {\n res = await gateWayFunc[action].call(this, data, customReqOpts)\n } else {\n res = await super.send(action, data, undefined, customReqOpts)\n }\n\n // 统一 throw 开关(默认 true):抛原始业务码(DATABASE_COLLECTION_NOT_EXIST 等);\n // throw=false 时返回 {code,message,requestId} 让调用方用 if (res.code) 检查。\n // 优先读实例 config(_fromApp.config.throw,per-instance 且支持运行时 setThrowOnCode 联动),\n // 因为 this.config 是 database() 时的快照({...config} 展开),不会随 setThrowOnCode 更新。\n const shouldThrow = utils.resolveThrow((this.config as any)?._fromApp?.config ?? this.config)\n if (res && res.code && shouldThrow) {\n throw utils.createCloudbaseError({\n code: res.code,\n msg: res.message || (res.data && res.data.message) || '',\n requestId: res.requestId,\n }, (this.config as any)?.errorFactory)\n }\n\n return res\n }\n }\n\n Db.reqClass = Req\n // 未登录情况下传入空函数\n Db.getAccessToken = this.authInstance ? this.authInstance.getAccessToken.bind(this.authInstance) : () => ''\n Db.runtime = runtime\n if (this.wsClientClass) {\n Db.wsClass = adapter.wsClass\n Db.wsClientClass = this.wsClientClass\n }\n\n if (!Db.ws) {\n Db.ws = null\n }\n\n class NewDb extends Db {\n constructor(config?: IDbConfig) {\n super(config)\n }\n\n async runCommands(params: IRunCommandsReq): Promise<ICommonRes<{ list: Object[][] }>> {\n const request = Db.createRequest(this.config)\n\n return request.send('database.runCommands', params)\n }\n }\n\n return new NewDb({ ...this.config, _fromApp: this, ...dbConfig })\n}\n\nconst component: ICloudbaseComponent = {\n name: COMPONENT_NAME,\n entity: {\n database,\n },\n}\ntry {\n cloudbase.registerComponent(component)\n} catch (e) {}\n\nexport function registerDatabase(app: ICloudbase | typeof cloudbaseNS) {\n try {\n app.registerComponent(component)\n } catch (e) {\n console.warn(e)\n }\n}\n\ntry {\n (window as any).registerDatabase = registerDatabase\n} catch (e) {}\n","import {\n SDKAdapterInterface,\n AbstractSDKRequest,\n IRequestOptions,\n ResponseObject,\n IUploadRequestOptions,\n IRequestConfig,\n IRequestMethod,\n IFetchOptions,\n} from '@cloudbase/adapter-interface'\nimport { isFormData, formatUrl, toQueryString } from '../../libs/util'\nimport { getProtocol } from '../../constants/common'\n\n/**\n * @class WebRequest\n */\nclass WebRequest extends AbstractSDKRequest {\n // 默认不限超时\n private readonly timeout: number\n // 超时提示文案\n private readonly timeoutMsg: string\n // 超时受限请求类型,默认所有请求均受限\n private readonly restrictedMethods: Array<IRequestMethod>\n constructor(config: IRequestConfig) {\n super()\n const { timeout, timeoutMsg, restrictedMethods } = config\n this.timeout = timeout || 0\n this.timeoutMsg = timeoutMsg || '请求超时'\n this.restrictedMethods = restrictedMethods || ['get', 'post', 'upload', 'download']\n }\n public get(options: IRequestOptions): Promise<ResponseObject> {\n return this.request(\n {\n ...options,\n method: 'get',\n },\n this.restrictedMethods.includes('get'),\n )\n }\n public post(options: IRequestOptions): Promise<ResponseObject> {\n return this.request(\n {\n ...options,\n method: 'post',\n },\n this.restrictedMethods.includes('post'),\n )\n }\n public put(options: IRequestOptions): Promise<ResponseObject> {\n return this.request({\n ...options,\n method: 'put',\n })\n }\n public upload(options: IUploadRequestOptions): Promise<ResponseObject> {\n const { data, file, name, method, headers = {} } = options\n const reqMethod = { post: 'post', put: 'put' }[method?.toLowerCase()] || 'put'\n // 上传方式为post时,需转换为FormData\n const formData = new FormData()\n if (reqMethod === 'post') {\n Object.keys(data).forEach((key) => {\n formData.append(key, data[key])\n })\n formData.append('key', name)\n formData.append('file', file)\n return this.request(\n {\n ...options,\n data: formData,\n method: reqMethod,\n },\n this.restrictedMethods.includes('upload'),\n )\n }\n return this.request(\n {\n ...options,\n method: 'put',\n headers,\n body: file,\n },\n this.restrictedMethods.includes('upload'),\n )\n }\n public async download(options: IRequestOptions): Promise<any> {\n try {\n const { data } = await this.get({\n ...options,\n headers: {}, // 下载资源请求不经过service,header清空\n responseType: 'blob',\n })\n const url = window.URL.createObjectURL(new Blob([data]))\n const fileName = decodeURIComponent(new URL(options.url).pathname.split('/').pop() || '')\n const link = document.createElement('a')\n\n link.href = url\n link.setAttribute('download', fileName)\n link.style.display = 'none'\n\n document.body.appendChild(link)\n link.click()\n // 回收内存\n window.URL.revokeObjectURL(url)\n document.body.removeChild(link)\n } catch (e) {}\n return new Promise((resolve) => {\n resolve({\n statusCode: 200,\n tempFilePath: options.url,\n })\n })\n }\n async fetch(options: IFetchOptions & { shouldThrowOnError?: boolean }): Promise<ResponseObject> {\n const abortController = new AbortController()\n const { url, enableAbort = false, stream = false, signal, timeout: _timeout, shouldThrowOnError = true } = options\n\n const timeout = _timeout ?? this.timeout\n\n // FIXME(内存泄漏): { once: true } 只在 abort 事件【触发后】才解绑监听器。\n // 如果请求正常完成、从未 abort,该监听器会一直残留在外部 signal 上。\n // 当调用方复用同一长生命周期 signal 反复发请求时,监听器仍会持续累积。\n // 根治方式:在请求结束(finally)时 removeEventListener 主动解绑,\n // 而不能仅依赖 { once: true }。此处暂仅记录,不改动逻辑。\n if (signal) {\n if (signal.aborted) abortController.abort()\n signal.addEventListener('abort', () => abortController.abort())\n }\n\n let timer = null\n if (enableAbort && timeout) {\n timer = setTimeout(() => {\n console.warn(this.timeoutMsg)\n abortController.abort(new Error(this.timeoutMsg))\n }, timeout)\n }\n\n const res = await fetch(url, {\n ...options,\n signal: abortController.signal,\n })\n .then(async (response) => {\n clearTimeout(timer)\n if (shouldThrowOnError) {\n // 404 等等也会进 resolve,所以要再通过 ok 判断\n return response.ok ? response : Promise.reject(await response.json())\n }\n return response\n })\n .catch((x) => {\n clearTimeout(timer)\n // 传输级失败(网络中断、CORS 预检被拒、请求被 abort 等)时 fetch 会 reject,\n // 此时没有可解析的 Response。无论 shouldThrowOnError 取值都必须把真实错误抛出,\n // 否则 res 会变成 undefined,下方读取 res.headers 会抛出令人误解的\n // \"Cannot read properties of undefined (reading 'headers')\",掩盖真正的错误原因。\n return Promise.reject(x)\n })\n\n return {\n // eslint-disable-next-line no-nested-ternary\n data: stream ? res.body : res.headers.get('content-type')?.includes('application/json') ? res.json() : res.text(),\n statusCode: res.status,\n header: res.headers,\n // 透出原始 Response,便于上层按需 .blob() / .arrayBuffer() / 读取 body 流,避免二次包装。\n response: res,\n }\n }\n /**\n * @param {IRequestOptions} options\n * @param {boolean} enableAbort 是否超时中断请求\n */\n protected request(options: IRequestOptions, enableAbort = false): Promise<ResponseObject> {\n const method = String(options.method).toLowerCase() || 'get'\n return new Promise((resolve) => {\n const { url, headers = {}, data, responseType, withCredentials, body, onUploadProgress } = options\n const realUrl = formatUrl(getProtocol(), url, method === 'get' ? data : {})\n const ajax = new XMLHttpRequest()\n ajax.open(method, realUrl)\n responseType && (ajax.responseType = responseType)\n // 支持通过 AbortSignal 取消请求:已 abort 立即取消;否则用 { once: true }\n // 监听,触发后自动解绑,避免复用同一 AbortController 多次请求时累积监听器。\n //\n // FIXME(内存泄漏): { once: true } 只在 abort 事件【触发后】才解绑监听器。\n // 如果请求正常完成、从未 abort,该监听器会一直残留在外部 signal 上。\n // 当调用方复用同一长生命周期 signal 反复发请求时,监听器仍会持续累积。\n // 根治方式:在请求结束(readyState===4 / onloadend)时 removeEventListener\n // 主动解绑,而不能仅依赖 { once: true }。此处暂仅记录,不改动逻辑。\n const signal = (options as any).signal as AbortSignal | undefined\n if (signal) {\n if (signal.aborted) {\n ajax.abort()\n } else {\n signal.addEventListener('abort', () => ajax.abort(), { once: true })\n }\n }\n Object.keys(headers).forEach((key) => {\n ajax.setRequestHeader(key, headers[key])\n })\n let timer\n if (onUploadProgress) {\n ajax.upload.addEventListener('progress', onUploadProgress)\n }\n ajax.onreadystatechange = () => {\n const result: ResponseObject = {}\n if (ajax.readyState === 4) {\n const headers = ajax.getAllResponseHeaders()\n const arr = headers.trim().split(/[\\r\\n]+/)\n // Create a map of header names to values\n const headerMap = {}\n arr.forEach((line) => {\n const parts = line.split(': ')\n const header = parts.shift().toLowerCase()\n const value = parts.join(': ')\n headerMap[header] = value\n })\n result.header = headerMap\n result.statusCode = ajax.status\n try {\n // 上传post请求返回数据格式为xml,此处容错\n result.data = responseType === 'blob' ? ajax.response : JSON.parse(ajax.responseText)\n } catch (e) {\n result.data = responseType === 'blob' ? ajax.response : ajax.responseText\n }\n clearTimeout(timer)\n resolve(result)\n }\n }\n if (enableAbort && this.timeout) {\n timer = setTimeout(() => {\n console.warn(this.timeoutMsg)\n ajax.abort()\n }, this.timeout)\n }\n // 处理 payload\n let payload\n if (isFormData(data)) {\n // FormData,不处理\n payload = data\n } else if (headers['content-type'] === 'application/x-www-form-urlencoded') {\n payload = toQueryString(data)\n } else if (body) {\n payload = body\n } else {\n // 其它情况\n payload = data ? JSON.stringify(data) : undefined\n }\n\n if (withCredentials) {\n ajax.withCredentials = true\n }\n ajax.send(payload)\n })\n }\n}\n\nfunction genAdapter() {\n const adapter: SDKAdapterInterface & { type?: 'default' | '' } = {\n type: 'default',\n root: window,\n reqClass: WebRequest,\n wsClass: WebSocket,\n localStorage,\n }\n return adapter\n}\n\nexport { genAdapter, WebRequest }\n","let sdkName = '@cloudbase/js-sdk'\nexport function setSdkName(name: string) {\n sdkName = name\n}\nexport function getSdkName() {\n return sdkName\n}\n\nlet PROTOCOL = 'https:'\n\nexport function setProtocol(protocol: 'http:' | 'https:') {\n PROTOCOL = protocol\n}\n\nexport function getProtocol() {\n return PROTOCOL\n}\n// 是否为开发模式\nexport const IS_DEBUG_MODE = typeof process === 'undefined' || typeof process.env === 'undefined' ? false : process.env.NODE_ENV === 'development'\n// 问答社区链接\nexport const COMMUNITY_SITE_URL = 'https://support.qq.com/products/148793'\n","export const ERRORS = {\n INVALID_PARAMS: 'INVALID_PARAMS',\n INVALID_SYNTAX: 'INVALID_SYNTAX',\n INVALID_OPERATION: 'INVALID_OPERATION',\n OPERATION_FAIL: 'OPERATION_FAIL',\n NETWORK_ERROR: 'NETWORK_ERROR',\n UNKOWN_ERROR: 'UNKOWN_ERROR',\n}\n","import { printGroupLog } from '../libs/util'\nimport { IS_DEBUG_MODE } from '../constants'\n\ninterface ICatchErrorsDecoratorOptions {\n mode?: 'sync' | 'async';\n customInfo?: {\n className?: string;\n methodName?: string;\n };\n title?: string;\n messages?: string[];\n}\n// firefox的stack格式与chrome不同\nlet isFirefox = false\nif (typeof navigator !== 'undefined' && navigator.userAgent) {\n isFirefox = navigator.userAgent.indexOf('Firefox') !== -1\n}\n/**\n * decorate在stack中一般都特定的规范\n */\nconst REG_STACK_DECORATE = isFirefox\n ? /(\\.js\\/)?__decorate(\\$\\d+)?<@.*\\d$/\n : /(\\/\\w+\\.js\\.)?__decorate(\\$\\d+)?\\s*\\(.*\\)$/\nconst REG_STACK_LINK = /https?:\\/\\/.+:\\d*\\/.*\\.js:\\d+:\\d+/\n/**\n * debug模式强化日志信息\n * @param options\n */\nexport function catchErrorsDecorator(options: ICatchErrorsDecoratorOptions) {\n const { mode = 'async', customInfo = {}, title, messages = [] } = options\n\n return function (\n target: any,\n methodName: string,\n descriptor: TypedPropertyDescriptor<Function>\n ) {\n // 生产环境禁用\n if (!IS_DEBUG_MODE) {\n return\n }\n const className = customInfo.className || target.constructor.name\n const fnName = customInfo.methodName || methodName\n const fn = descriptor.value\n\n // 被decorator装饰的源码link\n // 在descriptor.value外部此处创建的stack层次可触达源码\n // 而descriptor.value内部有可能由于stack太深无法触达\n const sourceLink = getSourceLink(new Error())\n\n if (mode === 'sync') {\n descriptor.value = function (...args: any[]) {\n // 此处的stack作用主要是为了获取被decorator装饰的源码class和method名称\n const innerErr: any = getRewritedError({\n err: new Error(),\n className,\n methodName: fnName,\n sourceLink,\n })\n try {\n return fn.apply(this, args)\n } catch (err) {\n let failErr = err\n const { message: errMsg, error, error_description: errorDescription } = err\n const logs: any = {\n title: title || `${className}.${fnName} failed`,\n content: [{\n type: 'error',\n body: err,\n }],\n }\n // 只特殊处理SDK业务逻辑抛出的错误-JSON string\n if (errMsg && /^\\{.*\\}$/.test(errMsg)) {\n const msg = JSON.parse(errMsg)\n logs.subtitle = errMsg\n if (msg.code) {\n if (innerErr) {\n innerErr.code = msg.code\n innerErr.msg = msg.msg\n } else {\n err.code = msg.code\n err.message = msg.msg\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n }\n\n // oauth 错误特殊处理\n if (error && errorDescription) {\n logs.subtitle = errorDescription\n if (innerErr) {\n innerErr.code = error\n innerErr.msg = errorDescription\n } else {\n err.code = error\n err.message = errorDescription\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n printGroupLog(logs)\n throw failErr\n }\n }\n } else {\n descriptor.value = async function (...args: any[]) {\n const innerErr: any = getRewritedError({\n err: new Error(),\n className,\n methodName: fnName,\n sourceLink,\n })\n\n try {\n return await fn.apply(this, args)\n } catch (err) {\n let failErr = err\n const { message: errMsg, error, error_description: errorDescription } = err\n const logs: any = {\n title: title || `${className}.${fnName} failed`,\n content: [{\n type: 'error',\n body: err,\n }],\n }\n // 只特殊处理SDK业务逻辑抛出的错误-JSON string\n if (errMsg && /^\\{.*\\}$/.test(errMsg)) {\n const msg = JSON.parse(errMsg)\n logs.subtitle = msg\n if (msg.code) {\n if (innerErr) {\n innerErr.code = msg.code\n innerErr.message = msg.msg\n } else {\n err.code = msg.code\n err.message = msg.msg\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n }\n\n // oauth 错误特殊处理\n if (error && errorDescription) {\n logs.subtitle = errorDescription\n if (innerErr) {\n innerErr.code = error\n innerErr.msg = errorDescription\n } else {\n err.code = error\n err.message = errorDescription\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n printGroupLog(logs)\n throw failErr\n }\n }\n }\n }\n}\n\n/**\n * 在原始堆栈中查找装饰器条目并返回源码链接link\n * @param err\n */\nfunction getSourceLink(err: Error) {\n let sourceLink = ''\n const outterErrStacks = err.stack.split('\\n')\n const indexOfDecorator = outterErrStacks.findIndex(str => REG_STACK_DECORATE.test(str))\n\n if (indexOfDecorator !== -1) {\n const match = REG_STACK_LINK.exec(outterErrStacks[indexOfDecorator + 1] || '')\n\n sourceLink = match ? match[0] : ''\n }\n return sourceLink\n}\n\n/**\n * 在原始堆栈中查找装饰器条目,剔除其后的无用堆栈,并将链接替换为源码link\n * @param options\n */\nfunction getRewritedError(options: {\n err: Error;\n className: string;\n methodName: string;\n sourceLink: string;\n}) {\n const { err, className, methodName, sourceLink } = options\n // 找不到源码link返回null,后续逻辑将打印原堆栈信息\n if (!sourceLink) {\n return null\n }\n\n const innerErrStack = err.stack.split('\\n')\n const REG_STACK_INNER_METHOD = isFirefox\n ? /^catchErrorsDecorator\\/<\\/descriptor.value@.*\\d$/\n : new RegExp(`${className}\\\\.descriptor.value\\\\s*\\\\[as\\\\s${methodName}\\\\]\\\\s*\\\\(.*\\\\)$`)\n const REG_STACK_INNER_METHOD_WITHOUT_LINK = isFirefox\n ? /^catchErrorsDecorator\\/<\\/descriptor.value/\n : new RegExp(`${className}\\\\.descriptor.value\\\\s*\\\\[as\\\\s${methodName}\\\\]`)\n const indexOfSource = innerErrStack.findIndex(str => REG_STACK_INNER_METHOD.test(str))\n let innerErr: Error\n if (indexOfSource !== -1) {\n // @ts-ignore\n const realErrStack = innerErrStack.filter((v, i) => i > indexOfSource)\n realErrStack.unshift(innerErrStack[indexOfSource]\n .replace(REG_STACK_INNER_METHOD_WITHOUT_LINK, `${className}.${methodName}`)\n .replace(REG_STACK_LINK, sourceLink))\n innerErr = new Error()\n innerErr.stack = `${isFirefox ? '@debugger' : 'Error'}\\n${realErrStack.join('\\n')}`\n }\n return innerErr\n}\n","export default class AbortController {\n listeners: Array<CallableFunction> = []\n signal = {\n aborted: false,\n addEventListener: (e: string, f: CallableFunction) => {\n if (e === 'abort') {\n this.listeners.push(f)\n }\n },\n }\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor() {}\n\n abort() {\n if (this.signal.aborted) return\n\n this.signal.aborted = true\n this.listeners.forEach(f => f())\n }\n}\n","import { StorageInterface, AbstractStorage, SDKAdapterInterface } from '@cloudbase/adapter-interface'\nimport { ICloudbaseCache, ICacheConfig } from '@cloudbase/types/cache'\nimport { KV, Persistence, ICloudbasePlatformInfo } from '@cloudbase/types'\nimport { printWarn } from './util'\nimport { ERRORS, getSdkName } from '../constants'\n\n/**\n * persitence=none时登录态保存在内存中\n */\nclass TcbCacheObject extends AbstractStorage {\n private readonly root: any\n constructor(root: any) {\n super()\n this.root = root\n if (!root.tcbCacheObject) {\n root.tcbCacheObject = {}\n }\n }\n public setItem(key: string, value: any) {\n this.root.tcbCacheObject[key] = value\n }\n public getItem(key: string) {\n return this.root.tcbCacheObject[key]\n }\n public removeItem(key: string) {\n delete this.root.tcbCacheObject[key]\n }\n public clear() {\n delete this.root.tcbCacheObject\n }\n}\n/**\n * 工厂函数\n */\nfunction createStorage(persistence: Persistence, adapter: SDKAdapterInterface): StorageInterface {\n switch (persistence) {\n case 'local':\n if (!adapter.localStorage) {\n printWarn(ERRORS.INVALID_PARAMS, 'localStorage is not supported on current platform')\n // 不支持localstorage的平台降级为none\n return new TcbCacheObject(adapter.root)\n }\n return adapter.localStorage\n case 'none':\n return new TcbCacheObject(adapter.root)\n default:\n if (!adapter.localStorage) {\n printWarn(ERRORS.INVALID_PARAMS, 'localStorage is not supported on current platform')\n // 不支持localstorage的平台降级为none\n return new TcbCacheObject(adapter.root)\n }\n return adapter.localStorage\n }\n}\n\nexport class CloudbaseCache implements ICloudbaseCache {\n public keys: KV<string> = {}\n\n private persistenceTag: Persistence\n private platformInfo: ICloudbasePlatformInfo\n private storage: StorageInterface\n\n constructor(config: ICacheConfig) {\n const { persistence, platformInfo = {}, keys = {} } = config\n this.platformInfo = platformInfo\n if (!this.storage) {\n this.persistenceTag = this.platformInfo.adapter.primaryStorage || persistence\n this.storage = createStorage(this.persistenceTag, this.platformInfo.adapter)\n this.keys = keys\n }\n }\n /**\n * @getter storage模式-同步/异步\n */\n get mode() {\n return this.storage.mode || 'sync'\n }\n get persistence(): Persistence {\n return this.persistenceTag\n }\n\n public setStore(key: string, value: any, version?: any) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use setStoreAsync insteed')\n return\n }\n if (!this.storage) {\n return\n }\n\n try {\n const val = {\n version: version || 'localCachev1',\n content: value,\n }\n this.storage.setItem(key, JSON.stringify(val))\n } catch (e) {\n throw new Error(JSON.stringify({\n code: ERRORS.OPERATION_FAIL,\n msg: `[${getSdkName()}][${ERRORS.OPERATION_FAIL}]setStore failed`,\n info: e,\n }))\n }\n\n return\n }\n public async setStoreAsync(key: string, value: any, version?: any) {\n if (!this.storage) {\n return\n }\n\n try {\n const val = {\n version: version || 'localCachev1',\n content: value,\n }\n await this.storage.setItem(key, JSON.stringify(val))\n } catch (e) {\n return\n }\n\n return\n }\n public getStore(key: string, version?: string) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use getStoreAsync insteed')\n return\n }\n try {\n // 测试用例使用\n if (typeof process !== 'undefined' && process.env?.tcb_token) {\n return process.env.tcb_token\n }\n\n if (!this.storage) {\n return ''\n }\n } catch (e) {\n return ''\n }\n\n version = version || 'localCachev1'\n\n const content = this.storage.getItem(key)\n if (!content) {\n return ''\n }\n\n if (content.indexOf(version) >= 0) {\n const d = JSON.parse(content)\n return d.content\n }\n return ''\n }\n public async getStoreAsync(key: string, version?: string) {\n try {\n // 测试用例使用\n if (typeof process !== 'undefined' && process.env?.tcb_token) {\n return process.env.tcb_token\n }\n\n if (!this.storage) {\n return ''\n }\n } catch (e) {\n return ''\n }\n\n version = version || 'localCachev1'\n\n const content = await this.storage.getItem(key)\n if (!content) {\n return ''\n }\n\n if (content.indexOf(version) >= 0) {\n const d = JSON.parse(content)\n return d.content\n }\n return ''\n }\n public removeStore(key: string) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use removeStoreAsync insteed')\n return\n }\n this.storage.removeItem(key)\n }\n public async removeStoreAsync(key: string) {\n await this.storage.removeItem(key)\n }\n}\n","import { isString, isInstanceOf } from './util'\nimport { Listeners, ICloudbaseEventEmitter } from '@cloudbase/types/events'\n\n\n/**\n * @private\n * @function _addEventListener - 添加监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @param {Listeners} listeners - 已存响应函数集合\n */\nfunction customeAddEventListener(name: string, listener: Function, listeners: Listeners) {\n listeners[name] = listeners[name] || []\n listeners[name].push(listener)\n}\n/**\n * @private\n * @function _removeEventListener - 移除监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @param {Listeners} listeners - 已存响应函数集合\n */\nfunction customRemoveEventListener(name: string, listener: Function, listeners: Listeners) {\n if (listeners?.[name]) {\n const index = listeners[name].indexOf(listener)\n if (index !== -1) {\n listeners[name].splice(index, 1)\n }\n }\n}\ninterface IEvent {\n name: string;\n target: any;\n data: any;\n}\n/**\n * 自定义事件\n * @class CloudbaseEvent\n * @param {string} name - 类型\n * @param {any} data - 数据\n */\nexport class CloudbaseEvent implements IEvent {\n public readonly name: string\n public target: any\n public data: any\n\n constructor(name: string, data: any) {\n this.data = data || null\n this.name = name\n }\n}\n/**\n * 自定义错误事件\n * @class IErrorEvent\n * @extends CloudbaseEvent\n * @param {Error} error - 错误信息对象\n * @param {any} data - 数据\n */\nexport class IErrorEvent extends CloudbaseEvent {\n public readonly error: Error\n constructor(error: Error, data?: any) {\n super('error', { error, data })\n this.error = error\n }\n}\n\n/**\n * @class CloudbaseEventEmitter\n */\nexport class CloudbaseEventEmitter implements ICloudbaseEventEmitter {\n /**\n * @private\n * @readonly\n * @property {Listeners} listeners - 响应函数集合\n * @default `{}`\n */\n private readonly listeners: Listeners = {}\n\n /**\n * @public\n * @method on - 添加监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @return `this`\n */\n public on(name: string, listener: Function): this {\n customeAddEventListener(name, listener, this.listeners)\n return this\n }\n /**\n * @public\n * @method off - 移除监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @return `this`\n */\n public off(name: string, listener: Function): this {\n customRemoveEventListener(name, listener, this.listeners)\n return this\n }\n /**\n * @public\n * @method fire - 触发事件\n * @param {string|CloudbaseEvent} event - event\n * @return `this`\n */\n public fire(event: string | CloudbaseEvent, data?: any): this {\n // 打印错误信息\n if (isInstanceOf(event, IErrorEvent)) {\n console.error((event as IErrorEvent).error)\n return this\n }\n\n const ev: CloudbaseEvent = isString(event) ? new CloudbaseEvent(event as string, data || {}) : event as CloudbaseEvent\n\n const { name } = ev\n\n if (this.listens(name)) {\n ev.target = this\n\n const handlers = this.listeners[name] ? [...this.listeners[name]] : []\n for (const fn of handlers) {\n fn.call(this, ev)\n }\n }\n\n return this\n }\n\n /**\n * @private\n * @method listens - 判断是否监听了name事件\n * @param {string} name - event名称\n * @return `boolean`\n */\n private listens(name: string): boolean {\n return this.listeners[name] && this.listeners[name].length > 0\n }\n}\n\n\nconst eventEmitter = new CloudbaseEventEmitter()\n\nexport function addEventListener(event: string, callback: Function) {\n eventEmitter.on(event, callback)\n}\n\nexport function activateEvent(event: string, data: any = {}) {\n eventEmitter.fire(event, data)\n}\n\nexport function removeEventListener(event: string, callback: Function) {\n eventEmitter.off(event, callback)\n}\n","import { CloudbaseEventEmitter } from './events'\n\nexport const bus = new CloudbaseEventEmitter()\n\nexport const LANG_CHANGE_EVENT = 'lang_change'\n","import { KV } from '@cloudbase/types'\nimport { getSdkName } from '../constants'\n\nexport function isArray(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Array]'\n}\nexport function isString(val: any): boolean {\n return typeof val === 'string'\n}\nexport function isUndefined(val: any): boolean {\n return typeof val === 'undefined'\n}\nexport function isPalinObject(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Object]'\n}\nexport function isNull(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Null]'\n}\nexport function isInstanceOf(instance: any, construct: any): boolean {\n return instance instanceof construct\n}\nexport function isFormData(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object FormData]'\n}\nexport function genSeqId(): string {\n return Math.random().toString(16)\n .slice(2)\n}\nexport function generateRequestId() {\n let d = new Date().getTime()\n let d2 = (Date?.now && Date.now() * 1000) || 0\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n let r = Math.random() * 16\n if (d > 0) {\n r = (d + r) % 16 | 0\n d = Math.floor(d / 16)\n } else {\n r = (d2 + r) % 16 | 0\n d2 = Math.floor(d2 / 16)\n }\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16)\n })\n}\nexport function formatUrl(PROTOCOL: string, url: string, query: KV<any> = {}): string {\n const urlHasQuery = /\\?/.test(url)\n let queryString = ''\n Object.keys(query).forEach((key) => {\n if (queryString === '') {\n !urlHasQuery && (url += '?')\n } else {\n queryString += '&'\n }\n queryString += `${key}=${encodeURIComponent(query[key])}`\n })\n url += queryString\n if (/^http(s)?:\\/\\//.test(url)) {\n return url\n }\n return `${PROTOCOL}${url}`\n}\n\nexport function toQueryString(query: KV<any> = {}) {\n const queryString = []\n Object.keys(query).forEach((key) => {\n queryString.push(`${key}=${encodeURIComponent(query[key])}`)\n })\n return queryString.join('&')\n}\n\nexport function getQuery(name: string, url?: string) {\n if (typeof window === 'undefined') {\n return false\n }\n // 参数:变量名,url为空则表从当前页面的url中取\n const u = url || decodeURIComponent(window.location.search)\n const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`)\n const r = u.substr(u.indexOf('?') + 1).match(reg)\n return r !== null && r !== undefined ? r[2] : ''\n}\n\nexport const getHash = function (name: string) {\n if (typeof window === 'undefined') {\n return ''\n }\n const matches = window.location.hash.match(new RegExp(`[#?&/]${name}=([^&#]*)`))\n return matches ? matches[1] : ''\n}\n\nexport function removeParam(key: string, sourceURL: string) {\n let rtn = sourceURL.split('?')[0]\n let param\n let params = []\n const queryString = sourceURL.indexOf('?') !== -1 ? sourceURL.split('?')[1] : ''\n if (queryString !== '') {\n params = queryString.split('&')\n for (let i = params.length - 1; i >= 0; i -= 1) {\n /* eslint-disable-next-line */\n param = params[i].split('=')[0]\n if (param === key) {\n params.splice(i, 1)\n }\n }\n rtn = `${rtn}?${params.join('&')}`\n }\n return rtn\n}\n\nexport function createPromiseCallback() {\n let cb: any = {}\n if (!Promise) {\n cb = () => {}\n cb.promise = {}\n\n const throwPromiseNotDefined = () => {\n throw new Error('Your Node runtime does support ES6 Promises. '\n + 'Set \"global.Promise\" to your preferred implementation of promises.',)\n }\n\n Object.defineProperty(cb.promise, 'then', { get: throwPromiseNotDefined })\n Object.defineProperty(cb.promise, 'catch', { get: throwPromiseNotDefined })\n return cb\n }\n\n const promise = new Promise((resolve, reject) => {\n cb = (err, data) => {\n if (err) return reject(err)\n return resolve(data)\n }\n })\n cb.promise = promise\n return cb\n}\n\nexport function execCallback(fn: Function | null | undefined, err: any, data = null) {\n if (fn && typeof fn === 'function') {\n return fn(err, data)\n }\n if (err) {\n throw err\n }\n return data\n}\n\nexport function printWarn(error: string, msg: string) {\n console.warn(`[${getSdkName()}][${error}]:${msg}`)\n}\n\nexport function printError(error: string, msg: string) {\n console.error({\n code: error,\n msg: `[${getSdkName()}][${error}]:${msg}`,\n })\n}\nexport function printInfo(error: string, msg: string) {\n console.log(`[${getSdkName()}][${error}]:${msg}`)\n}\nexport function throwError(error: string, msg: string) {\n // legacy v1 兼容路径(auth v1-compat 本地校验):message 保持已发布版本的 JSON-string 形状\n // (v1 错误处理范式 JSON.parse(e.message) 不受影响),额外挂 code 属性供新范式直访\n const err: any = new Error(JSON.stringify({\n code: error,\n msg: `[${getSdkName()}][${error}]:${msg}`,\n }),)\n err.code = error\n throw err\n}\n\n// ========== Cloudbase Error Factory ==========\nexport interface ICloudbaseErrorOptions {\n code: string\n msg: string\n requestId?: string\n [key: string]: any\n}\n\nexport type CloudbaseErrorFactory = (opts: ICloudbaseErrorOptions) => Error\n\n/**\n * 浏览器形态默认错误类:对齐 v3 已发布行为(实测 @cloudbase/js-sdk@3.8.2 网关业务错误\n * 抛 {code, message, requestId},`e.code` 直接可访问),同时保留 Error 特性\n * (instanceof / stack,是 v3 裸对象的超集)。\n * JSON.stringify(err) 的结果与 v3.8.2 裸对象逐字段一致。\n */\nexport class CloudbaseError extends Error {\n public readonly code: string\n public readonly message: string\n public readonly requestId: string\n\n public constructor(opts: ICloudbaseErrorOptions) {\n super(opts.msg || opts.message || '')\n this.code = opts.code || ''\n this.requestId = opts.requestId || ''\n // Error 构造器创建的 message 自有属性是不可枚举的,直接赋值会保留该属性描述符,\n // 导致 JSON.stringify(err) 丢失 message(v3.8.2 裸对象里 message 是可枚举的)\n Object.defineProperty(this, 'message', {\n value: opts.msg || opts.message || '',\n enumerable: true,\n writable: true,\n configurable: true,\n })\n }\n}\n\nconst defaultErrorFactory: CloudbaseErrorFactory = opts => new CloudbaseError(opts)\n\n/**\n * 创建错误对象。无全局状态:factory 由调用方通过 config.errorFactory 传入(per-instance),\n * 未传入时使用默认工厂(浏览器形态)。\n */\nexport function createCloudbaseError(opts: ICloudbaseErrorOptions, factory?: CloudbaseErrorFactory): Error {\n return (factory || defaultErrorFactory)(opts)\n}\n\n// ========== 统一 throw 开关 ==========\n\n/**\n * 解析是否抛错:只读 `config.throw`,默认 true。\n * `throwOnCode` 仅在 init 时作为别名被 canonicalize 到 `throw`,内部不再保留。\n * 该开关统一控制「服务端业务错误 + 本地校验」的抛/返回行为;\n * Supabase-like API(auth 新方法、storage.from())不受此开关影响。\n */\nexport function resolveThrow(config?: { throw?: boolean } | any): boolean {\n if (config && typeof config.throw === 'boolean') {\n return config.throw\n }\n return true\n}\n\n/**\n * 按 `resolveThrow` 决定抛错或返回 `{ code, message }`。\n * - throw=true:抛 `createCloudbaseError`\n * - throw=false:返回 `{ code, message, ...(requestId) }`\n */\nexport function maybeThrow(\n config: { throw?: boolean } | any,\n opts: { code: string; msg: string; requestId?: string },\n): any {\n if (resolveThrow(config)) {\n throw createCloudbaseError(opts, config?.errorFactory)\n }\n return { code: opts.code, message: opts.msg, ...(opts.requestId ? { requestId: opts.requestId } : {}) }\n}\n\n// ========== 网关响应归一化 ==========\n\n/**\n * 将网关响应的业务错误码/信息从 `data` 提升到顶层(若顶层缺失)。\n * 网关(gateWay)返回 `{ requestId, data: {...}, statusCode, ... }`,业务错误码在 `data.code` / `data.message`;\n * 消费方(database / storage 经典)统一用顶层 `res.code` 判断。\n *\n * 无副作用:需要提升时返回新对象,无需提升时原样返回入参。\n */\nexport function promoteGatewayError(res: any): any {\n if (res && typeof res === 'object' && res.data && typeof res.data === 'object') {\n const { code, message } = res.data\n if ((!res.code && code) || (!res.message && message)) {\n return {\n ...res,\n ...(!res.code && code ? { code } : {}),\n ...(!res.message && message ? { message } : {}),\n }\n }\n }\n return res\n}\n\nexport function errorToResult(e: any): { code: string; message: string; requestId?: string; [key: string]: any } {\n if (e instanceof Error && typeof e.message === 'string') {\n try {\n const parsed = JSON.parse(e.message)\n if (parsed && typeof parsed.code === 'string') {\n return {\n code: parsed.code,\n message: parsed.msg || parsed.message || '',\n requestId: parsed.requestId,\n }\n }\n } catch (_) {}\n }\n if (e && typeof e.code === 'string') {\n return { code: e.code, message: e.message || '', requestId: e.requestId }\n }\n return { code: 'UNKNOWN_ERROR', message: String(e?.message || e || '') }\n}\n\ninterface IPrintGroupLogOptions {\n title: string\n subtitle: string | object\n content: {\n type: 'info' | 'warn' | 'error'\n body: string | Error\n }[]\n printTrace?: boolean\n collapsed?: boolean\n}\nexport function printGroupLog(options: IPrintGroupLogOptions) {\n const { title, subtitle = '', content = [], printTrace = false, collapsed = false } = options\n if (collapsed) {\n (console.groupCollapsed || console.error)(title, subtitle)\n } else {\n (console.group || console.error)(title, subtitle)\n }\n for (const tip of content) {\n const { type, body } = tip\n switch (type) {\n case 'info':\n console.log(body)\n break\n case 'warn':\n console.warn(body)\n break\n case 'error':\n console.error(body)\n break\n }\n }\n if (printTrace) {\n (console.trace || console.log)('stack trace:')\n }\n console.groupEnd?.()\n}\n\nexport const sleep = (ms = 0) => new Promise(r => setTimeout(r, ms))\n\nexport function transformPhone(phoneNumber: string) {\n return `+86${phoneNumber}`\n}\n\nexport const parseQueryString = (queryString) => {\n queryString = queryString.replace(/^\\?/, '')\n const params = {}\n const pairs = queryString.split('&')\n\n pairs.forEach((item) => {\n let [key, value] = item.split('=')\n key = decodeURIComponent(key)\n value = decodeURIComponent(value)\n if (key) {\n if (params[key]) {\n if (Array.isArray(params[key])) {\n params[key].push(value)\n } else {\n params[key] = [params[key], value]\n }\n } else {\n params[key] = value\n }\n }\n })\n\n return params\n}\n\n// 解析URL参数\nexport function parseCaptcha(url) {\n let queryObj: any = {}\n const matched = url.match(/^(data:.*?)(\\?[^#\\s]*)?$/)\n if (matched) {\n // eslint-disable-next-line prefer-destructuring\n url = matched[1]\n const search = matched[2]\n if (search) {\n queryObj = parseQueryString(search)\n }\n }\n const { token, ...restQueryObj } = queryObj\n if (/^data:/.test(url) && !token) {\n return {\n error: 'invalid_argument',\n error_description: `invalid captcha data: ${url}`,\n }\n }\n if (!token) {\n return {\n error: 'unimplemented',\n error_description: 'need to impl captcha data',\n }\n }\n // 解析url得到的参数\n return {\n state: restQueryObj.state,\n token, // 验证码token\n captchaData: url, // 验证码base64图片\n }\n}\n","var _a;\nvar ErrorCode;\n(function (ErrorCode) {\n ErrorCode[\"DocIDError\"] = \"\\u6587\\u6863ID\\u4E0D\\u5408\\u6CD5\";\n ErrorCode[\"CollNameError\"] = \"\\u96C6\\u5408\\u540D\\u79F0\\u4E0D\\u5408\\u6CD5\";\n ErrorCode[\"OpStrError\"] = \"\\u64CD\\u4F5C\\u7B26\\u4E0D\\u5408\\u6CD5\";\n ErrorCode[\"DirectionError\"] = \"\\u6392\\u5E8F\\u5B57\\u7B26\\u4E0D\\u5408\\u6CD5\";\n ErrorCode[\"IntergerError\"] = \"must be integer\";\n ErrorCode[\"BooleanError\"] = \"must be boolean\";\n ErrorCode[\"ArrayError\"] = \"must be array\";\n ErrorCode[\"QueryParamTypeError\"] = \"\\u67E5\\u8BE2\\u53C2\\u6570\\u5FC5\\u987B\\u4E3A\\u5BF9\\u8C61\";\n ErrorCode[\"QueryParamValueError\"] = \"\\u67E5\\u8BE2\\u53C2\\u6570\\u5BF9\\u8C61\\u503C\\u4E0D\\u80FD\\u5747\\u4E3Aundefined\";\n ErrorCode[\"CentersPhereError\"] = \"centersPhere\\u7ED3\\u6784\\u4E0D\\u5408\\u6CD5\";\n})(ErrorCode || (ErrorCode = {}));\nvar FieldType = {\n String: 'String',\n Number: 'Number',\n Object: 'Object',\n Array: 'Array',\n Boolean: 'Boolean',\n Null: 'Null',\n GeoPoint: 'GeoPoint',\n GeoLineString: 'GeoLineString',\n GeoPolygon: 'GeoPolygon',\n GeoMultiPoint: 'GeoMultiPoint',\n GeoMultiLineString: 'GeoMultiLineString',\n GeoMultiPolygon: 'GeoMultiPolygon',\n Date: 'Date',\n Command: 'Command',\n ServerDate: 'ServerDate',\n BsonDate: 'BsonDate'\n};\nvar OrderDirectionList = ['desc', 'asc'];\nvar WhereFilterOpList = ['<', '<=', '==', '>=', '>'];\nvar Opeartor;\n(function (Opeartor) {\n Opeartor[\"lt\"] = \"<\";\n Opeartor[\"gt\"] = \">\";\n Opeartor[\"lte\"] = \"<=\";\n Opeartor[\"gte\"] = \">=\";\n Opeartor[\"eq\"] = \"==\";\n})(Opeartor || (Opeartor = {}));\nvar OperatorMap = (_a = {},\n _a[Opeartor.eq] = '$eq',\n _a[Opeartor.lt] = '$lt',\n _a[Opeartor.lte] = '$lte',\n _a[Opeartor.gt] = '$gt',\n _a[Opeartor.gte] = '$gte',\n _a);\nvar UpdateOperatorList = [\n '$set',\n '$inc',\n '$mul',\n '$unset',\n '$push',\n '$pop',\n '$unshift',\n '$shift',\n '$currentDate',\n '$each',\n '$position'\n];\nvar QueryType;\n(function (QueryType) {\n QueryType[\"WHERE\"] = \"WHERE\";\n QueryType[\"DOC\"] = \"DOC\";\n})(QueryType || (QueryType = {}));\nexport { ErrorCode, FieldType, WhereFilterOpList, Opeartor, OperatorMap, OrderDirectionList, UpdateOperatorList, QueryType };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _symbols = [];\nvar __internalMark__ = {};\nvar HiddenSymbol = (function () {\n function HiddenSymbol(target) {\n Object.defineProperties(this, {\n target: {\n enumerable: false,\n writable: false,\n configurable: false,\n value: target,\n },\n });\n }\n return HiddenSymbol;\n}());\nvar InternalSymbol = (function (_super) {\n __extends(InternalSymbol, _super);\n function InternalSymbol(target, __mark__) {\n if (__mark__ !== __internalMark__) {\n throw new TypeError('InternalSymbol cannot be constructed with new operator');\n }\n return _super.call(this, target) || this;\n }\n InternalSymbol.for = function (target) {\n for (var i = 0, len = _symbols.length; i < len; i++) {\n if (_symbols[i].target === target) {\n return _symbols[i].instance;\n }\n }\n var symbol = new InternalSymbol(target, __internalMark__);\n _symbols.push({\n target: target,\n instance: symbol,\n });\n return symbol;\n };\n return InternalSymbol;\n}(HiddenSymbol));\nexport { InternalSymbol };\nexport default InternalSymbol;\n","import InternalSymbol from '../utils/symbol';\nexport * from '../utils/symbol';\nexport var SYMBOL_UNSET_FIELD_NAME = InternalSymbol.for('UNSET_FIELD_NAME');\nexport var SYMBOL_UPDATE_COMMAND = InternalSymbol.for('UPDATE_COMMAND');\nexport var SYMBOL_QUERY_COMMAND = InternalSymbol.for('QUERY_COMMAND');\nexport var SYMBOL_LOGIC_COMMAND = InternalSymbol.for('LOGIC_COMMAND');\nexport var SYMBOL_GEO_POINT = InternalSymbol.for('GEO_POINT');\nexport var SYMBOL_GEO_LINE_STRING = InternalSymbol.for('SYMBOL_GEO_LINE_STRING');\nexport var SYMBOL_GEO_POLYGON = InternalSymbol.for('SYMBOL_GEO_POLYGON');\nexport var SYMBOL_GEO_MULTI_POINT = InternalSymbol.for('SYMBOL_GEO_MULTI_POINT');\nexport var SYMBOL_GEO_MULTI_LINE_STRING = InternalSymbol.for('SYMBOL_GEO_MULTI_LINE_STRING');\nexport var SYMBOL_GEO_MULTI_POLYGON = InternalSymbol.for('SYMBOL_GEO_MULTI_POLYGON');\nexport var SYMBOL_SERVER_DATE = InternalSymbol.for('SERVER_DATE');\nexport var SYMBOL_REGEXP = InternalSymbol.for('REGEXP');\nexport var SYMBOL_OBJECTID = InternalSymbol.for('OBJECTID');\n","import { InternalSymbol } from './symbol';\nexport var getType = function (x) { return Object.prototype.toString.call(x).slice(8, -1).toLowerCase(); };\nexport var isObject = function (x) { return getType(x) === 'object'; };\nexport var isString = function (x) { return getType(x) === 'string'; };\nexport var isNumber = function (x) { return getType(x) === 'number'; };\nexport var isPromise = function (x) { return getType(x) === 'promise'; };\nexport var isFunction = function (x) { return typeof x === 'function'; };\nexport var isArray = function (x) { return Array.isArray(x); };\nexport var isDate = function (x) { return getType(x) === 'date'; };\nexport var isRegExp = function (x) { return getType(x) === 'regexp'; };\nexport var isInternalObject = function (x) { return x && (x._internalType instanceof InternalSymbol); };\nexport var isPlainObject = function (obj) {\n if (typeof obj !== 'object' || obj === null)\n return false;\n var proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto;\n};\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { SYMBOL_GEO_LINE_STRING } from '../helper/symbol';\nimport { Point } from './point';\nimport { isArray, isNumber } from '../utils/type';\nvar LineString = (function () {\n function LineString(points) {\n if (!isArray(points)) {\n throw new TypeError(\"\\\"points\\\" must be of type Point[]. Received type \".concat(typeof points));\n }\n if (points.length < 2) {\n throw new Error('\"points\" must contain 2 points at least');\n }\n points.forEach(function (point) {\n if (!(point instanceof Point)) {\n throw new TypeError(\"\\\"points\\\" must be of type Point[]. Received type \".concat(typeof point, \"[]\"));\n }\n });\n this.points = points;\n }\n LineString.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'LineString',\n coordinates: this.points.map(function (point) { return point.toJSON().coordinates; })\n },\n _a;\n };\n LineString.prototype.toJSON = function () {\n return {\n type: 'LineString',\n coordinates: this.points.map(function (point) { return point.toJSON().coordinates; })\n };\n };\n LineString.validate = function (lineString) {\n var e_1, _a;\n if (lineString.type !== 'LineString' || !isArray(lineString.coordinates)) {\n return false;\n }\n try {\n for (var _b = __values(lineString.coordinates), _c = _b.next(); !_c.done; _c = _b.next()) {\n var point = _c.value;\n if (!isNumber(point[0]) || !isNumber(point[1])) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n LineString.isClosed = function (lineString) {\n var firstPoint = lineString.points[0];\n var lastPoint = lineString.points[lineString.points.length - 1];\n if (firstPoint.latitude === lastPoint.latitude && firstPoint.longitude === lastPoint.longitude) {\n return true;\n }\n };\n Object.defineProperty(LineString.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_LINE_STRING;\n },\n enumerable: false,\n configurable: true\n });\n return LineString;\n}());\nexport { LineString };\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { SYMBOL_GEO_POLYGON } from '../helper/symbol';\nimport { isArray, isNumber } from '../utils/type';\nimport { LineString } from './lineString';\nvar Polygon = (function () {\n function Polygon(lines) {\n if (!isArray(lines)) {\n throw new TypeError(\"\\\"lines\\\" must be of type LineString[]. Received type \".concat(typeof lines));\n }\n if (lines.length === 0) {\n throw new Error('Polygon must contain 1 linestring at least');\n }\n lines.forEach(function (line) {\n if (!(line instanceof LineString)) {\n throw new TypeError(\"\\\"lines\\\" must be of type LineString[]. Received type \".concat(typeof line, \"[]\"));\n }\n if (!LineString.isClosed(line)) {\n throw new Error(\"LineString \".concat(line.points.map(function (p) { return p.toReadableString(); }), \" is not a closed cycle\"));\n }\n });\n this.lines = lines;\n }\n Polygon.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'Polygon',\n coordinates: this.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n })\n },\n _a;\n };\n Polygon.prototype.toJSON = function () {\n return {\n type: 'Polygon',\n coordinates: this.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n })\n };\n };\n Polygon.validate = function (polygon) {\n var e_1, _a, e_2, _b;\n if (polygon.type !== 'Polygon' || !isArray(polygon.coordinates)) {\n return false;\n }\n try {\n for (var _c = __values(polygon.coordinates), _d = _c.next(); !_d.done; _d = _c.next()) {\n var line = _d.value;\n if (!this.isCloseLineString(line)) {\n return false;\n }\n try {\n for (var line_1 = (e_2 = void 0, __values(line)), line_1_1 = line_1.next(); !line_1_1.done; line_1_1 = line_1.next()) {\n var point = line_1_1.value;\n if (!isNumber(point[0]) || !isNumber(point[1])) {\n return false;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (line_1_1 && !line_1_1.done && (_b = line_1.return)) _b.call(line_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n Polygon.isCloseLineString = function (lineString) {\n var firstPoint = lineString[0];\n var lastPoint = lineString[lineString.length - 1];\n if (firstPoint[0] !== lastPoint[0] || firstPoint[1] !== lastPoint[1]) {\n return false;\n }\n return true;\n };\n Object.defineProperty(Polygon.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_POLYGON;\n },\n enumerable: false,\n configurable: true\n });\n return Polygon;\n}());\nexport { Polygon };\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { SYMBOL_GEO_MULTI_POINT } from '../helper/symbol';\nimport { Point } from './point';\nimport { isArray, isNumber } from '../utils/type';\nvar MultiPoint = (function () {\n function MultiPoint(points) {\n if (!isArray(points)) {\n throw new TypeError(\"\\\"points\\\" must be of type Point[]. Received type \".concat(typeof points));\n }\n if (points.length === 0) {\n throw new Error('\"points\" must contain 1 point at least');\n }\n points.forEach(function (point) {\n if (!(point instanceof Point)) {\n throw new TypeError(\"\\\"points\\\" must be of type Point[]. Received type \".concat(typeof point, \"[]\"));\n }\n });\n this.points = points;\n }\n MultiPoint.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'MultiPoint',\n coordinates: this.points.map(function (point) { return point.toJSON().coordinates; })\n },\n _a;\n };\n MultiPoint.prototype.toJSON = function () {\n return {\n type: 'MultiPoint',\n coordinates: this.points.map(function (point) { return point.toJSON().coordinates; })\n };\n };\n MultiPoint.validate = function (multiPoint) {\n var e_1, _a;\n if (multiPoint.type !== 'MultiPoint' || !isArray(multiPoint.coordinates)) {\n return false;\n }\n try {\n for (var _b = __values(multiPoint.coordinates), _c = _b.next(); !_c.done; _c = _b.next()) {\n var point = _c.value;\n if (!isNumber(point[0]) || !isNumber(point[1])) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n Object.defineProperty(MultiPoint.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_MULTI_POINT;\n },\n enumerable: false,\n configurable: true\n });\n return MultiPoint;\n}());\nexport { MultiPoint };\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { SYMBOL_GEO_MULTI_LINE_STRING } from '../helper/symbol';\nimport { isArray, isNumber } from '../utils/type';\nimport { LineString } from './lineString';\nvar MultiLineString = (function () {\n function MultiLineString(lines) {\n if (!isArray(lines)) {\n throw new TypeError(\"\\\"lines\\\" must be of type LineString[]. Received type \".concat(typeof lines));\n }\n if (lines.length === 0) {\n throw new Error('Polygon must contain 1 linestring at least');\n }\n lines.forEach(function (line) {\n if (!(line instanceof LineString)) {\n throw new TypeError(\"\\\"lines\\\" must be of type LineString[]. Received type \".concat(typeof line, \"[]\"));\n }\n });\n this.lines = lines;\n }\n MultiLineString.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'MultiLineString',\n coordinates: this.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n })\n },\n _a;\n };\n MultiLineString.prototype.toJSON = function () {\n return {\n type: 'MultiLineString',\n coordinates: this.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n })\n };\n };\n MultiLineString.validate = function (multiLineString) {\n var e_1, _a, e_2, _b;\n if (multiLineString.type !== 'MultiLineString' || !isArray(multiLineString.coordinates)) {\n return false;\n }\n try {\n for (var _c = __values(multiLineString.coordinates), _d = _c.next(); !_d.done; _d = _c.next()) {\n var line = _d.value;\n try {\n for (var line_1 = (e_2 = void 0, __values(line)), line_1_1 = line_1.next(); !line_1_1.done; line_1_1 = line_1.next()) {\n var point = line_1_1.value;\n if (!isNumber(point[0]) || !isNumber(point[1])) {\n return false;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (line_1_1 && !line_1_1.done && (_b = line_1.return)) _b.call(line_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n Object.defineProperty(MultiLineString.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_MULTI_LINE_STRING;\n },\n enumerable: false,\n configurable: true\n });\n return MultiLineString;\n}());\nexport { MultiLineString };\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { SYMBOL_GEO_MULTI_POLYGON } from '../helper/symbol';\nimport { isArray, isNumber } from '../utils/type';\nimport { Polygon } from './polygon';\nvar MultiPolygon = (function () {\n function MultiPolygon(polygons) {\n var e_1, _a;\n if (!isArray(polygons)) {\n throw new TypeError(\"\\\"polygons\\\" must be of type Polygon[]. Received type \".concat(typeof polygons));\n }\n if (polygons.length === 0) {\n throw new Error('MultiPolygon must contain 1 polygon at least');\n }\n try {\n for (var polygons_1 = __values(polygons), polygons_1_1 = polygons_1.next(); !polygons_1_1.done; polygons_1_1 = polygons_1.next()) {\n var polygon = polygons_1_1.value;\n if (!(polygon instanceof Polygon)) {\n throw new TypeError(\"\\\"polygon\\\" must be of type Polygon[]. Received type \".concat(typeof polygon, \"[]\"));\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (polygons_1_1 && !polygons_1_1.done && (_a = polygons_1.return)) _a.call(polygons_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this.polygons = polygons;\n }\n MultiPolygon.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'MultiPolygon',\n coordinates: this.polygons.map(function (polygon) {\n return polygon.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n });\n })\n },\n _a;\n };\n MultiPolygon.prototype.toJSON = function () {\n return {\n type: 'MultiPolygon',\n coordinates: this.polygons.map(function (polygon) {\n return polygon.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n });\n })\n };\n };\n MultiPolygon.validate = function (multiPolygon) {\n var e_2, _a, e_3, _b, e_4, _c;\n if (multiPolygon.type !== 'MultiPolygon' || !isArray(multiPolygon.coordinates)) {\n return false;\n }\n try {\n for (var _d = __values(multiPolygon.coordinates), _e = _d.next(); !_e.done; _e = _d.next()) {\n var polygon = _e.value;\n try {\n for (var polygon_1 = (e_3 = void 0, __values(polygon)), polygon_1_1 = polygon_1.next(); !polygon_1_1.done; polygon_1_1 = polygon_1.next()) {\n var line = polygon_1_1.value;\n try {\n for (var line_1 = (e_4 = void 0, __values(line)), line_1_1 = line_1.next(); !line_1_1.done; line_1_1 = line_1.next()) {\n var point = line_1_1.value;\n if (!isNumber(point[0]) || !isNumber(point[1])) {\n return false;\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (line_1_1 && !line_1_1.done && (_c = line_1.return)) _c.call(line_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (polygon_1_1 && !polygon_1_1.done && (_b = polygon_1.return)) _b.call(polygon_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return true;\n };\n Object.defineProperty(MultiPolygon.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_MULTI_POLYGON;\n },\n enumerable: false,\n configurable: true\n });\n return MultiPolygon;\n}());\nexport { MultiPolygon };\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { FieldType } from './constant';\nimport { Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon } from './geo/index';\nvar Util = (function () {\n function Util() {\n }\n Util.formatResDocumentData = function (documents) {\n return documents.map(function (document) {\n return Util.formatField(document);\n });\n };\n Util.formatField = function (document) {\n var keys = Object.keys(document);\n var protoField = {};\n if (Array.isArray(document)) {\n protoField = [];\n }\n keys.forEach(function (key) {\n var item = document[key];\n var type = Util.whichType(item);\n var realValue;\n switch (type) {\n case FieldType.GeoPoint:\n realValue = new Point(item.coordinates[0], item.coordinates[1]);\n break;\n case FieldType.GeoLineString:\n realValue = new LineString(item.coordinates.map(function (point) { return new Point(point[0], point[1]); }));\n break;\n case FieldType.GeoPolygon:\n realValue = new Polygon(item.coordinates.map(function (line) { return new LineString(line.map(function (_a) {\n var _b = __read(_a, 2), lng = _b[0], lat = _b[1];\n return new Point(lng, lat);\n })); }));\n break;\n case FieldType.GeoMultiPoint:\n realValue = new MultiPoint(item.coordinates.map(function (point) { return new Point(point[0], point[1]); }));\n break;\n case FieldType.GeoMultiLineString:\n realValue = new MultiLineString(item.coordinates.map(function (line) { return new LineString(line.map(function (_a) {\n var _b = __read(_a, 2), lng = _b[0], lat = _b[1];\n return new Point(lng, lat);\n })); }));\n break;\n case FieldType.GeoMultiPolygon:\n realValue = new MultiPolygon(item.coordinates.map(function (polygon) {\n return new Polygon(polygon.map(function (line) { return new LineString(line.map(function (_a) {\n var _b = __read(_a, 2), lng = _b[0], lat = _b[1];\n return new Point(lng, lat);\n })); }));\n }));\n break;\n case FieldType.Date:\n realValue = item;\n break;\n case FieldType.Object:\n case FieldType.Array:\n realValue = Util.formatField(item);\n break;\n case FieldType.ServerDate:\n realValue = new Date(item.$date);\n break;\n default:\n realValue = item;\n }\n if (Array.isArray(protoField)) {\n protoField.push(realValue);\n }\n else {\n protoField[key] = realValue;\n }\n });\n return protoField;\n };\n Util.whichType = function (obj) {\n var type = Object.prototype.toString.call(obj).slice(8, -1);\n if (type === FieldType.Date) {\n return FieldType.Date;\n }\n if (type === FieldType.Object) {\n if (obj.$date) {\n type = FieldType.ServerDate;\n }\n else if (Point.validate(obj)) {\n type = FieldType.GeoPoint;\n }\n else if (LineString.validate(obj)) {\n type = FieldType.GeoLineString;\n }\n else if (Polygon.validate(obj)) {\n type = FieldType.GeoPolygon;\n }\n else if (MultiPoint.validate(obj)) {\n type = FieldType.GeoMultiPoint;\n }\n else if (MultiLineString.validate(obj)) {\n type = FieldType.GeoMultiLineString;\n }\n else if (MultiPolygon.validate(obj)) {\n type = FieldType.GeoMultiPolygon;\n }\n }\n return type;\n };\n Util.generateDocId = function () {\n var chars = 'ABCDEFabcdef0123456789';\n var autoId = '';\n for (var i = 0; i < 24; i++) {\n autoId += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return autoId;\n };\n return Util;\n}());\nexport { Util };\n","export var ERRORS = {\n CREATE_WATCH_NET_ERROR: {\n code: 'CREATE_WATCH_NET_ERROR',\n message: 'create watch network error'\n },\n CREATE_WACTH_EXCEED_ERROR: {\n code: 'CREATE_WACTH_EXCEED_ERROR',\n message: 'maximum connections exceed'\n },\n CREATE_WATCH_SERVER_ERROR: {\n code: 'CREATE_WATCH_SERVER_ERROR',\n message: 'create watch server error'\n },\n CONN_ERROR: {\n code: 'CONN_ERROR',\n message: 'connection error'\n },\n INVALID_PARAM: {\n code: 'INVALID_PARAM',\n message: 'Invalid request param'\n },\n INSERT_DOC_FAIL: {\n code: 'INSERT_DOC_FAIL',\n message: 'insert document failed'\n },\n DATABASE_TRANSACTION_CONFLICT: {\n code: 'DATABASE_TRANSACTION_CONFLICT',\n message: 'database transaction conflict'\n },\n DATABASE_REQUEST_FAILED: {\n code: 'DATABASE_REQUEST_FAILED',\n message: 'database request failed'\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Db } from '../';\nimport { EJSON } from 'bson';\nimport { isObject } from './type';\nexport var sleep = function (ms) {\n if (ms === void 0) { ms = 0; }\n return new Promise(function (r) { return setTimeout(r, ms); });\n};\nexport function withCallback(promise, callback) {\n if (typeof callback === 'function') {\n promise.then(function (res) { return callback(0, res); }, function (err) { return callback(err); });\n return undefined;\n }\n return promise;\n}\nvar counters = {};\nexport var autoCount = function (domain) {\n if (domain === void 0) { domain = 'any'; }\n if (!counters[domain]) {\n counters[domain] = 0;\n }\n return counters[domain]++;\n};\nvar wsList = {};\nexport function getWsInstance(db) {\n if (!Db.wsClientClass) {\n throw new Error('to use realtime you must import realtime module first');\n }\n var env = db.config.env;\n if (!wsList[env]) {\n wsList[env] = new Db.wsClientClass({\n context: {\n appConfig: {\n docSizeLimit: 1000,\n realtimePingInterval: 10000,\n realtimePongWaitTimeout: 5000,\n request: Db.createRequest(db.config)\n }\n }\n });\n }\n return wsList[env];\n}\nexport var getReqOpts = function (apiOptions) {\n if (apiOptions.timeout !== undefined) {\n return {\n timeout: apiOptions.timeout\n };\n }\n return {};\n};\nexport var filterUndefined = function (o) {\n if (!isObject(o)) {\n return o;\n }\n for (var key in o) {\n if (o[key] === undefined) {\n delete o[key];\n }\n else if (isObject(o[key])) {\n o[key] = filterUndefined(o[key]);\n }\n }\n return o;\n};\nexport var stringifyByEJSON = function (params) {\n params = filterUndefined(params);\n return EJSON.stringify(params, { relaxed: false });\n};\nexport var parseByEJSON = function (params) {\n return EJSON.parse(params);\n};\nvar TcbError = (function (_super) {\n __extends(TcbError, _super);\n function TcbError(error) {\n var _this = _super.call(this, error.message) || this;\n _this.code = error.code;\n _this.message = error.message;\n return _this;\n }\n return TcbError;\n}(Error));\nexport { TcbError };\nexport var E = function (errObj) {\n return new TcbError(errObj);\n};\nexport function processReturn(throwOnCode, res) {\n if (throwOnCode === false) {\n return res;\n }\n throw E(__assign({}, res));\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { ErrorCode, WhereFilterOpList, OrderDirectionList, FieldType } from './constant';\nimport { Util } from './util';\nimport { ERRORS } from './const/code';\nimport { E } from './utils/utils';\nimport { getType } from './utils/type';\nimport { SYMBOL_GEO_POINT } from './helper/symbol';\nvar validOptionsKeys = ['limit', 'offset', 'projection', 'order', 'multiple', 'timeout', 'raw'];\nvar Validate = (function () {\n function Validate() {\n }\n Validate.isGeopoint = function (point, degree) {\n if (Util.whichType(degree) !== FieldType.Number) {\n throw new Error('Geo Point must be number type');\n }\n var degreeAbs = Math.abs(degree);\n if (point === 'latitude' && degreeAbs > 90) {\n throw new Error('latitude should be a number ranges from -90 to 90');\n }\n else if (point === 'longitude' && degreeAbs > 180) {\n throw new Error('longitude should be a number ranges from -180 to 180');\n }\n return true;\n };\n Validate.isInteger = function (param, num) {\n if (!Number.isInteger(num)) {\n throw new Error(param + ErrorCode.IntergerError);\n }\n return true;\n };\n Validate.mustBeBoolean = function (param, bool) {\n if (typeof bool !== 'boolean') {\n throw new Error(param + ErrorCode.BooleanError);\n }\n return true;\n };\n Validate.isProjection = function (param, value) {\n if (getType(value) !== 'object') {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: \"\".concat(param, \" projection must be an object\") }));\n }\n for (var key in value) {\n var subValue = value[key];\n if (getType(subValue) === 'number') {\n if (subValue !== 0 && subValue !== 1) {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: \"if the value in projection is of number, it must be 0 or 1\" }));\n }\n }\n else if (getType(subValue) === 'object') {\n }\n else {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: 'invalid projection' }));\n }\n }\n return true;\n };\n Validate.isOrder = function (param, value) {\n if (getType(value) !== 'object') {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: \"\".concat(param, \" order must be an object\") }));\n }\n for (var key in value) {\n var subValue = value[key];\n if (subValue !== 1 && subValue !== -1) {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: \"order value must be 1 or -1\" }));\n }\n }\n return true;\n };\n Validate.isFieldOrder = function (direction) {\n if (OrderDirectionList.indexOf(direction) === -1) {\n throw new Error(ErrorCode.DirectionError);\n }\n return true;\n };\n Validate.isFieldPath = function (path) {\n if (!/^[a-zA-Z0-9-_\\.]/.test(path)) {\n throw new Error();\n }\n return true;\n };\n Validate.isOperator = function (op) {\n if (WhereFilterOpList.indexOf(op) === -1) {\n throw new Error(ErrorCode.OpStrError);\n }\n return true;\n };\n Validate.isCollName = function (name) {\n if (!/^[a-zA-Z0-9]([a-zA-Z0-9-_]){1,32}$/.test(name)) {\n throw new Error(ErrorCode.CollNameError);\n }\n return true;\n };\n Validate.isDocID = function (docId) {\n if (!/^([a-fA-F0-9]){24}$/.test(docId)) {\n throw new Error(ErrorCode.DocIDError);\n }\n return true;\n };\n Validate.isValidOptions = function (options) {\n if (options === void 0) { options = {}; }\n if (getType(options) !== 'object') {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: \"options must be an object\" }));\n }\n var keys = Object.keys(options);\n for (var index in keys) {\n if (validOptionsKeys.indexOf(keys[index]) < 0) {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: \"\".concat(keys[index], \" is invalid options key\") }));\n }\n }\n var _a = options, limit = _a.limit, offset = _a.offset, projection = _a.projection, order = _a.order;\n var multiple = options.multiple;\n if (limit !== undefined) {\n Validate.isInteger('limit', limit);\n }\n if (offset !== undefined) {\n Validate.isInteger('offset', offset);\n }\n if (projection !== undefined) {\n Validate.isProjection('projection', projection);\n }\n if (order !== undefined) {\n Validate.isOrder('order', order);\n }\n if (multiple !== undefined) {\n Validate.mustBeBoolean('multiple', multiple);\n }\n if (options.timeout !== undefined) {\n Validate.isInteger('timeout', options.timeout);\n }\n return true;\n };\n Validate.isValidAggregation = function (stage) {\n if (Object.keys(stage).length !== 1) {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: \"aggregation stage must have one key\" }));\n }\n return true;\n };\n Validate.isCentersPhere = function (param) {\n if (Array.isArray(param) && param.length === 2) {\n if (getType(param[0]) === 'object' &&\n param[0]._internalType === SYMBOL_GEO_POINT &&\n typeof param[1] === 'number') {\n return true;\n }\n if (Array.isArray(param[0]) && param[0].length === 2) {\n var longitude = param[0][0];\n var latitude = param[0][1];\n Validate.isGeopoint('longitude', longitude);\n Validate.isGeopoint('latitude', latitude);\n if (typeof param[1] === 'number') {\n return true;\n }\n }\n }\n throw new Error(\"\".concat(ErrorCode.CentersPhereError));\n };\n return Validate;\n}());\nexport { Validate };\n","import { SYMBOL_UNSET_FIELD_NAME, SYMBOL_UPDATE_COMMAND } from '../helper/symbol';\nexport var UPDATE_COMMANDS_LITERAL;\n(function (UPDATE_COMMANDS_LITERAL) {\n UPDATE_COMMANDS_LITERAL[\"SET\"] = \"set\";\n UPDATE_COMMANDS_LITERAL[\"REMOVE\"] = \"remove\";\n UPDATE_COMMANDS_LITERAL[\"INC\"] = \"inc\";\n UPDATE_COMMANDS_LITERAL[\"MUL\"] = \"mul\";\n UPDATE_COMMANDS_LITERAL[\"PUSH\"] = \"push\";\n UPDATE_COMMANDS_LITERAL[\"PULL\"] = \"pull\";\n UPDATE_COMMANDS_LITERAL[\"PULL_ALL\"] = \"pullAll\";\n UPDATE_COMMANDS_LITERAL[\"POP\"] = \"pop\";\n UPDATE_COMMANDS_LITERAL[\"SHIFT\"] = \"shift\";\n UPDATE_COMMANDS_LITERAL[\"UNSHIFT\"] = \"unshift\";\n UPDATE_COMMANDS_LITERAL[\"ADD_TO_SET\"] = \"addToSet\";\n UPDATE_COMMANDS_LITERAL[\"BIT\"] = \"bit\";\n UPDATE_COMMANDS_LITERAL[\"RENAME\"] = \"rename\";\n UPDATE_COMMANDS_LITERAL[\"MAX\"] = \"max\";\n UPDATE_COMMANDS_LITERAL[\"MIN\"] = \"min\";\n})(UPDATE_COMMANDS_LITERAL || (UPDATE_COMMANDS_LITERAL = {}));\nvar UpdateCommand = (function () {\n function UpdateCommand(operator, operands, fieldName) {\n this._internalType = SYMBOL_UPDATE_COMMAND;\n Object.defineProperties(this, {\n _internalType: {\n enumerable: false,\n configurable: false,\n },\n });\n this.operator = operator;\n this.operands = operands;\n this.fieldName = fieldName || SYMBOL_UNSET_FIELD_NAME;\n }\n UpdateCommand.prototype._setFieldName = function (fieldName) {\n var command = new UpdateCommand(this.operator, this.operands, fieldName);\n return command;\n };\n return UpdateCommand;\n}());\nexport { UpdateCommand };\nexport function isUpdateCommand(object) {\n return object && (object instanceof UpdateCommand) && (object._internalType === SYMBOL_UPDATE_COMMAND);\n}\nexport function isKnownUpdateCommand(object) {\n return isUpdateCommand(object) && (object.operator.toUpperCase() in UPDATE_COMMANDS_LITERAL);\n}\nexport default UpdateCommand;\n","import { Validate } from '../validate';\nimport { SYMBOL_GEO_POINT } from '../helper/symbol';\nimport { isArray } from '../utils/type';\nvar Point = (function () {\n function Point(longitude, latitude) {\n Validate.isGeopoint('longitude', longitude);\n Validate.isGeopoint('latitude', latitude);\n this.longitude = longitude;\n this.latitude = latitude;\n }\n Point.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'Point',\n coordinates: [this.longitude, this.latitude]\n },\n _a;\n };\n Point.prototype.toJSON = function () {\n return {\n type: 'Point',\n coordinates: [\n this.longitude,\n this.latitude,\n ],\n };\n };\n Point.prototype.toReadableString = function () {\n return \"[\".concat(this.longitude, \",\").concat(this.latitude, \"]\");\n };\n Point.validate = function (point) {\n return point.type === 'Point' &&\n isArray(point.coordinates) &&\n Validate.isGeopoint('longitude', point.coordinates[0]) &&\n Validate.isGeopoint('latitude', point.coordinates[1]);\n };\n Object.defineProperty(Point.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_POINT;\n },\n enumerable: false,\n configurable: true\n });\n return Point;\n}());\nexport { Point };\n","import { SYMBOL_UNSET_FIELD_NAME, SYMBOL_LOGIC_COMMAND } from '../helper/symbol';\nimport { isQueryCommand } from './query';\nexport var AND = 'and';\nexport var OR = 'or';\nexport var NOT = 'not';\nexport var NOR = 'nor';\nexport var LOGIC_COMMANDS_LITERAL;\n(function (LOGIC_COMMANDS_LITERAL) {\n LOGIC_COMMANDS_LITERAL[\"AND\"] = \"and\";\n LOGIC_COMMANDS_LITERAL[\"OR\"] = \"or\";\n LOGIC_COMMANDS_LITERAL[\"NOT\"] = \"not\";\n LOGIC_COMMANDS_LITERAL[\"NOR\"] = \"nor\";\n})(LOGIC_COMMANDS_LITERAL || (LOGIC_COMMANDS_LITERAL = {}));\nvar LogicCommand = (function () {\n function LogicCommand(operator, operands, fieldName) {\n this._internalType = SYMBOL_LOGIC_COMMAND;\n Object.defineProperties(this, {\n _internalType: {\n enumerable: false,\n configurable: false,\n },\n });\n this.operator = operator;\n this.operands = operands;\n this.fieldName = fieldName || SYMBOL_UNSET_FIELD_NAME;\n if (this.fieldName !== SYMBOL_UNSET_FIELD_NAME) {\n if (Array.isArray(operands)) {\n operands = operands.slice();\n this.operands = operands;\n for (var i = 0, len = operands.length; i < len; i++) {\n var query = operands[i];\n if (isLogicCommand(query) || isQueryCommand(query)) {\n operands[i] = query._setFieldName(this.fieldName);\n }\n }\n }\n else {\n var query = operands;\n if (isLogicCommand(query) || isQueryCommand(query)) {\n operands = query._setFieldName(this.fieldName);\n }\n }\n }\n }\n LogicCommand.prototype._setFieldName = function (fieldName) {\n var operands = this.operands.map(function (operand) {\n if (operand instanceof LogicCommand) {\n return operand._setFieldName(fieldName);\n }\n else {\n return operand;\n }\n });\n var command = new LogicCommand(this.operator, operands, fieldName);\n return command;\n };\n LogicCommand.prototype.and = function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = Array.isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n expressions.unshift(this);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.AND, expressions, this.fieldName);\n };\n LogicCommand.prototype.or = function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = Array.isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n expressions.unshift(this);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.OR, expressions, this.fieldName);\n };\n return LogicCommand;\n}());\nexport { LogicCommand };\nexport function isLogicCommand(object) {\n return object && (object instanceof LogicCommand) && (object._internalType === SYMBOL_LOGIC_COMMAND);\n}\nexport function isKnownLogicCommand(object) {\n return isLogicCommand && (object.operator.toUpperCase() in LOGIC_COMMANDS_LITERAL);\n}\nexport default LogicCommand;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { LogicCommand } from './logic';\nimport { SYMBOL_QUERY_COMMAND } from '../helper/symbol';\nimport { Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon } from '../geo/index';\nimport { isNumber } from '../utils/type';\nimport { Validate } from '../validate';\nexport var EQ = 'eq';\nexport var NEQ = 'neq';\nexport var GT = 'gt';\nexport var GTE = 'gte';\nexport var LT = 'lt';\nexport var LTE = 'lte';\nexport var IN = 'in';\nexport var NIN = 'nin';\nexport var ALL = 'all';\nexport var ELEM_MATCH = 'elemMatch';\nexport var EXISTS = 'exists';\nexport var SIZE = 'size';\nexport var MOD = 'mod';\nexport var QUERY_COMMANDS_LITERAL;\n(function (QUERY_COMMANDS_LITERAL) {\n QUERY_COMMANDS_LITERAL[\"EQ\"] = \"eq\";\n QUERY_COMMANDS_LITERAL[\"NEQ\"] = \"neq\";\n QUERY_COMMANDS_LITERAL[\"GT\"] = \"gt\";\n QUERY_COMMANDS_LITERAL[\"GTE\"] = \"gte\";\n QUERY_COMMANDS_LITERAL[\"LT\"] = \"lt\";\n QUERY_COMMANDS_LITERAL[\"LTE\"] = \"lte\";\n QUERY_COMMANDS_LITERAL[\"IN\"] = \"in\";\n QUERY_COMMANDS_LITERAL[\"NIN\"] = \"nin\";\n QUERY_COMMANDS_LITERAL[\"ALL\"] = \"all\";\n QUERY_COMMANDS_LITERAL[\"ELEM_MATCH\"] = \"elemMatch\";\n QUERY_COMMANDS_LITERAL[\"EXISTS\"] = \"exists\";\n QUERY_COMMANDS_LITERAL[\"SIZE\"] = \"size\";\n QUERY_COMMANDS_LITERAL[\"MOD\"] = \"mod\";\n QUERY_COMMANDS_LITERAL[\"GEO_NEAR\"] = \"geoNear\";\n QUERY_COMMANDS_LITERAL[\"GEO_WITHIN\"] = \"geoWithin\";\n QUERY_COMMANDS_LITERAL[\"GEO_INTERSECTS\"] = \"geoIntersects\";\n})(QUERY_COMMANDS_LITERAL || (QUERY_COMMANDS_LITERAL = {}));\nvar QueryCommand = (function (_super) {\n __extends(QueryCommand, _super);\n function QueryCommand(operator, operands, fieldName) {\n var _this = _super.call(this, operator, operands, fieldName) || this;\n _this.operator = operator;\n _this._internalType = SYMBOL_QUERY_COMMAND;\n return _this;\n }\n QueryCommand.prototype.toJSON = function () {\n var _a, _b, _c;\n switch (this.operator) {\n case QUERY_COMMANDS_LITERAL.IN:\n case QUERY_COMMANDS_LITERAL.NIN:\n return _a = {},\n _a['$' + this.operator] = this.operands,\n _a;\n case QUERY_COMMANDS_LITERAL.NEQ:\n return _b = {},\n _b['$ne'] = this.operands[0],\n _b;\n default:\n return _c = {},\n _c['$' + this.operator] = this.operands[0],\n _c;\n }\n };\n QueryCommand.prototype._setFieldName = function (fieldName) {\n var command = new QueryCommand(this.operator, this.operands, fieldName);\n return command;\n };\n QueryCommand.prototype.eq = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.EQ, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.neq = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.NEQ, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.gt = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.GT, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.gte = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.GTE, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.lt = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.LT, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.lte = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.LTE, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.in = function (list) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.IN, list, this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.nin = function (list) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.NIN, list, this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.geoNear = function (val) {\n if (!(val.geometry instanceof Point)) {\n throw new TypeError(\"\\\"geometry\\\" must be of type Point. Received type \".concat(typeof val.geometry));\n }\n if (val.maxDistance !== undefined && !isNumber(val.maxDistance)) {\n throw new TypeError(\"\\\"maxDistance\\\" must be of type Number. Received type \".concat(typeof val.maxDistance));\n }\n if (val.minDistance !== undefined && !isNumber(val.minDistance)) {\n throw new TypeError(\"\\\"minDistance\\\" must be of type Number. Received type \".concat(typeof val.minDistance));\n }\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_NEAR, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.geoWithin = function (val) {\n if (!(val.geometry instanceof MultiPolygon) &&\n !(val.geometry instanceof Polygon) &&\n !Validate.isCentersPhere(val.centerSphere)) {\n throw new TypeError(\"\\\"geometry\\\" must be of type Polygon or MultiPolygon. Received type \".concat(typeof val.geometry));\n }\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_WITHIN, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.geoIntersects = function (val) {\n if (!(val.geometry instanceof Point) &&\n !(val.geometry instanceof LineString) &&\n !(val.geometry instanceof Polygon) &&\n !(val.geometry instanceof MultiPoint) &&\n !(val.geometry instanceof MultiLineString) &&\n !(val.geometry instanceof MultiPolygon)) {\n throw new TypeError(\"\\\"geometry\\\" must be of type Point, LineString, Polygon, MultiPoint, MultiLineString or MultiPolygon. Received type \".concat(typeof val.geometry));\n }\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_INTERSECTS, [val], this.fieldName);\n return this.and(command);\n };\n return QueryCommand;\n}(LogicCommand));\nexport { QueryCommand };\nexport function isQueryCommand(object) {\n return object && object instanceof QueryCommand && object._internalType === SYMBOL_QUERY_COMMAND;\n}\nexport function isKnownQueryCommand(object) {\n return isQueryCommand(object) && object.operator.toUpperCase() in QUERY_COMMANDS_LITERAL;\n}\nexport function isComparisonCommand(object) {\n return isQueryCommand(object);\n}\nexport default QueryCommand;\n","import { QUERY_COMMANDS_LITERAL } from './commands/query';\nimport { LOGIC_COMMANDS_LITERAL } from './commands/logic';\nimport { UPDATE_COMMANDS_LITERAL } from './commands/update';\nexport var OperatorMap = {};\nfor (var key in QUERY_COMMANDS_LITERAL) {\n OperatorMap[key] = '$' + key;\n}\nfor (var key in LOGIC_COMMANDS_LITERAL) {\n OperatorMap[key] = '$' + key;\n}\nfor (var key in UPDATE_COMMANDS_LITERAL) {\n OperatorMap[key] = '$' + key;\n}\nOperatorMap[QUERY_COMMANDS_LITERAL.NEQ] = '$ne';\nOperatorMap[UPDATE_COMMANDS_LITERAL.REMOVE] = '$unset';\nOperatorMap[UPDATE_COMMANDS_LITERAL.SHIFT] = '$pop';\nOperatorMap[UPDATE_COMMANDS_LITERAL.UNSHIFT] = '$push';\nexport function operatorToString(operator) {\n return OperatorMap[operator] || '$' + operator;\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { SYMBOL_GEO_POINT, SYMBOL_SERVER_DATE, SYMBOL_OBJECTID, SYMBOL_REGEXP } from '../helper/symbol';\nimport { getType, isObject, isArray, isDate, isNumber, isInternalObject, isRegExp } from '../utils/type';\nimport { Point } from '../geo/index';\nimport { ServerDate } from '../serverDate/index';\nexport function serialize(val) {\n return serializeHelper(val, [val]);\n}\nfunction serializeHelper(val, visited) {\n if (isInternalObject(val)) {\n switch (val._internalType) {\n case SYMBOL_GEO_POINT: {\n return val.toJSON();\n }\n case SYMBOL_SERVER_DATE: {\n return val.parse();\n }\n case SYMBOL_REGEXP: {\n return val.parse();\n }\n case SYMBOL_OBJECTID: {\n return val.parse();\n }\n default: {\n return val.toJSON ? val.toJSON() : val;\n }\n }\n }\n else if (isDate(val)) {\n return val;\n }\n else if (isRegExp(val)) {\n return {\n $regularExpression: {\n pattern: val.source,\n options: val.flags\n }\n };\n }\n else if (isArray(val)) {\n return val.map(function (item) {\n if (visited.indexOf(item) > -1) {\n throw new Error('Cannot convert circular structure to JSON');\n }\n return serializeHelper(item, __spreadArray(__spreadArray([], __read(visited), false), [item], false));\n });\n }\n else if (isObject(val)) {\n var rawRet = __assign({}, val);\n var finalRet = {};\n for (var key in rawRet) {\n if (visited.indexOf(rawRet[key]) > -1) {\n throw new Error('Cannot convert circular structure to JSON');\n }\n if (rawRet[key] !== undefined) {\n finalRet[key] = serializeHelper(rawRet[key], __spreadArray(__spreadArray([], __read(visited), false), [rawRet[key]], false));\n }\n }\n return finalRet;\n }\n else {\n return val;\n }\n}\nexport function deserialize(object) {\n var ret = __assign({}, object);\n for (var key in ret) {\n switch (key) {\n case '$date': {\n switch (getType(ret[key])) {\n case 'number': {\n return new Date(ret[key]);\n }\n case 'object': {\n return new ServerDate(ret[key]);\n }\n }\n break;\n }\n case 'type': {\n switch (ret.type) {\n case 'Point': {\n if (isArray(ret.coordinates) &&\n isNumber(ret.coordinates[0]) &&\n isNumber(ret.coordinates[1])) {\n return new Point(ret.coordinates[0], ret.coordinates[1]);\n }\n break;\n }\n }\n break;\n }\n }\n }\n return object;\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { getType, isObject, isArray, isDate, isRegExp, isInternalObject } from '../utils/type';\nimport { serialize as serializeInternalDataType, deserialize as deserializeInternalDataType } from './datatype';\nfunction flatten(query, shouldPreserverObject, parents, visited) {\n var cloned = __assign({}, query);\n for (var key in query) {\n if (/^\\$/.test(key))\n continue;\n var value = query[key];\n if (value === undefined) {\n delete cloned[key];\n continue;\n }\n if (!value)\n continue;\n if (isObject(value) && !shouldPreserverObject(value)) {\n if (visited.indexOf(value) > -1) {\n throw new Error('Cannot convert circular structure to JSON');\n }\n var newParents = __spreadArray(__spreadArray([], __read(parents), false), [key], false);\n var newVisited = __spreadArray(__spreadArray([], __read(visited), false), [value], false);\n var flattenedChild = flatten(value, shouldPreserverObject, newParents, newVisited);\n cloned[key] = flattenedChild;\n var hasKeyNotCombined = false;\n for (var childKey in flattenedChild) {\n if (!/^\\$/.test(childKey)) {\n cloned[\"\".concat(key, \".\").concat(childKey)] = flattenedChild[childKey];\n delete cloned[key][childKey];\n }\n else {\n hasKeyNotCombined = true;\n }\n }\n if (!hasKeyNotCombined) {\n delete cloned[key];\n }\n }\n }\n return cloned;\n}\nexport function flattenQueryObject(query) {\n return flatten(query, isConversionRequired, [], [query]);\n}\nexport function flattenObject(object) {\n return flatten(object, function (_) { return false; }, [], [object]);\n}\nexport function mergeConditionAfterEncode(query, condition, key) {\n if (!condition[key]) {\n delete query[key];\n }\n for (var conditionKey in condition) {\n if (query[conditionKey]) {\n if (isArray(query[conditionKey])) {\n query[conditionKey].push(condition[conditionKey]);\n }\n else if (isObject(query[conditionKey])) {\n if (isObject(condition[conditionKey])) {\n Object.assign(query[conditionKey], condition[conditionKey]);\n }\n else {\n console.warn(\"unmergable condition, query is object but condition is \".concat(getType(condition), \", can only overwrite\"), condition, key);\n query[conditionKey] = condition[conditionKey];\n }\n }\n else {\n console.warn(\"to-merge query is of type \".concat(getType(query), \", can only overwrite\"), query, condition, key);\n query[conditionKey] = condition[conditionKey];\n }\n }\n else {\n query[conditionKey] = condition[conditionKey];\n }\n }\n}\nexport function isConversionRequired(val) {\n return isInternalObject(val) || isDate(val) || isRegExp(val);\n}\nexport function encodeInternalDataType(val) {\n return serializeInternalDataType(val);\n}\nexport function decodeInternalDataType(object) {\n return deserializeInternalDataType(object);\n}\n","import { UpdateCommand, isUpdateCommand, UPDATE_COMMANDS_LITERAL } from '../commands/update';\nimport { SYMBOL_UNSET_FIELD_NAME } from '../helper/symbol';\nimport { getType, isArray } from '../utils/type';\nimport { operatorToString } from '../operator-map';\nimport { flattenQueryObject, encodeInternalDataType, mergeConditionAfterEncode } from './common';\nimport { stringifyByEJSON } from '../utils/utils';\nvar UpdateSerializer = (function () {\n function UpdateSerializer() {\n }\n UpdateSerializer.encode = function (query) {\n var stringifier = new UpdateSerializer();\n return stringifier.encodeUpdate(query);\n };\n UpdateSerializer.encodeEJSON = function (query, raw) {\n var stringifier = new UpdateSerializer();\n return stringifyByEJSON(raw ? query : stringifier.encodeUpdate(query));\n };\n UpdateSerializer.prototype.encodeUpdate = function (query) {\n if (isUpdateCommand(query)) {\n return this.encodeUpdateCommand(query);\n }\n else if (getType(query) === 'object') {\n return this.encodeUpdateObject(query);\n }\n else {\n return query;\n }\n };\n UpdateSerializer.prototype.encodeUpdateCommand = function (query) {\n if (query.fieldName === SYMBOL_UNSET_FIELD_NAME) {\n throw new Error('Cannot encode a comparison command with unset field name');\n }\n switch (query.operator) {\n case UPDATE_COMMANDS_LITERAL.PUSH:\n case UPDATE_COMMANDS_LITERAL.PULL:\n case UPDATE_COMMANDS_LITERAL.PULL_ALL:\n case UPDATE_COMMANDS_LITERAL.POP:\n case UPDATE_COMMANDS_LITERAL.SHIFT:\n case UPDATE_COMMANDS_LITERAL.UNSHIFT:\n case UPDATE_COMMANDS_LITERAL.ADD_TO_SET: {\n return this.encodeArrayUpdateCommand(query);\n }\n default: {\n return this.encodeFieldUpdateCommand(query);\n }\n }\n };\n UpdateSerializer.prototype.encodeFieldUpdateCommand = function (query) {\n var _a, _b, _c, _d;\n var $op = operatorToString(query.operator);\n switch (query.operator) {\n case UPDATE_COMMANDS_LITERAL.REMOVE: {\n return _a = {},\n _a[$op] = (_b = {},\n _b[query.fieldName] = '',\n _b),\n _a;\n }\n default: {\n return _c = {},\n _c[$op] = (_d = {},\n _d[query.fieldName] = query.operands[0],\n _d),\n _c;\n }\n }\n };\n UpdateSerializer.prototype.encodeArrayUpdateCommand = function (query) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n var $op = operatorToString(query.operator);\n switch (query.operator) {\n case UPDATE_COMMANDS_LITERAL.PUSH: {\n var modifiers = void 0;\n if (isArray(query.operands)) {\n modifiers = {\n $each: query.operands.map(encodeInternalDataType)\n };\n }\n else {\n modifiers = query.operands;\n }\n return _a = {},\n _a[$op] = (_b = {},\n _b[query.fieldName] = modifiers,\n _b),\n _a;\n }\n case UPDATE_COMMANDS_LITERAL.UNSHIFT: {\n var modifiers = {\n $each: query.operands.map(encodeInternalDataType),\n $position: 0\n };\n return _c = {},\n _c[$op] = (_d = {},\n _d[query.fieldName] = modifiers,\n _d),\n _c;\n }\n case UPDATE_COMMANDS_LITERAL.POP: {\n return _e = {},\n _e[$op] = (_f = {},\n _f[query.fieldName] = 1,\n _f),\n _e;\n }\n case UPDATE_COMMANDS_LITERAL.SHIFT: {\n return _g = {},\n _g[$op] = (_h = {},\n _h[query.fieldName] = -1,\n _h),\n _g;\n }\n default: {\n return _j = {},\n _j[$op] = (_k = {},\n _k[query.fieldName] = encodeInternalDataType(query.operands),\n _k),\n _j;\n }\n }\n };\n UpdateSerializer.prototype.encodeUpdateObject = function (query) {\n var flattened = flattenQueryObject(query);\n for (var key in flattened) {\n if (/^\\$/.test(key))\n continue;\n var val = flattened[key];\n if (isUpdateCommand(val)) {\n flattened[key] = val._setFieldName(key);\n var condition = this.encodeUpdateCommand(flattened[key]);\n mergeConditionAfterEncode(flattened, condition, key);\n }\n else {\n flattened[key] = val = encodeInternalDataType(val);\n var $setCommand = new UpdateCommand(UPDATE_COMMANDS_LITERAL.SET, [val], key);\n var condition = this.encodeUpdateCommand($setCommand);\n mergeConditionAfterEncode(flattened, condition, key);\n }\n }\n return flattened;\n };\n return UpdateSerializer;\n}());\nexport { UpdateSerializer };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Db } from './index';\nimport { Util } from './util';\nimport { UpdateSerializer } from './serializer/update';\nimport { serialize } from './serializer/datatype';\nimport { UpdateCommand } from './commands/update';\nimport { QueryType } from './constant';\nimport { getWsInstance, getReqOpts, stringifyByEJSON, processReturn, withCallback } from './utils/utils';\nimport { ERRORS } from './const/code';\nimport { EJSON } from 'bson';\nvar DocumentReference = (function () {\n function DocumentReference(db, coll, apiOptions, docID, transactionId) {\n var _this = this;\n this.watch = function (options) {\n var ws = getWsInstance(_this._db);\n return ws.watch(__assign(__assign({}, options), { envId: _this._db.config.env, collectionName: _this._coll, query: JSON.stringify({\n _id: _this.id\n }) }));\n };\n this._db = db;\n this._coll = coll;\n this.id = docID;\n this._transactionId = transactionId;\n this.request = Db.createRequest(this._db.config);\n this._apiOptions = apiOptions;\n }\n DocumentReference.prototype.create = function (data, callback) {\n return withCallback(this._create(data), callback);\n };\n DocumentReference.prototype._create = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var isBatch, params, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isBatch = Array.isArray(data);\n if (!isBatch && this.id) {\n data['_id'] = this.id;\n }\n params = {\n collectionName: this._coll,\n data: isBatch\n ? data.map(function (item) { return stringifyByEJSON(serialize(item)); })\n : [stringifyByEJSON(serialize(data))],\n transactionId: this._transactionId\n };\n return [4, this.request.send('database.insertDocument', params, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n if (this._transactionId) {\n return [2, {\n inserted: 1,\n ok: 1,\n id: res.data.insertedIds[0],\n requestId: res.requestId\n }];\n }\n if (isBatch) {\n return [2, {\n ids: (res.data && res.data.insertedIds) || [],\n requestId: res.requestId\n }];\n }\n return [2, {\n id: res.data.insertedIds[0],\n requestId: res.requestId\n }];\n }\n });\n });\n };\n DocumentReference.prototype.set = function (data, callback) {\n return withCallback(this._set(data), callback);\n };\n DocumentReference.prototype._set = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var hasOperator, checkMixed, param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.id) {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: 'docId不能为空' }))];\n }\n if (!data || typeof data !== 'object') {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '参数必需是非空对象' }))];\n }\n if (data.hasOwnProperty('_id')) {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '不能更新_id的值' }))];\n }\n hasOperator = false;\n checkMixed = function (objs) {\n if (typeof objs === 'object') {\n for (var key in objs) {\n if (objs[key] instanceof UpdateCommand) {\n hasOperator = true;\n }\n else if (typeof objs[key] === 'object') {\n checkMixed(objs[key]);\n }\n }\n }\n };\n checkMixed(data);\n if (hasOperator) {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.DATABASE_REQUEST_FAILED), { message: 'update operator complicit' }))];\n }\n param = {\n collectionName: this._coll,\n queryType: QueryType.DOC,\n data: stringifyByEJSON(serialize(data)),\n transactionId: this._transactionId,\n multi: false,\n merge: false,\n upsert: true\n };\n if (this.id) {\n param['query'] = stringifyByEJSON({ _id: this.id });\n }\n return [4, this.request.send('database.modifyDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n if (this._transactionId) {\n return [2, {\n updated: res.data.updated,\n upserted: [{ _id: res.data.upsert_id }],\n requestId: res.requestId\n }];\n }\n return [2, {\n updated: res.data.updated,\n upsertedId: res.data.upsert_id,\n requestId: res.requestId\n }];\n }\n });\n });\n };\n DocumentReference.prototype.update = function (data, callback) {\n return withCallback(this._update(data), callback);\n };\n DocumentReference.prototype._update = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var query, param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!data || typeof data !== 'object') {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '参数必需是非空对象' }))];\n }\n if (data.hasOwnProperty('_id')) {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '不能更新_id的值' }))];\n }\n query = stringifyByEJSON({ _id: this.id });\n param = {\n collectionName: this._coll,\n transactionId: this._transactionId,\n data: UpdateSerializer.encodeEJSON(data, this._apiOptions.raw || false),\n query: query,\n queryType: QueryType.DOC,\n multi: false,\n merge: true,\n upsert: false\n };\n return [4, this.request.send('database.modifyDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n return [2, {\n updated: res.data.updated,\n requestId: res.requestId\n }];\n }\n });\n });\n };\n DocumentReference.prototype.delete = function (callback) {\n return this.remove(callback);\n };\n DocumentReference.prototype.remove = function (callback) {\n return withCallback(this._remove(), callback);\n };\n DocumentReference.prototype._remove = function () {\n return __awaiter(this, void 0, void 0, function () {\n var query, param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n query = stringifyByEJSON({ _id: this.id });\n param = {\n collectionName: this._coll,\n transactionId: this._transactionId,\n query: query,\n queryType: QueryType.DOC,\n multi: false\n };\n return [4, this.request.send('database.removeDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n return [2, {\n deleted: res.data.deleted,\n requestId: res.requestId\n }];\n }\n });\n });\n };\n DocumentReference.prototype.get = function (callback) {\n return withCallback(this._get(), callback);\n };\n DocumentReference.prototype._get = function () {\n return __awaiter(this, void 0, void 0, function () {\n var query, projection, param, res, list, documents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n query = stringifyByEJSON({ _id: this.id });\n projection = this._apiOptions.projection;\n param = {\n collectionName: this._coll,\n query: query,\n transactionId: this._transactionId,\n queryType: QueryType.DOC,\n multi: false\n };\n if (projection) {\n param.projection = stringifyByEJSON(projection);\n }\n return [4, this.request.send('database.getDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n list = res.data.list.map(function (item) { return EJSON.parse(item); });\n documents = Util.formatResDocumentData(list);\n if (this._transactionId) {\n return [2, {\n data: documents[0] || null,\n requestId: res.requestId\n }];\n }\n return [2, {\n data: documents,\n requestId: res.requestId\n }];\n }\n });\n });\n };\n DocumentReference.prototype.field = function (projection) {\n var transformProjection = {};\n for (var k in projection) {\n if (typeof projection[k] === 'boolean') {\n transformProjection[k] = projection[k] === true ? 1 : 0;\n }\n if (typeof projection[k] === 'number') {\n transformProjection[k] = projection[k] > 0 ? 1 : 0;\n }\n if (typeof projection[k] === 'object') {\n transformProjection[k] = projection[k];\n }\n }\n var newApiOption = __assign({}, this._apiOptions);\n newApiOption.projection = transformProjection;\n return new DocumentReference(this._db, this._coll, newApiOption, this.id, this._transactionId);\n };\n return DocumentReference;\n}());\nexport { DocumentReference };\n","import { isQueryCommand, isComparisonCommand, QUERY_COMMANDS_LITERAL } from '../commands/query';\nimport { isLogicCommand, LOGIC_COMMANDS_LITERAL } from '../commands/logic';\nimport { SYMBOL_UNSET_FIELD_NAME, SYMBOL_GEO_POINT } from '../helper/symbol';\nimport { getType, isObject, isArray, isRegExp, isDate } from '../utils/type';\nimport { operatorToString } from '../operator-map';\nimport { flattenQueryObject, isConversionRequired, encodeInternalDataType } from './common';\nimport { stringifyByEJSON } from '../utils/utils';\nimport { Validate } from '../validate';\nvar QuerySerializer = (function () {\n function QuerySerializer() {\n }\n QuerySerializer.encode = function (query) {\n var encoder = new QueryEncoder();\n return encoder.encodeQuery(query);\n };\n QuerySerializer.encodeEJSON = function (query, raw) {\n var encoder = new QueryEncoder();\n return stringifyByEJSON(raw ? query : encoder.encodeQuery(query));\n };\n return QuerySerializer;\n}());\nexport { QuerySerializer };\nvar QueryEncoder = (function () {\n function QueryEncoder() {\n }\n QueryEncoder.prototype.encodeQuery = function (query, key) {\n var _a, _b, _c;\n if (isConversionRequired(query)) {\n if (isLogicCommand(query)) {\n return this.encodeLogicCommand(query);\n }\n else if (isQueryCommand(query)) {\n return this.encodeQueryCommand(query);\n }\n else if (isRegExp(query)) {\n return _a = {}, _a[key] = this.encodeRegExp(query), _a;\n }\n else if (isDate(query)) {\n return _b = {}, _b[key] = encodeInternalDataType(query), _b;\n }\n else {\n return _c = {}, _c[key] = this.encodeQueryObject(query), _c;\n }\n }\n else {\n if (isObject(query)) {\n return this.encodeQueryObject(query);\n }\n else {\n return query;\n }\n }\n };\n QueryEncoder.prototype.encodeRegExp = function (query) {\n return {\n $regularExpression: {\n pattern: query.source,\n options: query.flags\n }\n };\n };\n QueryEncoder.prototype.encodeLogicCommand = function (query) {\n var _a, _b, _c, _d, _e, _f, _g;\n var _this = this;\n switch (query.operator) {\n case LOGIC_COMMANDS_LITERAL.NOR:\n case LOGIC_COMMANDS_LITERAL.AND:\n case LOGIC_COMMANDS_LITERAL.OR: {\n var $op = operatorToString(query.operator);\n var subqueries = query.operands.map(function (oprand) { return _this.encodeQuery(oprand, query.fieldName); });\n return _a = {},\n _a[$op] = subqueries,\n _a;\n }\n case LOGIC_COMMANDS_LITERAL.NOT: {\n var $op = operatorToString(query.operator);\n var operatorExpression = query.operands[0];\n if (isRegExp(operatorExpression)) {\n return _b = {},\n _b[query.fieldName] = (_c = {},\n _c[$op] = this.encodeRegExp(operatorExpression),\n _c),\n _b;\n }\n else {\n var subqueries = this.encodeQuery(operatorExpression)[query.fieldName];\n return _d = {},\n _d[query.fieldName] = (_e = {},\n _e[$op] = subqueries,\n _e),\n _d;\n }\n }\n default: {\n var $op = operatorToString(query.operator);\n if (query.operands.length === 1) {\n var subquery = this.encodeQuery(query.operands[0]);\n return _f = {},\n _f[$op] = subquery,\n _f;\n }\n else {\n var subqueries = query.operands.map(this.encodeQuery.bind(this));\n return _g = {},\n _g[$op] = subqueries,\n _g;\n }\n }\n }\n };\n QueryEncoder.prototype.encodeQueryCommand = function (query) {\n if (isComparisonCommand(query)) {\n return this.encodeComparisonCommand(query);\n }\n else {\n return this.encodeComparisonCommand(query);\n }\n };\n QueryEncoder.prototype.encodeComparisonCommand = function (query) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n if (query.fieldName === SYMBOL_UNSET_FIELD_NAME) {\n throw new Error('Cannot encode a comparison command with unset field name');\n }\n var $op = operatorToString(query.operator);\n switch (query.operator) {\n case QUERY_COMMANDS_LITERAL.EQ:\n case QUERY_COMMANDS_LITERAL.NEQ:\n case QUERY_COMMANDS_LITERAL.LT:\n case QUERY_COMMANDS_LITERAL.LTE:\n case QUERY_COMMANDS_LITERAL.GT:\n case QUERY_COMMANDS_LITERAL.GTE:\n case QUERY_COMMANDS_LITERAL.ELEM_MATCH:\n case QUERY_COMMANDS_LITERAL.EXISTS:\n case QUERY_COMMANDS_LITERAL.SIZE:\n case QUERY_COMMANDS_LITERAL.MOD: {\n return _a = {},\n _a[query.fieldName] = (_b = {},\n _b[$op] = encodeInternalDataType(query.operands[0]),\n _b),\n _a;\n }\n case QUERY_COMMANDS_LITERAL.IN:\n case QUERY_COMMANDS_LITERAL.NIN:\n case QUERY_COMMANDS_LITERAL.ALL: {\n return _c = {},\n _c[query.fieldName] = (_d = {},\n _d[$op] = encodeInternalDataType(query.operands),\n _d),\n _c;\n }\n case QUERY_COMMANDS_LITERAL.GEO_NEAR: {\n var options = query.operands[0];\n return _e = {},\n _e[query.fieldName] = {\n $nearSphere: {\n $geometry: options.geometry.toJSON(),\n $maxDistance: options.maxDistance,\n $minDistance: options.minDistance\n }\n },\n _e;\n }\n case QUERY_COMMANDS_LITERAL.GEO_WITHIN: {\n var options = query.operands[0];\n if (options.centerSphere) {\n Validate.isCentersPhere(options.centerSphere);\n var centerSphere = options.centerSphere;\n if (centerSphere[0]._internalType === SYMBOL_GEO_POINT) {\n return _f = {},\n _f[query.fieldName] = {\n $geoWithin: {\n $centerSphere: [centerSphere[0].toJSON().coordinates, centerSphere[1]]\n }\n },\n _f;\n }\n return _g = {},\n _g[query.fieldName] = {\n $geoWithin: {\n $centerSphere: options.centerSphere\n }\n },\n _g;\n }\n return _h = {},\n _h[query.fieldName] = {\n $geoWithin: {\n $geometry: options.geometry.toJSON()\n }\n },\n _h;\n }\n case QUERY_COMMANDS_LITERAL.GEO_INTERSECTS: {\n var options = query.operands[0];\n return _j = {},\n _j[query.fieldName] = {\n $geoIntersects: {\n $geometry: options.geometry.toJSON()\n }\n },\n _j;\n }\n default: {\n return _k = {},\n _k[query.fieldName] = (_l = {},\n _l[$op] = encodeInternalDataType(query.operands[0]),\n _l),\n _k;\n }\n }\n };\n QueryEncoder.prototype.encodeQueryObject = function (query) {\n var flattened = flattenQueryObject(query);\n for (var key in flattened) {\n var val = flattened[key];\n if (isLogicCommand(val)) {\n flattened[key] = val._setFieldName(key);\n var condition = this.encodeLogicCommand(flattened[key]);\n this.mergeConditionAfterEncode(flattened, condition, key);\n }\n else if (isComparisonCommand(val)) {\n flattened[key] = val._setFieldName(key);\n var condition = this.encodeComparisonCommand(flattened[key]);\n this.mergeConditionAfterEncode(flattened, condition, key);\n }\n else if (isConversionRequired(val)) {\n flattened[key] = encodeInternalDataType(val);\n }\n }\n return flattened;\n };\n QueryEncoder.prototype.mergeConditionAfterEncode = function (query, condition, key) {\n if (!condition[key]) {\n delete query[key];\n }\n for (var conditionKey in condition) {\n if (query[conditionKey]) {\n if (isArray(query[conditionKey])) {\n query[conditionKey] = query[conditionKey].concat(condition[conditionKey]);\n }\n else if (isObject(query[conditionKey])) {\n if (isObject(condition[conditionKey])) {\n Object.assign(query, condition);\n }\n else {\n console.warn(\"unmergable condition, query is object but condition is \".concat(getType(condition), \", can only overwrite\"), condition, key);\n query[conditionKey] = condition[conditionKey];\n }\n }\n else {\n console.warn(\"to-merge query is of type \".concat(getType(query), \", can only overwrite\"), query, condition, key);\n query[conditionKey] = condition[conditionKey];\n }\n }\n else {\n query[conditionKey] = condition[conditionKey];\n }\n }\n };\n return QueryEncoder;\n}());\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { QueryType } from './constant';\nimport { Db } from './index';\nimport { Validate } from './validate';\nimport { Util } from './util';\nimport { QuerySerializer } from './serializer/query';\nimport { UpdateSerializer } from './serializer/update';\nimport { ErrorCode } from './constant';\nimport { getWsInstance, getReqOpts, stringifyByEJSON, processReturn, withCallback } from './utils/utils';\nimport { ERRORS } from './const/code';\nimport { EJSON } from 'bson';\nvar Query = (function () {\n function Query(db, coll, fieldFilters, apiOptions, transactionId) {\n var _this = this;\n this.watch = function (options) {\n var ws = getWsInstance(_this._db);\n var _a = _this._apiOptions, limit = _a.limit, order = _a.order;\n return ws.watch(__assign(__assign({}, options), { envId: _this._db.config.env, collectionName: _this._coll, query: JSON.stringify(_this._fieldFilters), limit: limit, orderBy: order\n ? order.reduce(function (acc, cur) {\n acc[cur.field] = cur.direction;\n return acc;\n }, {})\n : undefined }));\n };\n this._db = db;\n this._coll = coll;\n this._fieldFilters = fieldFilters;\n this._apiOptions = apiOptions || {};\n this._request = Db.createRequest(this._db.config);\n this._transactionId = transactionId;\n }\n Query.prototype.get = function (callback) {\n return withCallback(this._get(), callback);\n };\n Query.prototype._get = function () {\n return __awaiter(this, void 0, void 0, function () {\n var order, param, offset, limit, projection, res, list, documents, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n order = this._apiOptions.order;\n param = {\n collectionName: this._coll,\n queryType: QueryType.WHERE,\n transactionId: this._transactionId\n };\n if (this._fieldFilters) {\n param.query = this._fieldFilters;\n }\n if (order) {\n param.order = stringifyByEJSON(order);\n }\n offset = this._apiOptions.offset;\n if (offset) {\n param.offset = offset;\n }\n limit = this._apiOptions.limit;\n if (limit) {\n param.limit = limit < 1000 ? limit : 1000;\n }\n else {\n param.limit = 100;\n }\n projection = this._apiOptions.projection;\n if (projection) {\n param.projection = stringifyByEJSON(projection);\n }\n return [4, this._request.send('database.getDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n list = res.data.list.map(function (item) { return EJSON.parse(item); });\n documents = Util.formatResDocumentData(list);\n result = {\n data: documents,\n requestId: res.requestId\n };\n if (res.total)\n result.total = res.total;\n if (res.limit)\n result.limit = res.limit;\n if (res.offset)\n result.offset = res.offset;\n return [2, result];\n }\n });\n });\n };\n Query.prototype.count = function (callback) {\n return withCallback(this._count(), callback);\n };\n Query.prototype._count = function () {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n param = {\n collectionName: this._coll,\n queryType: QueryType.WHERE\n };\n if (this._fieldFilters) {\n param.query = this._fieldFilters;\n }\n return [4, this._request.send('database.calculateDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n return [2, {\n requestId: res.requestId,\n total: res.data.total\n }];\n }\n });\n });\n };\n Query.prototype.where = function (query) {\n if (Object.prototype.toString.call(query).slice(8, -1) !== 'Object') {\n throw Error(ErrorCode.QueryParamTypeError);\n }\n var keys = Object.keys(query);\n var checkFlag = keys.some(function (item) {\n return query[item] !== undefined;\n });\n if (keys.length && !checkFlag) {\n throw Error(ErrorCode.QueryParamValueError);\n }\n return new Query(this._db, this._coll, QuerySerializer.encodeEJSON(query, this._apiOptions.raw || false), this._apiOptions, this._transactionId);\n };\n Query.prototype.options = function (apiOptions) {\n Validate.isValidOptions(apiOptions);\n return new Query(this._db, this._coll, this._fieldFilters, apiOptions, this._transactionId);\n };\n Query.prototype.orderBy = function (fieldPath, directionStr) {\n var _a;\n Validate.isFieldPath(fieldPath);\n Validate.isFieldOrder(directionStr);\n var newOrder = (_a = {},\n _a[fieldPath] = directionStr === 'desc' ? -1 : 1,\n _a);\n var order = this._apiOptions.order || {};\n var newApiOption = Object.assign({}, this._apiOptions, {\n order: Object.assign({}, order, newOrder)\n });\n return new Query(this._db, this._coll, this._fieldFilters, newApiOption, this._transactionId);\n };\n Query.prototype.limit = function (limit) {\n Validate.isInteger('limit', limit);\n var newApiOption = __assign({}, this._apiOptions);\n newApiOption.limit = limit;\n return new Query(this._db, this._coll, this._fieldFilters, newApiOption, this._transactionId);\n };\n Query.prototype.skip = function (offset) {\n Validate.isInteger('offset', offset);\n var newApiOption = __assign({}, this._apiOptions);\n newApiOption.offset = offset;\n return new Query(this._db, this._coll, this._fieldFilters, newApiOption, this._transactionId);\n };\n Query.prototype.update = function (data, callback) {\n return withCallback(this._update(data), callback);\n };\n Query.prototype._update = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var multiple, multi, param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!data || typeof data !== 'object') {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '参数必需是非空对象' }))];\n }\n if (data.hasOwnProperty('_id')) {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '不能更新_id的值' }))];\n }\n multiple = this._apiOptions.multiple;\n multi = multiple === undefined ? true : multiple;\n param = {\n collectionName: this._coll,\n queryType: QueryType.WHERE,\n multi: multi,\n merge: true,\n upsert: false,\n data: UpdateSerializer.encodeEJSON(data, this._apiOptions.raw || false)\n };\n if (this._transactionId) {\n param.transactionId = this._transactionId;\n }\n if (this._fieldFilters) {\n param.query = this._fieldFilters;\n }\n return [4, this._request.send('database.modifyDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n return [2, {\n requestId: res.requestId,\n updated: res.data.updated,\n upsertId: res.data.upsert_id\n }];\n }\n });\n });\n };\n Query.prototype.field = function (projection) {\n var transformProjection = {};\n for (var k in projection) {\n if (typeof projection[k] === 'boolean') {\n transformProjection[k] = projection[k] === true ? 1 : 0;\n }\n if (typeof projection[k] === 'number') {\n transformProjection[k] = projection[k] > 0 ? 1 : 0;\n }\n if (typeof projection[k] === 'object') {\n transformProjection[k] = projection[k];\n }\n }\n var newApiOption = __assign({}, this._apiOptions);\n newApiOption.projection = transformProjection;\n return new Query(this._db, this._coll, this._fieldFilters, newApiOption, this._transactionId);\n };\n Query.prototype.remove = function (callback) {\n return withCallback(this._remove(), callback);\n };\n Query.prototype._remove = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, offset, limit, projection, order, multiple, multi, param, res;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this._apiOptions, offset = _a.offset, limit = _a.limit, projection = _a.projection, order = _a.order;\n if (offset !== undefined ||\n limit !== undefined ||\n projection !== undefined ||\n order !== undefined) {\n console.warn('`offset`, `limit`, `projection`, `orderBy` are not supported in remove() operation');\n }\n multiple = this._apiOptions.multiple;\n multi = multiple === undefined ? true : multiple;\n param = {\n collectionName: this._coll,\n query: this._fieldFilters,\n queryType: QueryType.WHERE,\n multi: multi\n };\n if (this._transactionId) {\n param.transactionId = this._transactionId;\n }\n return [4, this._request.send('database.removeDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _b.sent();\n if (res.code) {\n return [2, res];\n }\n return [2, {\n requestId: res.requestId,\n deleted: res.data.deleted\n }];\n }\n });\n });\n };\n Query.prototype.updateAndReturn = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!data || typeof data !== 'object') {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '参数必需是非空对象' }))];\n }\n if (data.hasOwnProperty('_id')) {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '不能更新_id的值' }))];\n }\n param = {\n collectionName: this._coll,\n queryType: QueryType.WHERE,\n data: UpdateSerializer.encodeEJSON(data, false)\n };\n if (this._transactionId) {\n param.transactionId = this._transactionId;\n }\n if (this._fieldFilters) {\n param.query = this._fieldFilters;\n }\n return [4, this._request.send('database.modifyAndReturnDoc', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n return [2, {\n requestId: res.requestId,\n updated: res.data.updated,\n doc: res.data.doc && EJSON.parse(res.data.doc)\n }];\n }\n });\n });\n };\n return Query;\n}());\nexport { Query };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Db } from './index';\nimport { EJSON } from 'bson';\nimport { QuerySerializer } from './serializer/query';\nimport { stringifyByEJSON } from './utils/utils';\nimport { getType } from './utils/type';\nimport { Validate } from './validate';\nimport { Point } from './geo/point';\nvar Aggregation = (function () {\n function Aggregation(db, collectionName, rawPipeline) {\n var _this = this;\n this._stages = [];\n if (db && collectionName) {\n this._db = db;\n this._request = Db.createRequest(this._db.config);\n this._collectionName = collectionName;\n if (rawPipeline && rawPipeline.length > 0) {\n rawPipeline.forEach(function (stage) {\n Validate.isValidAggregation(stage);\n var stageName = Object.keys(stage)[0];\n _this._pipe(stageName, stage[stageName], true);\n });\n }\n }\n }\n Aggregation.prototype.end = function () {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._collectionName || !this._db) {\n throw new Error('Aggregation pipeline cannot send request');\n }\n return [4, this._request.send('database.aggregateDocuments', {\n collectionName: this._collectionName,\n stages: this._stages\n })];\n case 1:\n result = _a.sent();\n if (result && result.data && result.data.list) {\n return [2, {\n requestId: result.requestId,\n data: result.data.list.map(EJSON.parse)\n }];\n }\n return [2, result];\n }\n });\n });\n };\n Aggregation.prototype.unwrap = function () {\n return this._stages;\n };\n Aggregation.prototype.done = function () {\n return this._stages.map(function (_a) {\n var _b;\n var stageKey = _a.stageKey, stageValue = _a.stageValue;\n return _b = {},\n _b[stageKey] = JSON.parse(stageValue),\n _b;\n });\n };\n Aggregation.prototype._pipe = function (stage, param, raw) {\n if (raw === void 0) { raw = false; }\n var transformParam = '';\n if (getType(param) === 'object') {\n transformParam = stringifyByEJSON(param);\n }\n else {\n transformParam = JSON.stringify(param);\n }\n this._stages.push({\n stageKey: raw ? stage : \"$\".concat(stage),\n stageValue: transformParam\n });\n return this;\n };\n Aggregation.prototype.addFields = function (param) {\n return this._pipe('addFields', param);\n };\n Aggregation.prototype.bucket = function (param) {\n return this._pipe('bucket', param);\n };\n Aggregation.prototype.bucketAuto = function (param) {\n return this._pipe('bucketAuto', param);\n };\n Aggregation.prototype.count = function (param) {\n return this._pipe('count', param);\n };\n Aggregation.prototype.geoNear = function (param) {\n if (param.query) {\n param.query = QuerySerializer.encode(param.query);\n }\n if (param.distanceMultiplier && typeof (param.distanceMultiplier) === 'number') {\n param.distanceMultiplier = param.distanceMultiplier;\n }\n if (param.near) {\n param.near = new Point(param.near.longitude, param.near.latitude).toJSON();\n }\n return this._pipe('geoNear', param);\n };\n Aggregation.prototype.group = function (param) {\n return this._pipe('group', param);\n };\n Aggregation.prototype.limit = function (param) {\n return this._pipe('limit', param);\n };\n Aggregation.prototype.match = function (param) {\n return this._pipe('match', QuerySerializer.encode(param));\n };\n Aggregation.prototype.project = function (param) {\n return this._pipe('project', param);\n };\n Aggregation.prototype.lookup = function (param) {\n return this._pipe('lookup', param);\n };\n Aggregation.prototype.replaceRoot = function (param) {\n return this._pipe('replaceRoot', param);\n };\n Aggregation.prototype.sample = function (param) {\n return this._pipe('sample', param);\n };\n Aggregation.prototype.skip = function (param) {\n return this._pipe('skip', param);\n };\n Aggregation.prototype.sort = function (param) {\n return this._pipe('sort', param);\n };\n Aggregation.prototype.sortByCount = function (param) {\n return this._pipe('sortByCount', param);\n };\n Aggregation.prototype.unwind = function (param) {\n return this._pipe('unwind', param);\n };\n return Aggregation;\n}());\nexport default Aggregation;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { DocumentReference } from './document';\nimport { Query } from './query';\nimport Aggregation from './aggregate';\nimport { serialize } from './serializer/datatype';\nimport { getReqOpts, stringifyByEJSON, withCallback } from './utils/utils';\nimport { Validate } from './validate';\nimport { isArray } from './utils/type';\nvar CollectionReference = (function (_super) {\n __extends(CollectionReference, _super);\n function CollectionReference(db, coll, apiOptions, transactionId) {\n var _this = _super.call(this, db, coll, '', apiOptions, transactionId) || this;\n if (transactionId) {\n _this._transactionId = transactionId;\n }\n return _this;\n }\n Object.defineProperty(CollectionReference.prototype, \"name\", {\n get: function () {\n return this._coll;\n },\n enumerable: false,\n configurable: true\n });\n CollectionReference.prototype.doc = function (docID) {\n if (typeof docID !== 'string' && typeof docID !== 'number') {\n throw new Error('docId必须为字符串或数字');\n }\n return new DocumentReference(this._db, this._coll, this._apiOptions, docID, this._transactionId);\n };\n CollectionReference.prototype.add = function (data, callback) {\n return withCallback(this._add(data), callback);\n };\n CollectionReference.prototype._add = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var transformData, params, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n transformData = data;\n if (!isArray(data)) {\n transformData = [data];\n }\n transformData = transformData.map(function (item) {\n return stringifyByEJSON(serialize(item));\n });\n params = {\n collectionName: this._coll,\n data: transformData\n };\n if (this._transactionId) {\n params.transactionId = this._transactionId;\n }\n return [4, this._request.send('database.insertDocument', params, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n if (!isArray(data)) {\n if (this._transactionId) {\n return [2, {\n inserted: 1,\n ok: 1,\n id: res.data.insertedIds[0],\n requestId: res.requestId\n }];\n }\n return [2, {\n id: res.data.insertedIds[0],\n requestId: res.requestId\n }];\n }\n return [2, {\n ids: res.data.insertedIds,\n requestId: res.requestId\n }];\n }\n });\n });\n };\n CollectionReference.prototype.aggregate = function (rawPipeline) {\n if (rawPipeline === void 0) { rawPipeline = []; }\n return new Aggregation(this._db, this._coll, (this._apiOptions.raw || false) ? rawPipeline : []);\n };\n CollectionReference.prototype.options = function (apiOptions) {\n Validate.isValidOptions(apiOptions);\n return new CollectionReference(this._db, this._coll, apiOptions, this._transactionId);\n };\n return CollectionReference;\n}(Query));\nexport { CollectionReference };\n","import { QueryCommand, QUERY_COMMANDS_LITERAL } from './commands/query';\nimport { LogicCommand, LOGIC_COMMANDS_LITERAL } from './commands/logic';\nimport { UpdateCommand, UPDATE_COMMANDS_LITERAL } from './commands/update';\nimport { isArray, isObject, isString } from './utils/type';\nimport Aggregation from './aggregate';\nexport var Command = {\n eq: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.EQ, [val]);\n },\n neq: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.NEQ, [val]);\n },\n lt: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.LT, [val]);\n },\n lte: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.LTE, [val]);\n },\n gt: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.GT, [val]);\n },\n gte: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.GTE, [val]);\n },\n in: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.IN, val);\n },\n nin: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.NIN, val);\n },\n all: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.ALL, val);\n },\n elemMatch: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.ELEM_MATCH, [val]);\n },\n exists: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.EXISTS, [val]);\n },\n size: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.SIZE, [val]);\n },\n mod: function () {\n if (arguments.length == 1)\n return new QueryCommand(QUERY_COMMANDS_LITERAL.MOD, [arguments[0]]);\n if (arguments.length == 2)\n return new QueryCommand(QUERY_COMMANDS_LITERAL.MOD, [[arguments[0], arguments[1]]]);\n return new QueryCommand(QUERY_COMMANDS_LITERAL.MOD, arguments);\n },\n geoNear: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_NEAR, [val]);\n },\n geoWithin: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_WITHIN, [val]);\n },\n geoIntersects: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_INTERSECTS, [val]);\n },\n and: function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.AND, expressions);\n },\n nor: function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.NOR, expressions);\n },\n or: function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.OR, expressions);\n },\n not: function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.NOT, expressions);\n },\n set: function (val) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.SET, [val]);\n },\n remove: function () {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.REMOVE, []);\n },\n inc: function (val) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.INC, [val]);\n },\n mul: function (val) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.MUL, [val]);\n },\n push: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var values;\n if (isObject(args[0]) && args[0].hasOwnProperty('each')) {\n values = {};\n var options = args[0];\n if (options.each !== undefined) {\n values['$each'] = options.each;\n }\n if (options.position !== undefined) {\n values['$position'] = options.position;\n }\n if (options.sort !== undefined) {\n values['$sort'] = options.sort;\n }\n if (options.slice !== undefined) {\n values['$slice'] = options.slice;\n }\n }\n else if (isArray(args[0])) {\n values = args[0];\n }\n else {\n values = Array.from(args);\n }\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.PUSH, values);\n },\n pull: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.PULL, values);\n },\n pullAll: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.PULL_ALL, values);\n },\n pop: function () {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.POP, []);\n },\n shift: function () {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.SHIFT, []);\n },\n unshift: function () {\n var __values__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __values__[_i] = arguments[_i];\n }\n var values = isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.UNSHIFT, values);\n },\n addToSet: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.ADD_TO_SET, values);\n },\n rename: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.RENAME, [values]);\n },\n bit: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.BIT, [values]);\n },\n max: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.MAX, [values]);\n },\n min: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.MIN, [values]);\n },\n expr: function (values) {\n return {\n $expr: values\n };\n },\n jsonSchema: function (schema) {\n return {\n $jsonSchema: schema\n };\n },\n text: function (values) {\n if (isString(values)) {\n return {\n $search: values.search\n };\n }\n else {\n return {\n $search: values.search,\n $language: values.language,\n $caseSensitive: values.caseSensitive,\n $diacriticSensitive: values.diacriticSensitive\n };\n }\n },\n aggregate: {\n pipeline: function () {\n return new Aggregation();\n },\n abs: function (param) { return new AggregationOperator('abs', param); },\n add: function (param) { return new AggregationOperator('add', param); },\n ceil: function (param) { return new AggregationOperator('ceil', param); },\n divide: function (param) { return new AggregationOperator('divide', param); },\n exp: function (param) { return new AggregationOperator('exp', param); },\n floor: function (param) { return new AggregationOperator('floor', param); },\n ln: function (param) { return new AggregationOperator('ln', param); },\n log: function (param) { return new AggregationOperator('log', param); },\n log10: function (param) { return new AggregationOperator('log10', param); },\n mod: function (param) { return new AggregationOperator('mod', param); },\n multiply: function (param) { return new AggregationOperator('multiply', param); },\n pow: function (param) { return new AggregationOperator('pow', param); },\n sqrt: function (param) { return new AggregationOperator('sqrt', param); },\n subtract: function (param) { return new AggregationOperator('subtract', param); },\n trunc: function (param) { return new AggregationOperator('trunc', param); },\n arrayElemAt: function (param) { return new AggregationOperator('arrayElemAt', param); },\n arrayToObject: function (param) { return new AggregationOperator('arrayToObject', param); },\n concatArrays: function (param) { return new AggregationOperator('concatArrays', param); },\n filter: function (param) { return new AggregationOperator('filter', param); },\n in: function (param) { return new AggregationOperator('in', param); },\n indexOfArray: function (param) { return new AggregationOperator('indexOfArray', param); },\n isArray: function (param) { return new AggregationOperator('isArray', param); },\n map: function (param) { return new AggregationOperator('map', param); },\n range: function (param) { return new AggregationOperator('range', param); },\n reduce: function (param) { return new AggregationOperator('reduce', param); },\n reverseArray: function (param) { return new AggregationOperator('reverseArray', param); },\n size: function (param) { return new AggregationOperator('size', param); },\n slice: function (param) { return new AggregationOperator('slice', param); },\n zip: function (param) { return new AggregationOperator('zip', param); },\n and: function (param) { return new AggregationOperator('and', param); },\n not: function (param) { return new AggregationOperator('not', param); },\n or: function (param) { return new AggregationOperator('or', param); },\n cmp: function (param) { return new AggregationOperator('cmp', param); },\n eq: function (param) { return new AggregationOperator('eq', param); },\n gt: function (param) { return new AggregationOperator('gt', param); },\n gte: function (param) { return new AggregationOperator('gte', param); },\n lt: function (param) { return new AggregationOperator('lt', param); },\n lte: function (param) { return new AggregationOperator('lte', param); },\n neq: function (param) { return new AggregationOperator('ne', param); },\n cond: function (param) { return new AggregationOperator('cond', param); },\n ifNull: function (param) { return new AggregationOperator('ifNull', param); },\n switch: function (param) { return new AggregationOperator('switch', param); },\n dateFromParts: function (param) { return new AggregationOperator('dateFromParts', param); },\n dateFromString: function (param) { return new AggregationOperator('dateFromString', param); },\n dayOfMonth: function (param) { return new AggregationOperator('dayOfMonth', param); },\n dayOfWeek: function (param) { return new AggregationOperator('dayOfWeek', param); },\n dayOfYear: function (param) { return new AggregationOperator('dayOfYear', param); },\n isoDayOfWeek: function (param) { return new AggregationOperator('isoDayOfWeek', param); },\n isoWeek: function (param) { return new AggregationOperator('isoWeek', param); },\n isoWeekYear: function (param) { return new AggregationOperator('isoWeekYear', param); },\n millisecond: function (param) { return new AggregationOperator('millisecond', param); },\n minute: function (param) { return new AggregationOperator('minute', param); },\n month: function (param) { return new AggregationOperator('month', param); },\n second: function (param) { return new AggregationOperator('second', param); },\n hour: function (param) { return new AggregationOperator('hour', param); },\n week: function (param) { return new AggregationOperator('week', param); },\n year: function (param) { return new AggregationOperator('year', param); },\n literal: function (param) { return new AggregationOperator('literal', param); },\n mergeObjects: function (param) { return new AggregationOperator('mergeObjects', param); },\n objectToArray: function (param) { return new AggregationOperator('objectToArray', param); },\n allElementsTrue: function (param) { return new AggregationOperator('allElementsTrue', param); },\n anyElementTrue: function (param) { return new AggregationOperator('anyElementTrue', param); },\n setDifference: function (param) { return new AggregationOperator('setDifference', param); },\n setEquals: function (param) { return new AggregationOperator('setEquals', param); },\n setIntersection: function (param) { return new AggregationOperator('setIntersection', param); },\n setIsSubset: function (param) { return new AggregationOperator('setIsSubset', param); },\n setUnion: function (param) { return new AggregationOperator('setUnion', param); },\n concat: function (param) { return new AggregationOperator('concat', param); },\n dateToString: function (param) { return new AggregationOperator('dateToString', param); },\n indexOfBytes: function (param) { return new AggregationOperator('indexOfBytes', param); },\n indexOfCP: function (param) { return new AggregationOperator('indexOfCP', param); },\n split: function (param) { return new AggregationOperator('split', param); },\n strLenBytes: function (param) { return new AggregationOperator('strLenBytes', param); },\n strLenCP: function (param) { return new AggregationOperator('strLenCP', param); },\n strcasecmp: function (param) { return new AggregationOperator('strcasecmp', param); },\n substr: function (param) { return new AggregationOperator('substr', param); },\n substrBytes: function (param) { return new AggregationOperator('substrBytes', param); },\n substrCP: function (param) { return new AggregationOperator('substrCP', param); },\n toLower: function (param) { return new AggregationOperator('toLower', param); },\n toUpper: function (param) { return new AggregationOperator('toUpper', param); },\n meta: function (param) { return new AggregationOperator('meta', param); },\n addToSet: function (param) { return new AggregationOperator('addToSet', param); },\n avg: function (param) { return new AggregationOperator('avg', param); },\n first: function (param) { return new AggregationOperator('first', param); },\n last: function (param) { return new AggregationOperator('last', param); },\n max: function (param) { return new AggregationOperator('max', param); },\n min: function (param) { return new AggregationOperator('min', param); },\n push: function (param) { return new AggregationOperator('push', param); },\n stdDevPop: function (param) { return new AggregationOperator('stdDevPop', param); },\n stdDevSamp: function (param) { return new AggregationOperator('stdDevSamp', param); },\n sum: function (param) { return new AggregationOperator('sum', param); },\n let: function (param) { return new AggregationOperator('let', param); }\n },\n project: {\n slice: function (param) { return new ProjectionOperator('slice', param); },\n elemMatch: function (param) { return new ProjectionOperator('elemMatch', param); }\n }\n};\nvar AggregationOperator = (function () {\n function AggregationOperator(name, param) {\n this['$' + name] = param;\n }\n return AggregationOperator;\n}());\nexport { AggregationOperator };\nvar ProjectionOperator = (function () {\n function ProjectionOperator(name, param) {\n this['$' + name] = param;\n }\n return ProjectionOperator;\n}());\nexport { ProjectionOperator };\nexport default Command;\n","import { SYMBOL_SERVER_DATE } from '../helper/symbol';\nvar ServerDate = (function () {\n function ServerDate(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.offset, offset = _c === void 0 ? 0 : _c;\n this.offset = offset;\n }\n Object.defineProperty(ServerDate.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_SERVER_DATE;\n },\n enumerable: false,\n configurable: true\n });\n ServerDate.prototype.parse = function () {\n return {\n $tcb_server_date: {\n offset: this.offset\n }\n };\n };\n return ServerDate;\n}());\nexport { ServerDate };\nexport function ServerDateConstructor(opt) {\n return new ServerDate(opt);\n}\n","import { SYMBOL_REGEXP } from '../helper/symbol';\nvar RegExp = (function () {\n function RegExp(_a) {\n var regexp = _a.regexp, options = _a.options;\n if (!regexp) {\n throw new TypeError('regexp must be a string');\n }\n this.$regularExpression = {\n pattern: regexp || '',\n options: options || ''\n };\n }\n RegExp.prototype.parse = function () {\n return {\n $regularExpression: {\n pattern: this.$regularExpression.pattern,\n options: this.$regularExpression.options\n }\n };\n };\n Object.defineProperty(RegExp.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_REGEXP;\n },\n enumerable: false,\n configurable: true\n });\n return RegExp;\n}());\nexport { RegExp };\nexport function RegExpConstructor(param) {\n return new RegExp(param);\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Db } from '../index';\nimport { CollectionReference } from '../collection';\nimport { ERRORS } from '../const/code';\nvar START = 'database.startTransaction';\nvar COMMIT = 'database.commitTransaction';\nvar ABORT = 'database.abortTransaction';\nvar Transaction = (function () {\n function Transaction(db) {\n this._db = db;\n this._request = Db.createRequest(this._db.config);\n this.aborted = false;\n this.commited = false;\n this.inited = false;\n }\n Transaction.prototype.init = function () {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4, this._request.send(START)];\n case 1:\n res = _a.sent();\n if (res.code) {\n throw res;\n }\n this.inited = true;\n this._id = res.transactionId;\n return [2];\n }\n });\n });\n };\n Transaction.prototype.collection = function (collName) {\n if (!collName) {\n throw new Error('Collection name is required');\n }\n return new CollectionReference(this._db, collName, {}, this._id);\n };\n Transaction.prototype.getTransactionId = function () {\n return this._id;\n };\n Transaction.prototype.getRequestMethod = function () {\n return this._request;\n };\n Transaction.prototype.commit = function () {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n param = {\n transactionId: this._id\n };\n return [4, this._request.send(COMMIT, param)];\n case 1:\n res = _a.sent();\n if (res.code)\n throw res;\n this.commited = true;\n return [2, res];\n }\n });\n });\n };\n Transaction.prototype.rollback = function (customRollbackRes) {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n param = {\n transactionId: this._id\n };\n return [4, this._request.send(ABORT, param)];\n case 1:\n res = _a.sent();\n if (res.code)\n throw res;\n this.aborted = true;\n this.abortReason = customRollbackRes;\n return [2, res];\n }\n });\n });\n };\n return Transaction;\n}());\nexport { Transaction };\nexport function startTransaction() {\n return __awaiter(this, void 0, void 0, function () {\n var transaction;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n transaction = new Transaction(this);\n return [4, transaction.init()];\n case 1:\n _a.sent();\n return [2, transaction];\n }\n });\n });\n}\nexport function runTransaction(callback, times) {\n if (times === void 0) { times = 3; }\n return __awaiter(this, void 0, void 0, function () {\n var transaction, callbackRes, error_1, throwWithRollback;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 4, , 10]);\n transaction = new Transaction(this);\n return [4, transaction.init()];\n case 1:\n _a.sent();\n return [4, callback(transaction)];\n case 2:\n callbackRes = _a.sent();\n if (transaction.aborted === true) {\n throw transaction.abortReason;\n }\n return [4, transaction.commit()];\n case 3:\n _a.sent();\n return [2, callbackRes];\n case 4:\n error_1 = _a.sent();\n if (transaction.inited === false) {\n throw error_1;\n }\n throwWithRollback = function (error) { return __awaiter(_this, void 0, void 0, function () {\n var err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(!transaction.aborted && !transaction.commited)) return [3, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4, transaction.rollback()];\n case 2:\n _a.sent();\n return [3, 4];\n case 3:\n err_1 = _a.sent();\n return [3, 4];\n case 4: throw error;\n case 5:\n if (transaction.aborted === true) {\n throw transaction.abortReason;\n }\n throw error;\n }\n });\n }); };\n if (!(times <= 0)) return [3, 6];\n return [4, throwWithRollback(error_1)];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6:\n if (!(error_1 && error_1.code === ERRORS.DATABASE_TRANSACTION_CONFLICT.code)) return [3, 8];\n return [4, runTransaction.bind(this)(callback, --times)];\n case 7: return [2, _a.sent()];\n case 8: return [4, throwWithRollback(error_1)];\n case 9:\n _a.sent();\n return [3, 10];\n case 10: return [2];\n }\n });\n });\n}\n","import { SYMBOL_OBJECTID } from '../helper/symbol';\nvar ObjectId = (function () {\n function ObjectId(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.id, id = _c === void 0 ? '' : _c;\n this.id = id;\n }\n Object.defineProperty(ObjectId.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_OBJECTID;\n },\n enumerable: false,\n configurable: true\n });\n ObjectId.prototype.parse = function () {\n return {\n $oid: this.id\n };\n };\n return ObjectId;\n}());\nexport { ObjectId };\nexport function ObjectIdConstructor(opt) {\n return new ObjectId(opt);\n}\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as Geo from './geo/index';\nimport { CollectionReference } from './collection';\nimport { Command } from './command';\nimport { ServerDateConstructor } from './serverDate/index';\nimport { RegExpConstructor } from './regexp/index';\nimport { startTransaction, runTransaction } from './transaction/index';\nimport { LogicCommand } from './commands/logic';\nimport { QueryCommand } from './commands/query';\nimport { UpdateCommand } from './commands/update';\nimport { ObjectIdConstructor } from './ObjectId/index';\nexport { Query } from './query';\nexport { CollectionReference } from './collection';\nexport { DocumentReference } from './document';\nvar Db = (function () {\n function Db(config) {\n this.config = config;\n this.Geo = Geo;\n this.serverDate = ServerDateConstructor;\n this.command = Command;\n this.RegExp = RegExpConstructor;\n this.ObjectId = ObjectIdConstructor;\n this.startTransaction = startTransaction;\n this.runTransaction = runTransaction;\n this.logicCommand = LogicCommand;\n this.updateCommand = UpdateCommand;\n this.queryCommand = QueryCommand;\n }\n Db.createRequest = function (config) {\n var request = new Db.reqClass(config);\n var originalSend = request.send;\n request.send = function (action, data) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (data) {\n if (config.instance) {\n data.instance = config.instance;\n }\n if (config.database) {\n data.database = config.database;\n }\n }\n return originalSend.call.apply(originalSend, __spreadArray([this, action, data], __read(args), false));\n };\n return request;\n };\n Db.prototype.collection = function (collName) {\n if (!collName) {\n throw new Error('Collection name is required');\n }\n return new CollectionReference(this, collName);\n };\n Db.prototype.createCollection = function (collName) {\n var request = Db.createRequest(this.config);\n var params = {\n collectionName: collName\n };\n return request.send('database.addCollection', params);\n };\n return Db;\n}());\nexport { Db };\n","module.exports = require(\"@cloudbase/adapter-interface\");","module.exports = require(\"bson\");","module.exports = require(\"jwt-decode\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(198);\n"],"names":["database_1","require","bson_1","utilities_1","gateWayFunc","filterRes","res","utils","promoteGatewayError","header","statusCode","flattenResData","data","result","__assign","safeParseEJSON","EJSON","parse","_a","parseEJSONParam","value","JSON","toLegacyRegExp","$regularExpression","$regex","pattern","$options","options","Array","isArray","map","item","ret","key","parseWriteParam","buildQueryParams","params","Object","entries","filter","stringValue","stringify","String","concat","encodeURIComponent","join","getUrlPrefix","instance","database","customReqOpts","Promise","isQueryDoc","_b","query","_id","$eq","queryParams","projection","transactionId","offset","_c","limit","_d","order","relaxed","undefined","url","collectionName","_e","this","gateWay","method","_h","sent","code","_f","_g","list","ids","insertedIds","multi","upsert","replaceMode","count","pipeline","stages","stage","stageValue","stageKey","serialize","call","hasId","inserted","ok","commands","request_id","deserialize","normalized","component","name","entity","dbConfig","prototype","toString","slice","createCloudbaseError","msg","config","errorFactory","platform","adapter","runtime","Req","_super","__extends","send","action","opts","timeout","endPointMode","shouldThrow","resolveThrow","_fromApp","message","requestId","request","constructor","Db","reqClass","getAccessToken","authInstance","bind","wsClientClass","wsClass","ws","NewDb","runCommands","createRequest","cloudbase","registerComponent","e","registerDatabase","app","console","warn","exports","window","RUNTIME","Web","__importStar","util_1","adapters","_i","adapterList_1","length","isMatch","genAdapter","WEB","adapter_interface_1","common_1","WebRequest","_this","timeoutMsg","restrictedMethods","get","includes","post","put","upload","file","headers","reqMethod","toLowerCase","formData","FormData","keys","forEach","append","body","download","responseType","URL","createObjectURL","Blob","fileName","decodeURIComponent","pathname","split","pop","link","document","createElement","href","setAttribute","style","display","appendChild","click","revokeObjectURL","removeChild","resolve","tempFilePath","fetch","abortController","AbortController","enableAbort","stream","signal","_timeout","shouldThrowOnError","aborted","abort","addEventListener","timer","setTimeout","Error","then","response","__awaiter","clearTimeout","reject","json","apply","catch","x","text","status","withCredentials","onUploadProgress","realUrl","formatUrl","getProtocol","ajax","XMLHttpRequest","open","payload","once","setRequestHeader","onreadystatechange","readyState","arr","getAllResponseHeaders","trim","headerMap_1","line","parts","shift","responseText","isFormData","toQueryString","AbstractSDKRequest","type","root","WebSocket","localStorage","sdkName","PROTOCOL","protocol","INVALID_PARAMS","INVALID_SYNTAX","INVALID_OPERATION","OPERATION_FAIL","NETWORK_ERROR","UNKOWN_ERROR","__exportStar","constants_1","isFirefox","navigator","userAgent","indexOf","REG_STACK_DECORATE","REG_STACK_LINK","getRewritedError","err","className","methodName","sourceLink","innerErr","innerErrStack","stack","REG_STACK_INNER_METHOD","RegExp","REG_STACK_INNER_METHOD_WITHOUT_LINK","indexOfSource","findIndex","str","test","realErrStack","v","i","unshift","replace","mode","customInfo","title","messages","target","descriptor","IS_DEBUG_MODE","fnName","fn","outterErrStacks","indexOfDecorator","match","exec","getSourceLink","args","arguments","failErr","errMsg","error","errorDescription","error_description","logs","content","subtitle","printGroupLog","err_1","constants","cache","events","langEvent","helpers","abortController_1","__importDefault","default","jwt","decode","listeners","f","push","TcbCacheObject","tcbCacheObject","setItem","getItem","removeItem","clear","AbstractStorage","CloudbaseCache","persistence","platformInfo","storage","persistenceTag","primaryStorage","printWarn","ERRORS","createStorage","defineProperty","setStore","version","val","getSdkName","info","setStoreAsync","getStore","process","tcb_token","getStoreAsync","removeStore","removeStoreAsync","CloudbaseEvent","IErrorEvent","CloudbaseEventEmitter","on","listener","customeAddEventListener","off","index","splice","customRemoveEventListener","fire","event","isInstanceOf","ev","isString","listens","handlers_1","__spreadArray","eventEmitter","callback","events_1","construct","Math","random","d","Date","getTime","d2","now","c","r","floor","urlHasQuery","queryString","u","location","search","reg","substr","matches","hash","sourceURL","rtn","cb","promise","throwPromiseNotDefined","log","CloudbaseError","enumerable","writable","configurable","defaultErrorFactory","factory","throw","parsed","_","printTrace","collapsed","groupCollapsed","group","content_1","tip","trace","groupEnd","ms","phoneNumber","queryObj","matched","parseQueryString","token","restQueryObj","__rest","state","captchaData","ErrorCode","Opeartor","QueryType","FieldType","OrderDirectionList","WhereFilterOpList","eq","lt","lte","gt","gte","extendStatics","b","setPrototypeOf","__proto__","p","hasOwnProperty","TypeError","__","create","_symbols","__internalMark__","InternalSymbol","__mark__","for","len","symbol","defineProperties","SYMBOL_UNSET_FIELD_NAME","SYMBOL_UPDATE_COMMAND","SYMBOL_QUERY_COMMAND","SYMBOL_LOGIC_COMMAND","SYMBOL_GEO_POINT","SYMBOL_GEO_LINE_STRING","SYMBOL_GEO_POLYGON","SYMBOL_GEO_MULTI_POINT","SYMBOL_GEO_MULTI_LINE_STRING","SYMBOL_GEO_MULTI_POLYGON","SYMBOL_SERVER_DATE","SYMBOL_REGEXP","SYMBOL_OBJECTID","getType","isObject","isNumber","isDate","isRegExp","isInternalObject","_internalType","LineString","points","point","Point","coordinates","toJSON","validate","lineString","e_1","o","s","Symbol","iterator","m","next","done","__values","e_1_1","return","isClosed","firstPoint","lastPoint","latitude","longitude","Polygon","lines","toReadableString","polygon","e_2","isCloseLineString","line_1","line_1_1","e_2_1","MultiPoint","multiPoint","MultiLineString","multiLineString","MultiPolygon","polygons","polygons_1","polygons_1_1","multiPolygon","e_3","e_4","polygon_1","polygon_1_1","e_4_1","e_3_1","__read","n","ar","Util","formatResDocumentData","documents","formatField","protoField","realValue","whichType","lng","lat","$date","obj","generateDocId","autoId","charAt","chars","assign","t","withCallback","wsList","getWsInstance","db","env","context","appConfig","docSizeLimit","realtimePingInterval","realtimePongWaitTimeout","getReqOpts","apiOptions","filterUndefined","stringifyByEJSON","TcbError","E","errObj","processReturn","throwOnCode","UPDATE_COMMANDS_LITERAL","validOptionsKeys","Validate","isGeopoint","degree","degreeAbs","abs","isInteger","param","num","Number","mustBeBoolean","bool","isProjection","subValue","isOrder","isFieldOrder","direction","isFieldPath","path","isOperator","op","isCollName","isDocID","docId","isValidOptions","multiple","isValidAggregation","isCentersPhere","LOGIC_COMMANDS_LITERAL","UpdateCommand","operator","operands","fieldName","_setFieldName","isUpdateCommand","object","LogicCommand","isLogicCommand","isQueryCommand","operand","and","__expressions__","expressions","from","AND","or","OR","QUERY_COMMANDS_LITERAL","QueryCommand","IN","NIN","NEQ","command","EQ","neq","GT","GTE","LT","LTE","in","nin","geoNear","geometry","maxDistance","minDistance","GEO_NEAR","geoWithin","centerSphere","GEO_WITHIN","geoIntersects","GEO_INTERSECTS","isComparisonCommand","OperatorMap","operatorToString","to","pack","l","serializeHelper","visited","source","flags","rawRet","finalRet","flatten","shouldPreserverObject","parents","cloned","flattenedChild","hasKeyNotCombined","childKey","flattenQueryObject","isConversionRequired","mergeConditionAfterEncode","condition","conditionKey","encodeInternalDataType","serializeInternalDataType","UpdateSerializer","encode","encodeUpdate","encodeEJSON","raw","stringifier","encodeUpdateCommand","encodeUpdateObject","encodeArrayUpdateCommand","encodeFieldUpdateCommand","$op","_j","_k","modifiers","$each","$position","flattened","$setCommand","thisArg","_arguments","P","generator","fulfilled","step","rejected","__generator","y","g","label","trys","ops","verb","DocumentReference","coll","docID","watch","_db","envId","_coll","id","_transactionId","_apiOptions","_create","isBatch","set","_set","hasOperator","checkMixed","objs","queryType","merge","updated","upserted","upsert_id","upsertedId","update","_update","delete","remove","_remove","deleted","_get","field","transformProjection","k","newApiOption","QuerySerializer","QueryEncoder","encodeQuery","encoder","encodeLogicCommand","encodeQueryCommand","encodeRegExp","encodeQueryObject","subqueries","oprand","operatorExpression","subquery","encodeComparisonCommand","_l","$nearSphere","$geometry","$maxDistance","$minDistance","$geoWithin","$centerSphere","$geoIntersects","Query","fieldFilters","_fieldFilters","orderBy","reduce","acc","cur","_request","total","_count","where","checkFlag","some","fieldPath","directionStr","newOrder","skip","upsertId","updateAndReturn","doc","Aggregation","rawPipeline","_stages","_collectionName","stageName","_pipe","end","unwrap","transformParam","addFields","bucket","bucketAuto","distanceMultiplier","near","project","lookup","replaceRoot","sample","sort","sortByCount","unwind","aggregate","CollectionReference","add","_add","transformData","Command","all","elemMatch","exists","size","mod","nor","not","inc","mul","values","each","position","pull","pullAll","__values__","addToSet","rename","bit","max","min","expr","$expr","jsonSchema","schema","$jsonSchema","$search","$language","language","$caseSensitive","caseSensitive","$diacriticSensitive","diacriticSensitive","AggregationOperator","ceil","divide","exp","ln","log10","multiply","pow","sqrt","subtract","trunc","arrayElemAt","arrayToObject","concatArrays","indexOfArray","range","reverseArray","zip","cmp","cond","ifNull","switch","dateFromParts","dateFromString","dayOfMonth","dayOfWeek","dayOfYear","isoDayOfWeek","isoWeek","isoWeekYear","millisecond","minute","month","second","hour","week","year","literal","mergeObjects","objectToArray","allElementsTrue","anyElementTrue","setDifference","setEquals","setIntersection","setIsSubset","setUnion","dateToString","indexOfBytes","indexOfCP","strLenBytes","strLenCP","strcasecmp","substrBytes","substrCP","toLower","toUpper","meta","avg","first","last","stdDevPop","stdDevSamp","sum","let","ProjectionOperator","ServerDate","$tcb_server_date","ServerDateConstructor","opt","regexp","RegExpConstructor","Transaction","commited","inited","init","collection","collName","getTransactionId","getRequestMethod","commit","rollback","customRollbackRes","abortReason","startTransaction","transaction","runTransaction","times","callbackRes","error_1","throwWithRollback","ObjectId","$oid","ObjectIdConstructor","Geo","serverDate","logicCommand","updateCommand","queryCommand","originalSend","createCollection","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","prop","toStringTag","__webpack_exports__"],"sourceRoot":""}
1
+ {"version":3,"file":"index.js","mappings":"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","sources":["webpack://@cloudbase/js-sdk/index.ts/","webpack://@cloudbase/js-sdk/web.ts/","webpack://@cloudbase/js-sdk/common.ts/","webpack://@cloudbase/js-sdk/errors.ts/","webpack://@cloudbase/js-sdk/decorators.ts/","webpack://@cloudbase/js-sdk/abortController.ts/","webpack://@cloudbase/js-sdk/cache.ts/","webpack://@cloudbase/js-sdk/events.ts/","webpack://@cloudbase/js-sdk/langEvent.ts/","webpack://@cloudbase/js-sdk/util.ts/","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/constant.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/utils/symbol.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/helper/symbol.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/utils/type.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/geo/lineString.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/geo/polygon.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/geo/multiPoint.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/geo/multiLineString.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/geo/multiPolygon.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/util.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/const/code.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/utils/utils.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/validate.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/commands/update.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/geo/point.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/commands/logic.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/commands/query.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/operator-map.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/serializer/datatype.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/serializer/common.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/serializer/update.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/document.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/serializer/query.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/query.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/aggregate.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/collection.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/command.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/serverDate/index.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/regexp/index.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/transaction/index.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/ObjectId/index.js","webpack://@cloudbase/js-sdk/../node_modules/@cloudbase/database/dist/esm/index.js","webpack://@cloudbase/js-sdk/external commonjs2 {\"commonjs\":\"@cloudbase/adapter-interface\",\"commonjs2\":\"@cloudbase/adapter-interface\",\"amd\":\"@cloudbase/adapter-interface\",\"root\":\"@cloudbase/adapter-interface\"}","webpack://@cloudbase/js-sdk/external commonjs2 {\"commonjs\":\"bson\",\"commonjs2\":\"bson\",\"amd\":\"bson\",\"root\":\"bson\"}","webpack://@cloudbase/js-sdk/external commonjs2 {\"commonjs\":\"jwt-decode\",\"commonjs2\":\"jwt-decode\",\"amd\":\"jwt-decode\",\"root\":\"jwt-decode\"}","webpack://@cloudbase/js-sdk/webpack/bootstrap","webpack://@cloudbase/js-sdk/webpack/runtime/define property getters","webpack://@cloudbase/js-sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@cloudbase/js-sdk/webpack/runtime/make namespace object","webpack://@cloudbase/js-sdk/webpack/startup"],"sourcesContent":["import { Db } from '@cloudbase/database'\nimport { ICloudbase } from '@cloudbase/types'\nimport { ICloudbaseComponent } from '@cloudbase/types/component'\nimport cloudbaseNS from '../../index'\nimport { EJSON } from 'bson'\nimport { utils } from '@cloudbase/utilities'\n\ndeclare const cloudbase: ICloudbase\ndeclare type QueryType = 'WHERE' | 'DOC'\n\n/**\n * 数据库配置接口\n */\ninterface IDbConfig {\n /** 实例 ID(可选,默认 '(default)') */\n instance?: string\n /** 数据库名称(可选,默认 '(default)') */\n database?: string\n}\n\ninterface IBaseReq extends IDbConfig {\n collectionName: string\n transactionId?: string\n}\n\ninterface IDocumentsQueryReq extends IBaseReq {\n query?: any\n /** @deprecated 使用 query 替代 */\n queryType?: QueryType\n /** 排序规则:引擎传 {field: -1|1} 或其 EJSON 字符串,网关要求 [{field, direction}],adapter 内统一转换 */\n order?: Record<string, any> | { field: string; direction: string }[] | string\n offset?: number\n limit?: number\n projection?: Object\n}\n\ninterface IDocumentsAddReq extends IBaseReq {\n data: Object | Object[]\n}\n\ninterface IDocumentsUpdateReq extends IBaseReq {\n query: Object\n data: Object\n /** 是否批量更新(默认 false) */\n multi?: boolean\n /** 把所有更新数据转为带操作符的 */\n merge?: boolean\n /** 不存在时是否创建(默认 false) */\n upsert?: boolean\n /** 是否替换整个文档(默认 false,为 true 时替换整个文档而非合并更新) */\n replaceMode?: boolean\n /** @deprecated 使用 query 替代 */\n queryType?: QueryType\n}\n\ninterface IDocumentsRemoveReq extends IBaseReq {\n query: Object\n /** 是否批量删除(默认 false) */\n multi?: boolean\n /** @deprecated 使用 query 替代 */\n queryType?: QueryType\n}\n\ninterface IDocumentsCountReq extends IBaseReq {\n query: Object\n /** @deprecated 使用 query 替代 */\n queryType?: QueryType\n}\n\ninterface ICommonRes<T> {\n data?: T & { code?: string }\n requestId: string\n code?: string\n message?: string\n}\n\ninterface IAddRes {\n /** 单条插入时返回的文档 ID(批量插入时不返回) */\n _id?: string\n /** 批量插入时返回的文档 ID 列表 */\n ids?: string[]\n insertedIds: string[]\n}\n\ninterface IRunCommandsReq {\n transactionId?: string\n /** 命令数组,方法会将其转为 MongoDB 原生命令(EJSON 对象格式) */\n commands: Object[]\n}\n\nconst COMPONENT_NAME = 'database'\n\n// 导出以便单测直测各 handler / 工具函数(运行时逻辑不依赖导出)\nexport const gateWayFunc = {\n /**\n * 过滤响应,移除不必要的字段,并统一把 data.code/data.message 提升到顶层。\n */\n filterRes <T>(res: ICommonRes<T> & { header?: any; statusCode?: number }): ICommonRes<T> {\n res = utils.promoteGatewayError(res)\n delete res.header\n delete res.statusCode\n return res\n },\n\n /**\n * 展开响应数据到顶层(用于事务等场景)\n */\n flattenResData <T>(res: ICommonRes<T>): any {\n if (typeof res.data === 'object' && res.data !== null) {\n const result = { ...res, ...res.data }\n delete result.data\n return result\n }\n return res\n },\n\n /**\n * 安全解析 EJSON\n */\n safeParseEJSON(data: any): any {\n if (typeof data !== 'string') return data\n try {\n return EJSON.parse(data)\n } catch {\n return data\n }\n },\n\n /**\n * 解析 2.0 引擎的 EJSON 字符串参数为纯 JSON 对象。\n *\n * 2.0 引擎的 query/data 等参数为 EJSON.stringify 产出的合法 JSON 字符串,\n * 直接 JSON.parse 即可让 $numberInt/$date/$regularExpression 等类型标记\n * 以纯对象形式保留(注意不能用 EJSON.parse——它会还原成 JS 值/实例,\n * 后续 JSON.stringify 会丢失类型标记)。\n *\n * 实测网关契约(RESTful):\n * - 入参 body:v2 严格模式($numberInt/$numberDouble/$date/$numberLong)均支持;\n * $regularExpression 写入返回 400(写入侧由 parseWriteParam 转 v1 兼容)\n * - 入参 URL query:v1/v2 均支持(含正则查询)\n * - 响应:一律严格模式(v2 编码),由上层 EJSON.parse 还原\n */\n parseEJSONParam(value: any): any {\n if (typeof value !== 'string') return value\n try {\n return JSON.parse(value)\n } catch {\n return value\n }\n },\n\n /**\n * EJSON 字符串解析为普通 JS 值($numberInt/$numberLong 等标记还原为真实数字)。\n * 用于 order/projection 等网关只接受纯 JSON 数值的参数。\n * 注意:query 走 parseEJSONParam(保留类型标记,v2 网关查询方向支持),两者方向相反。\n */\n parseEJSONValue(value: any): any {\n if (typeof value !== 'string') return value\n try {\n return EJSON.parse(value)\n } catch {\n return gateWayFunc.parseEJSONParam(value)\n }\n },\n\n /**\n * 把排序参数统一转为网关要求的 [{field, direction}] 格式。\n *\n * 1.x 引擎 orderBy 生成 {field: -1|1}(经 EJSON 序列化后数字带 $numberInt\n * 标记),网关不认这种格式(报 Invalid order format)。无法识别的输入\n * 返回 undefined(即不发 order 参数)。\n */\n normalizeOrderParam(value: any): any {\n if (value === undefined || value === null || value === '') return undefined\n\n const order = gateWayFunc.parseEJSONValue(value)\n\n const toDirection = (v: any): string | undefined => {\n // EJSON.parse 后数字可能是 Int32/Long 实例,Number() 还原为原始值\n const n = v && typeof v === 'object' ? Number(v) : v\n if (typeof n === 'number' && !isNaN(n)) return n < 0 ? 'desc' : 'asc'\n if (typeof n === 'string') {\n const s = n.toLowerCase()\n if (s === 'desc' || s === '-1') return 'desc'\n if (s === 'asc' || s === '1') return 'asc'\n }\n return undefined\n }\n\n const items = Array.isArray(order) ? order : [order]\n const ret: { field: string; direction: string }[] = []\n for (const item of items) {\n if (!item || typeof item !== 'object') continue\n if (item.field !== undefined) {\n // 已是网关格式 [{field, direction}]\n const direction = toDirection(item.direction)\n if (direction) ret.push({ field: item.field, direction })\n } else {\n // 引擎格式 {field: -1|1},可能多字段\n for (const [field, dir] of Object.entries(item)) {\n const direction = toDirection(dir)\n if (direction) ret.push({ field, direction })\n }\n }\n }\n return ret.length ? ret : undefined\n },\n\n /**\n * 从查询条件中提取单文档 ID(无法提取时返回 undefined)。\n *\n * 仅当 query 为单一 _id 等值条件时生效(键数必须为 1,避免\n * where({_id: 'x', status: 1}) 这类复合条件误判)。兼容以下形式:\n * - {_id: 'xxx'}(引擎 doc.get/update/set/remove 的实际形态,queryType: 'DOC')\n * - {_id: {$eq: 'xxx'}}\n * - {_id: {$oid: 'xxx'}}(EJSON 序列化后的 ObjectId)\n * - {_id: {$eq: {$oid: 'xxx'}}}\n */\n extractDocId(query: any): string | undefined {\n if (!query || typeof query !== 'object' || Array.isArray(query)) return undefined\n if (Object.keys(query).length !== 1 || !('_id' in query)) return undefined\n\n const id = query._id\n if (typeof id === 'string' || typeof id === 'number') return String(id)\n if (id && typeof id === 'object') {\n if (typeof id.$oid === 'string') return id.$oid\n const eq = id.$eq\n if (typeof eq === 'string' || typeof eq === 'number') return String(eq)\n if (eq && typeof eq === 'object' && typeof eq.$oid === 'string') return eq.$oid\n }\n return undefined\n },\n\n /**\n * 递归把 v2 的 $regularExpression 转为 v1 的 {$regex, $options}。\n *\n * 仅用于写入/更新的文档数据(data):实测网关 body 不接受 $regularExpression(400),\n * 而 v1 的 {$regex, $options} 可正常写入。查询条件(query)方向 v1/v2 均支持,\n * 不做转换。\n */\n toLegacyRegExp(value: any): any {\n if (!value || typeof value !== 'object') return value\n if (value.$regularExpression && typeof value.$regularExpression === 'object') {\n const { pattern, options } = value.$regularExpression\n return { $regex: pattern, $options: options }\n }\n if (Array.isArray(value)) {\n return value.map(item => gateWayFunc.toLegacyRegExp(item))\n }\n const ret: any = {}\n for (const key in value) {\n ret[key] = gateWayFunc.toLegacyRegExp(value[key])\n }\n return ret\n },\n\n /**\n * 解析写入类参数(文档数据):JSON.parse 保留类型标记后,\n * 仅把 v2 正则转 v1——只用于 insert 路径(实测网关 POST 写入只认 v1 正则;\n * PATCH 更新路径相反,只认 v2,见 modifyDocument 注释)\n */\n parseWriteParam(value: any): any {\n return gateWayFunc.toLegacyRegExp(gateWayFunc.parseEJSONParam(value))\n },\n\n /**\n * 构建 URL 查询参数\n */\n buildQueryParams(params: Record<string, any>): string {\n return Object.entries(params)\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .filter(([_, value]) => value !== undefined && value !== null && value !== '')\n .map(([key, value]) => {\n const stringValue = typeof value === 'object' ? JSON.stringify(value) : String(value)\n return `${encodeURIComponent(key)}=${encodeURIComponent(stringValue)}`\n })\n .join('&')\n },\n\n /**\n * 获取 URL 前缀\n */\n getUrlPrefix(data: IDbConfig): string {\n const instance = data?.instance || '(default)'\n const database = data?.database || '(default)'\n return `/database/instances/${instance}/databases/${database}`\n },\n\n async 'database.queryDocument'(data: IDocumentsQueryReq, customReqOpts?: any,): Promise<ICommonRes<{ offset?: number; limit?: number; list: any[] }>> {\n // 入参归一化:兼容对象与 EJSON 字符串两种形态(历史引擎/旧事务路径可能传字符串),\n // parseEJSONParam 对对象原样返回,对字符串 JSON.parse 保留类型标记\n const query = gateWayFunc.parseEJSONParam(data.query)\n const projection = gateWayFunc.parseEJSONValue(data.projection)\n\n // 单文档查询:{_id: 值} / {_id: {$eq}} / {_id: {$oid}} 等单一 _id 等值条件\n // (引擎 doc.get() 发 queryType:'DOC' + query={\"_id\":\"xxx\"}),\n // 走专用端点 GET /documents/:docId,网关会自动兼容 ObjectId 字符串主键\n const docId = gateWayFunc.extractDocId(query)\n const isQueryDoc = docId !== undefined\n const queryParams = gateWayFunc.buildQueryParams({\n projection,\n transactionId: data.transactionId,\n ...(isQueryDoc\n ? {}\n : {\n offset: data.offset ?? 0,\n limit: data.limit ?? 100,\n order: gateWayFunc.normalizeOrderParam(data.order),\n query: query ? EJSON.stringify(query, { relaxed: false }) : undefined,\n }),\n })\n\n let url = `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents?${queryParams}`\n\n // 查询单个文档\n if (isQueryDoc) {\n url = `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents/${docId}?${queryParams}`\n }\n\n let res = await this.gateWay({\n url,\n method: 'GET',\n }, customReqOpts)\n\n // 尝试解析 EJSON 格式的数据\n res.data = gateWayFunc.safeParseEJSON(JSON.stringify(res.data))\n\n if (isQueryDoc && !res.code && !res.data?.code) {\n return {\n ...res,\n data: { list: [res.data] }\n }\n }\n\n // 确保 res.data.list 为数组,兼容后端返回数据或直接返回文档数组的情况\n if (!res.code && !res.data?.code) {\n if (Array.isArray(res.data)) {\n // 后端直接返回文档数组\n res = { ...res, data: { list: res.data } }\n } else if (res.data && !Array.isArray(res.data.list)) {\n // 后端返回对象但缺少 list 字段\n res = { ...res, data: { ...res.data, list: [] } }\n }\n } else {\n res = { ...res, data: { ...res.data, list: [] } }\n }\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.addDocument'(data: IDocumentsAddReq, customReqOpts?: any): Promise<ICommonRes<IAddRes>> {\n // 入参归一化:条目可能是对象或 EJSON 字符串(直调方/历史引擎),\n // 统一 parseWriteParam(JSON.parse 保留标记 + 写入口径正则转 v1);\n // 对已是对象的条目幂等\n const items = (Array.isArray(data.data) ? data.data : [data.data])\n .map(item => gateWayFunc.parseWriteParam(item))\n\n let res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents`,\n method: 'POST',\n data: {\n data: items,\n ...(data.transactionId && { transactionId: data.transactionId }),\n },\n }, customReqOpts)\n\n if (Array.isArray(data.data)) {\n // 数组模式(批量插入),返回 ids 列表\n res = {\n ...res,\n data: {\n ids: res.data?.insertedIds || [],\n ...res.data,\n },\n }\n } else if (res.data?.insertedIds?.[0]) {\n // 非数组模式(单条插入),将 _id 提升到顶层\n res = {\n ...res,\n data: {\n _id: res.data.insertedIds[0],\n ...res.data,\n },\n }\n }\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.updateDocument'(data: IDocumentsUpdateReq, customReqOpts?: any,): Promise<ICommonRes<{ matched: number; updated: number; upsert_id: string }>> {\n // 入参归一化:query/data 兼容对象与 EJSON 字符串(对象原样返回,幂等)\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents`,\n method: 'PATCH',\n data: {\n query: gateWayFunc.parseEJSONParam(data.query),\n data: gateWayFunc.parseEJSONParam(data.data),\n multi: !!data.multi,\n upsert: !!data.upsert,\n replaceMode: data.replaceMode ?? data.merge === false,\n ...(data.transactionId && { transactionId: data.transactionId }),\n },\n }, customReqOpts)\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.deleteDocument'(data: IDocumentsRemoveReq, customReqOpts?: any): Promise<ICommonRes<{ deleted: number }>> {\n // 入参归一化:query 兼容对象与 EJSON 字符串\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents/remove`,\n method: 'POST',\n data: {\n query: gateWayFunc.parseEJSONParam(data.query),\n multi: !!data.multi,\n ...(data.transactionId && { transactionId: data.transactionId }),\n },\n }, customReqOpts)\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.countDocument'(data: IDocumentsCountReq, customReqOpts?: any): Promise<ICommonRes<{ total: number }>> {\n // 入参归一化:query 兼容对象与 EJSON 字符串\n const query = gateWayFunc.parseEJSONParam(data.query)\n const queryParams = gateWayFunc.buildQueryParams({\n count: true,\n query: query ? EJSON.stringify(query, { relaxed: false }) : undefined,\n })\n\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents?${queryParams}`,\n method: 'GET',\n }, customReqOpts)\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.addCollection'(data: { collectionName: string } & IDbConfig, customReqOpts?: any): Promise<ICommonRes<''>> {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections`,\n method: 'POST',\n data: { collectionName: data.collectionName },\n }, customReqOpts)\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.aggregate'(data: { collectionName: string; stages: { stageKey: string; stageValue: any }[] } & IDbConfig, customReqOpts?: any,): Promise<ICommonRes<{ list: string }>> {\n const pipeline = data.stages.map((stage) => {\n try {\n // stageValue 可能是字符串或对象,统一处理\n const value = typeof stage.stageValue === 'string' ? JSON.parse(stage.stageValue) : stage.stageValue\n return {\n [stage.stageKey]: EJSON.serialize(value),\n }\n } catch {\n return { [stage.stageKey]: stage.stageValue }\n }\n })\n\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/collections/${data.collectionName}/documents/aggregations`,\n method: 'POST',\n data: { pipeline },\n }, customReqOpts)\n\n // 将结果列表转为字符串格式(兼容原有逻辑)\n if (Array.isArray(res.data?.list)) {\n res.data.list = JSON.stringify(res.data.list.map((item: any) => JSON.stringify(item)))\n }\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.startTransaction'(data: IDbConfig, customReqOpts?: any) {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/transactions`,\n method: 'POST',\n }, customReqOpts)\n\n return gateWayFunc.filterRes(gateWayFunc.flattenResData(res))\n },\n\n async 'database.commitTransaction'(data: { transactionId: string } & IDbConfig, customReqOpts?: any) {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/transactions/${data.transactionId}/commit`,\n method: 'POST',\n }, customReqOpts)\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.abortTransaction'(data: { transactionId: string } & IDbConfig, customReqOpts?: any) {\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/transactions/${data.transactionId}/rollback`,\n method: 'POST',\n }, customReqOpts)\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.getInTransaction'(data: IDocumentsQueryReq, customReqOpts?: any) {\n const res = await gateWayFunc['database.queryDocument'].call(this, data, customReqOpts)\n\n if (typeof res.data === 'object' && res.data !== null) {\n if (res.data?.code) {\n return gateWayFunc.flattenResData(res)\n }\n return { ...res, data: JSON.stringify(res.data) as any }\n }\n\n return res\n },\n\n async 'database.updateDocInTransaction'(data: IDocumentsUpdateReq, customReqOpts?: any) {\n // query/data 可能是 EJSON 字符串(历史引擎),由 updateDocument 内部统一归一化\n const res = await gateWayFunc['database.updateDocument'].call(this, data, customReqOpts)\n return gateWayFunc.flattenResData(res)\n },\n\n async 'database.deleteDocInTransaction'(data: IDocumentsRemoveReq, customReqOpts?: any) {\n // query 可能是 EJSON 字符串,由 deleteDocument 内部统一归一化\n const res = await gateWayFunc['database.deleteDocument'].call(this, data, customReqOpts)\n return gateWayFunc.flattenResData(res)\n },\n\n async 'database.insertDocInTransaction'(data: IDocumentsAddReq, customReqOpts?: any,): Promise<ICommonRes<IAddRes & { inserted?: number }>> {\n // data 条目可能是对象或 EJSON 字符串,由 addDocument 内部统一 parseWriteParam\n let res = await gateWayFunc['database.addDocument'].call(this, data, customReqOpts)\n\n if (typeof res.data === 'object' && res.data !== null) {\n const hasId = !!res.data?._id\n res = {\n ...res,\n inserted: hasId ? 1 : 0,\n ok: hasId ? 1 : 0,\n ...res.data,\n } as any\n } else {\n res = { inserted: 0, ok: 0, ...res } as any\n }\n\n delete res.data\n\n return res\n },\n\n async 'database.runCommands'(data: IRunCommandsReq & IDbConfig, customReqOpts?: any,): Promise<ICommonRes<{ list: Object[][] }>> {\n let res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(data)}/commands`,\n method: 'POST',\n data: {\n // 命令条目兼容对象与 EJSON 字符串,序列化保留类型标记\n commands: EJSON.serialize(\n Array.isArray(data.commands)\n ? data.commands.map(cmd => gateWayFunc.parseEJSONParam(cmd))\n : data.commands\n ),\n ...(data.transactionId && { transactionId: data.transactionId }),\n },\n }, customReqOpts)\n\n if (typeof res.data === 'object' && res.data !== null) {\n res = { ...res, ...res.data }\n delete res.data\n delete res.request_id\n }\n\n // 尝试将结果转换为普通对象\n try {\n res = EJSON.deserialize(res)\n } catch {\n // 忽略转换失败\n }\n\n return gateWayFunc.filterRes(res)\n },\n\n // ===================== 2.0 引擎新接口名映射 =====================\n // @cloudbase/database 2.0 引擎使用新接口名(getDocument/insertDocument/...),\n // 且 query/data 等参数为 EJSON 字符串格式。这里统一适配后委托给上面的\n // 旧接口实现,保证 GATEWAY 模式下新旧引擎都能正确路由到 RESTful 网关。\n\n async 'database.getDocument'(data: IDocumentsQueryReq, customReqOpts?: any): Promise<ICommonRes<{ offset?: number; limit?: number; list: any[] }>> {\n // 2.0 引擎的 query/order/projection 为 EJSON 字符串。\n // query 解析后保留类型标记(v2 网关查询方向支持);\n // projection 用 EJSON 解析还原真实数字(JSON.parse 会保留 $numberInt\n // 标记,网关只认 {\"name\":1} 这种纯 JSON 数值);\n // order 在 queryDocument 内由 normalizeOrderParam 统一转为网关格式\n const normalized: any = { ...data }\n normalized.query = gateWayFunc.parseEJSONParam(normalized.query)\n normalized.projection = gateWayFunc.parseEJSONValue(normalized.projection)\n\n const res = await gateWayFunc['database.queryDocument'].call(this, normalized, customReqOpts)\n\n // 2.0 引擎期望 data.list 为 EJSON 字符串数组。\n // 注意:旧实现已将响应 EJSON.parse 成 JS 值(Date/BSONRegExp 等实例),\n // 必须用 EJSON.stringify 序列化以保留类型标记(JSON.stringify 会把\n // BSONRegExp 剥成裸 pattern/options、Date 转成 ISO 字符串,造成类型丢失)\n if (Array.isArray(res.data?.list)) {\n res.data.list = res.data.list.map((item: any) => EJSON.stringify(item, { relaxed: false }))\n }\n return res\n },\n\n async 'database.insertDocument'(data: IDocumentsAddReq, customReqOpts?: any): Promise<ICommonRes<IAddRes>> {\n // 2.0 引擎的 data 为 EJSON 字符串数组;\n // 写入口径:仅把 v2 正则转 v1($regex/$options),其余类型标记保持 v2\n const normalized: any = { ...data }\n normalized.data = Array.isArray(normalized.data)\n ? normalized.data.map((item: any) => gateWayFunc.parseWriteParam(item))\n : gateWayFunc.parseWriteParam(normalized.data)\n\n return gateWayFunc['database.addDocument'].call(this, normalized, customReqOpts)\n },\n\n async 'database.modifyDocument'(data: IDocumentsUpdateReq, customReqOpts?: any): Promise<ICommonRes<{ matched: number; updated: number; upsert_id: string }>> {\n const normalized: any = { ...data }\n // query 为查询条件:v1/v2 网关均支持,保持 v2 不转\n // data 为写入内容:同样保持 v2——实测网关 PATCH(更新)路径只认 v2 正则\n // (v1 的 $regex/$options 会被 MongoDB 当 $ 前缀字段拒绝存储),\n // 与 insert 路径(只认 v1)相反\n normalized.query = gateWayFunc.parseEJSONParam(normalized.query)\n normalized.data = gateWayFunc.parseEJSONParam(normalized.data)\n\n return gateWayFunc['database.updateDocument'].call(this, normalized, customReqOpts)\n },\n\n async 'database.modifyAndReturnDoc'(data: IDocumentsUpdateReq, customReqOpts?: any): Promise<any> {\n // 引擎 query.updateAndReturn() 调用。网关仅在单文档端点\n // PATCH /documents/:docId 上支持 returnDoc:true(响应含更新后文档),\n // query 为 _id 等值时走单文档端点;否则降级为批量更新(无 doc 返回,\n // 引擎侧对 res.data.doc 有判空守卫)。\n const normalized: any = { ...data }\n normalized.query = gateWayFunc.parseEJSONParam(normalized.query)\n normalized.data = gateWayFunc.parseEJSONParam(normalized.data)\n\n const docId = gateWayFunc.extractDocId(normalized.query)\n if (!docId) {\n return gateWayFunc['database.updateDocument'].call(this, normalized, customReqOpts)\n }\n\n const res = await this.gateWay({\n url: `${gateWayFunc.getUrlPrefix(normalized)}/collections/${normalized.collectionName}/documents/${docId}`,\n method: 'PATCH',\n data: {\n data: normalized.data,\n replaceMode: normalized.replaceMode ?? false,\n upsert: !!normalized.upsert,\n returnDoc: true,\n ...(normalized.transactionId && { transactionId: normalized.transactionId }),\n },\n }, customReqOpts)\n\n // 引擎期望 doc 为 EJSON 字符串(EJSON.parse(res.data.doc) 还原类型)\n if (res.data?.doc !== undefined && typeof res.data.doc !== 'string') {\n res.data.doc = EJSON.stringify(res.data.doc, { relaxed: false })\n }\n\n return gateWayFunc.filterRes(res)\n },\n\n async 'database.removeDocument'(data: IDocumentsRemoveReq, customReqOpts?: any): Promise<ICommonRes<{ deleted: number }>> {\n const normalized: any = { ...data }\n normalized.query = gateWayFunc.parseEJSONParam(normalized.query)\n\n return gateWayFunc['database.deleteDocument'].call(this, normalized, customReqOpts)\n },\n\n async 'database.calculateDocument'(data: IDocumentsCountReq, customReqOpts?: any): Promise<ICommonRes<{ total: number }>> {\n const normalized: any = { ...data }\n normalized.query = gateWayFunc.parseEJSONParam(normalized.query)\n\n return gateWayFunc['database.countDocument'].call(this, normalized, customReqOpts)\n },\n\n async 'database.aggregateDocuments'(data: { collectionName: string; stages: { stageKey: string; stageValue: any }[] } & IDbConfig, customReqOpts?: any,): Promise<ICommonRes<{ list: any }>> {\n // stages 为查询语义(match 等),v2 标记保持原样\n const normalized: any = { ...data }\n if (Array.isArray(normalized.stages)) {\n normalized.stages = normalized.stages.map((stage: any) => ({\n ...stage,\n stageValue: gateWayFunc.parseEJSONParam(stage.stageValue)\n }))\n }\n const res = await gateWayFunc['database.aggregate'].call(this, normalized, customReqOpts)\n\n // 旧实现把 list 转成 JSON 大字符串(0.12.x 兼容格式),\n // 2.0 引擎期望 list 为字符串数组,还原之\n if (typeof res.data?.list === 'string') {\n try {\n res.data.list = JSON.parse(res.data.list)\n } catch {\n // 解析失败保持原样\n }\n }\n return res\n },\n}\n\nfunction database(dbConfig?: IDbConfig) {\n // 对齐 v3 node-sdk newDb 的参数校验:dbConfig 必须是普通对象,\n // undefined 视为默认空配置;string/array/null 等类型抛 INVALID_PARAM(同步)。\n if (\n dbConfig !== undefined\n && Object.prototype.toString.call(dbConfig).slice(8, -1) !== 'Object'\n ) {\n throw utils.createCloudbaseError({\n code: 'INVALID_PARAM',\n msg: 'dbConfig must be an object',\n }, (this.config as any)?.errorFactory)\n }\n\n const { adapter, runtime } = this.platform\n\n class Req extends this.request.constructor {\n constructor(config) {\n super(config)\n }\n\n async send(action: string, data: any, opts?: { timeout?: number }) {\n let res = null\n\n // 2.0 引擎的第三个参数为 getReqOpts(目前仅含 per-request timeout),\n // 转换为基础请求类的 customReqOpts 透传到底层 fetch(AbortController 超时)\n const customReqOpts\n = opts && typeof opts.timeout === 'number' ? { timeout: opts.timeout } : undefined\n\n if (this.config.endPointMode === 'GATEWAY' && gateWayFunc[action]) {\n res = await gateWayFunc[action].call(this, data, customReqOpts)\n } else {\n res = await super.send(action, data, undefined, customReqOpts)\n }\n\n // 统一 throw 开关(默认 true):抛原始业务码(DATABASE_COLLECTION_NOT_EXIST 等);\n // throw=false 时返回 {code,message,requestId} 让调用方用 if (res.code) 检查。\n // 优先读实例 config(_fromApp.config.throw,per-instance 且支持运行时 setThrowOnCode 联动),\n // 因为 this.config 是 database() 时的快照({...config} 展开),不会随 setThrowOnCode 更新。\n const shouldThrow = utils.resolveThrow((this.config as any)?._fromApp?.config ?? this.config)\n if (res && res.code && shouldThrow) {\n throw utils.createCloudbaseError({\n code: res.code,\n msg: res.message || (res.data && res.data.message) || '',\n requestId: res.requestId,\n }, (this.config as any)?.errorFactory)\n }\n\n return res\n }\n }\n\n Db.reqClass = Req\n // 未登录情况下传入空函数\n Db.getAccessToken = this.authInstance ? this.authInstance.getAccessToken.bind(this.authInstance) : () => ''\n Db.runtime = runtime\n if (this.wsClientClass) {\n Db.wsClass = adapter.wsClass\n Db.wsClientClass = this.wsClientClass\n }\n\n if (!Db.ws) {\n Db.ws = null\n }\n\n class NewDb extends Db {\n constructor(config?: IDbConfig) {\n super(config)\n }\n\n async runCommands(params: IRunCommandsReq): Promise<ICommonRes<{ list: Object[][] }>> {\n const request = Db.createRequest(this.config)\n\n return request.send('database.runCommands', params)\n }\n }\n\n return new NewDb({ ...this.config, _fromApp: this, ...dbConfig })\n}\n\nconst component: ICloudbaseComponent = {\n name: COMPONENT_NAME,\n entity: {\n database,\n },\n}\ntry {\n cloudbase.registerComponent(component)\n} catch (e) {}\n\nexport function registerDatabase(app: ICloudbase | typeof cloudbaseNS) {\n try {\n app.registerComponent(component)\n } catch (e) {\n console.warn(e)\n }\n}\n\ntry {\n (window as any).registerDatabase = registerDatabase\n} catch (e) {}\n","import {\n SDKAdapterInterface,\n AbstractSDKRequest,\n IRequestOptions,\n ResponseObject,\n IUploadRequestOptions,\n IRequestConfig,\n IRequestMethod,\n IFetchOptions,\n} from '@cloudbase/adapter-interface'\nimport { isFormData, formatUrl, toQueryString } from '../../libs/util'\nimport { getProtocol } from '../../constants/common'\n\n/**\n * @class WebRequest\n */\nclass WebRequest extends AbstractSDKRequest {\n // 默认不限超时\n private readonly timeout: number\n // 超时提示文案\n private readonly timeoutMsg: string\n // 超时受限请求类型,默认所有请求均受限\n private readonly restrictedMethods: Array<IRequestMethod>\n constructor(config: IRequestConfig) {\n super()\n const { timeout, timeoutMsg, restrictedMethods } = config\n this.timeout = timeout || 0\n this.timeoutMsg = timeoutMsg || '请求超时'\n this.restrictedMethods = restrictedMethods || ['get', 'post', 'upload', 'download']\n }\n public get(options: IRequestOptions): Promise<ResponseObject> {\n return this.request(\n {\n ...options,\n method: 'get',\n },\n this.restrictedMethods.includes('get'),\n )\n }\n public post(options: IRequestOptions): Promise<ResponseObject> {\n return this.request(\n {\n ...options,\n method: 'post',\n },\n this.restrictedMethods.includes('post'),\n )\n }\n public put(options: IRequestOptions): Promise<ResponseObject> {\n return this.request({\n ...options,\n method: 'put',\n })\n }\n public upload(options: IUploadRequestOptions): Promise<ResponseObject> {\n const { data, file, name, method, headers = {} } = options\n const reqMethod = { post: 'post', put: 'put' }[method?.toLowerCase()] || 'put'\n // 上传方式为post时,需转换为FormData\n const formData = new FormData()\n if (reqMethod === 'post') {\n Object.keys(data).forEach((key) => {\n formData.append(key, data[key])\n })\n formData.append('key', name)\n formData.append('file', file)\n return this.request(\n {\n ...options,\n data: formData,\n method: reqMethod,\n },\n this.restrictedMethods.includes('upload'),\n )\n }\n return this.request(\n {\n ...options,\n method: 'put',\n headers,\n body: file,\n },\n this.restrictedMethods.includes('upload'),\n )\n }\n public async download(options: IRequestOptions): Promise<any> {\n try {\n const { data } = await this.get({\n ...options,\n headers: {}, // 下载资源请求不经过service,header清空\n responseType: 'blob',\n })\n const url = window.URL.createObjectURL(new Blob([data]))\n const fileName = decodeURIComponent(new URL(options.url).pathname.split('/').pop() || '')\n const link = document.createElement('a')\n\n link.href = url\n link.setAttribute('download', fileName)\n link.style.display = 'none'\n\n document.body.appendChild(link)\n link.click()\n // 回收内存\n window.URL.revokeObjectURL(url)\n document.body.removeChild(link)\n } catch (e) {}\n return new Promise((resolve) => {\n resolve({\n statusCode: 200,\n tempFilePath: options.url,\n })\n })\n }\n async fetch(options: IFetchOptions & { shouldThrowOnError?: boolean }): Promise<ResponseObject> {\n const abortController = new AbortController()\n const { url, enableAbort = false, stream = false, signal, timeout: _timeout, shouldThrowOnError = true } = options\n\n const timeout = _timeout ?? this.timeout\n\n // FIXME(内存泄漏): { once: true } 只在 abort 事件【触发后】才解绑监听器。\n // 如果请求正常完成、从未 abort,该监听器会一直残留在外部 signal 上。\n // 当调用方复用同一长生命周期 signal 反复发请求时,监听器仍会持续累积。\n // 根治方式:在请求结束(finally)时 removeEventListener 主动解绑,\n // 而不能仅依赖 { once: true }。此处暂仅记录,不改动逻辑。\n if (signal) {\n if (signal.aborted) abortController.abort()\n signal.addEventListener('abort', () => abortController.abort())\n }\n\n let timer = null\n if (enableAbort && timeout) {\n timer = setTimeout(() => {\n console.warn(this.timeoutMsg)\n abortController.abort(new Error(this.timeoutMsg))\n }, timeout)\n }\n\n const res = await fetch(url, {\n ...options,\n signal: abortController.signal,\n })\n .then(async (response) => {\n clearTimeout(timer)\n if (shouldThrowOnError) {\n // 404 等等也会进 resolve,所以要再通过 ok 判断\n return response.ok ? response : Promise.reject(await response.json())\n }\n return response\n })\n .catch((x) => {\n clearTimeout(timer)\n // 传输级失败(网络中断、CORS 预检被拒、请求被 abort 等)时 fetch 会 reject,\n // 此时没有可解析的 Response。无论 shouldThrowOnError 取值都必须把真实错误抛出,\n // 否则 res 会变成 undefined,下方读取 res.headers 会抛出令人误解的\n // \"Cannot read properties of undefined (reading 'headers')\",掩盖真正的错误原因。\n return Promise.reject(x)\n })\n\n return {\n // eslint-disable-next-line no-nested-ternary\n data: stream ? res.body : res.headers.get('content-type')?.includes('application/json') ? res.json() : res.text(),\n statusCode: res.status,\n header: res.headers,\n // 透出原始 Response,便于上层按需 .blob() / .arrayBuffer() / 读取 body 流,避免二次包装。\n response: res,\n }\n }\n /**\n * @param {IRequestOptions} options\n * @param {boolean} enableAbort 是否超时中断请求\n */\n protected request(options: IRequestOptions, enableAbort = false): Promise<ResponseObject> {\n const method = String(options.method).toLowerCase() || 'get'\n return new Promise((resolve) => {\n const { url, headers = {}, data, responseType, withCredentials, body, onUploadProgress } = options\n const realUrl = formatUrl(getProtocol(), url, method === 'get' ? data : {})\n const ajax = new XMLHttpRequest()\n ajax.open(method, realUrl)\n responseType && (ajax.responseType = responseType)\n // 支持通过 AbortSignal 取消请求:已 abort 立即取消;否则用 { once: true }\n // 监听,触发后自动解绑,避免复用同一 AbortController 多次请求时累积监听器。\n //\n // FIXME(内存泄漏): { once: true } 只在 abort 事件【触发后】才解绑监听器。\n // 如果请求正常完成、从未 abort,该监听器会一直残留在外部 signal 上。\n // 当调用方复用同一长生命周期 signal 反复发请求时,监听器仍会持续累积。\n // 根治方式:在请求结束(readyState===4 / onloadend)时 removeEventListener\n // 主动解绑,而不能仅依赖 { once: true }。此处暂仅记录,不改动逻辑。\n const signal = (options as any).signal as AbortSignal | undefined\n if (signal) {\n if (signal.aborted) {\n ajax.abort()\n } else {\n signal.addEventListener('abort', () => ajax.abort(), { once: true })\n }\n }\n Object.keys(headers).forEach((key) => {\n ajax.setRequestHeader(key, headers[key])\n })\n let timer\n if (onUploadProgress) {\n ajax.upload.addEventListener('progress', onUploadProgress)\n }\n ajax.onreadystatechange = () => {\n const result: ResponseObject = {}\n if (ajax.readyState === 4) {\n const headers = ajax.getAllResponseHeaders()\n const arr = headers.trim().split(/[\\r\\n]+/)\n // Create a map of header names to values\n const headerMap = {}\n arr.forEach((line) => {\n const parts = line.split(': ')\n const header = parts.shift().toLowerCase()\n const value = parts.join(': ')\n headerMap[header] = value\n })\n result.header = headerMap\n result.statusCode = ajax.status\n try {\n // 上传post请求返回数据格式为xml,此处容错\n result.data = responseType === 'blob' ? ajax.response : JSON.parse(ajax.responseText)\n } catch (e) {\n result.data = responseType === 'blob' ? ajax.response : ajax.responseText\n }\n clearTimeout(timer)\n resolve(result)\n }\n }\n if (enableAbort && this.timeout) {\n timer = setTimeout(() => {\n console.warn(this.timeoutMsg)\n ajax.abort()\n }, this.timeout)\n }\n // 处理 payload\n let payload\n if (isFormData(data)) {\n // FormData,不处理\n payload = data\n } else if (headers['content-type'] === 'application/x-www-form-urlencoded') {\n payload = toQueryString(data)\n } else if (body) {\n payload = body\n } else {\n // 其它情况\n payload = data ? JSON.stringify(data) : undefined\n }\n\n if (withCredentials) {\n ajax.withCredentials = true\n }\n ajax.send(payload)\n })\n }\n}\n\nfunction genAdapter() {\n const adapter: SDKAdapterInterface & { type?: 'default' | '' } = {\n type: 'default',\n root: window,\n reqClass: WebRequest,\n wsClass: WebSocket,\n localStorage,\n }\n return adapter\n}\n\nexport { genAdapter, WebRequest }\n","let sdkName = '@cloudbase/js-sdk'\nexport function setSdkName(name: string) {\n sdkName = name\n}\nexport function getSdkName() {\n return sdkName\n}\n\nlet PROTOCOL = 'https:'\n\nexport function setProtocol(protocol: 'http:' | 'https:') {\n PROTOCOL = protocol\n}\n\nexport function getProtocol() {\n return PROTOCOL\n}\n// 是否为开发模式\nexport const IS_DEBUG_MODE = typeof process === 'undefined' || typeof process.env === 'undefined' ? false : process.env.NODE_ENV === 'development'\n// 问答社区链接\nexport const COMMUNITY_SITE_URL = 'https://support.qq.com/products/148793'\n","export const ERRORS = {\n INVALID_PARAMS: 'INVALID_PARAMS',\n INVALID_SYNTAX: 'INVALID_SYNTAX',\n INVALID_OPERATION: 'INVALID_OPERATION',\n OPERATION_FAIL: 'OPERATION_FAIL',\n NETWORK_ERROR: 'NETWORK_ERROR',\n UNKOWN_ERROR: 'UNKOWN_ERROR',\n}\n","import { printGroupLog } from '../libs/util'\nimport { IS_DEBUG_MODE } from '../constants'\n\ninterface ICatchErrorsDecoratorOptions {\n mode?: 'sync' | 'async';\n customInfo?: {\n className?: string;\n methodName?: string;\n };\n title?: string;\n messages?: string[];\n}\n// firefox的stack格式与chrome不同\nlet isFirefox = false\nif (typeof navigator !== 'undefined' && navigator.userAgent) {\n isFirefox = navigator.userAgent.indexOf('Firefox') !== -1\n}\n/**\n * decorate在stack中一般都特定的规范\n */\nconst REG_STACK_DECORATE = isFirefox\n ? /(\\.js\\/)?__decorate(\\$\\d+)?<@.*\\d$/\n : /(\\/\\w+\\.js\\.)?__decorate(\\$\\d+)?\\s*\\(.*\\)$/\nconst REG_STACK_LINK = /https?:\\/\\/.+:\\d*\\/.*\\.js:\\d+:\\d+/\n/**\n * debug模式强化日志信息\n * @param options\n */\nexport function catchErrorsDecorator(options: ICatchErrorsDecoratorOptions) {\n const { mode = 'async', customInfo = {}, title, messages = [] } = options\n\n return function (\n target: any,\n methodName: string,\n descriptor: TypedPropertyDescriptor<Function>\n ) {\n // 生产环境禁用\n if (!IS_DEBUG_MODE) {\n return\n }\n const className = customInfo.className || target.constructor.name\n const fnName = customInfo.methodName || methodName\n const fn = descriptor.value\n\n // 被decorator装饰的源码link\n // 在descriptor.value外部此处创建的stack层次可触达源码\n // 而descriptor.value内部有可能由于stack太深无法触达\n const sourceLink = getSourceLink(new Error())\n\n if (mode === 'sync') {\n descriptor.value = function (...args: any[]) {\n // 此处的stack作用主要是为了获取被decorator装饰的源码class和method名称\n const innerErr: any = getRewritedError({\n err: new Error(),\n className,\n methodName: fnName,\n sourceLink,\n })\n try {\n return fn.apply(this, args)\n } catch (err) {\n let failErr = err\n const { message: errMsg, error, error_description: errorDescription } = err\n const logs: any = {\n title: title || `${className}.${fnName} failed`,\n content: [{\n type: 'error',\n body: err,\n }],\n }\n // 只特殊处理SDK业务逻辑抛出的错误-JSON string\n if (errMsg && /^\\{.*\\}$/.test(errMsg)) {\n const msg = JSON.parse(errMsg)\n logs.subtitle = errMsg\n if (msg.code) {\n if (innerErr) {\n innerErr.code = msg.code\n innerErr.msg = msg.msg\n } else {\n err.code = msg.code\n err.message = msg.msg\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n }\n\n // oauth 错误特殊处理\n if (error && errorDescription) {\n logs.subtitle = errorDescription\n if (innerErr) {\n innerErr.code = error\n innerErr.msg = errorDescription\n } else {\n err.code = error\n err.message = errorDescription\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n printGroupLog(logs)\n throw failErr\n }\n }\n } else {\n descriptor.value = async function (...args: any[]) {\n const innerErr: any = getRewritedError({\n err: new Error(),\n className,\n methodName: fnName,\n sourceLink,\n })\n\n try {\n return await fn.apply(this, args)\n } catch (err) {\n let failErr = err\n const { message: errMsg, error, error_description: errorDescription } = err\n const logs: any = {\n title: title || `${className}.${fnName} failed`,\n content: [{\n type: 'error',\n body: err,\n }],\n }\n // 只特殊处理SDK业务逻辑抛出的错误-JSON string\n if (errMsg && /^\\{.*\\}$/.test(errMsg)) {\n const msg = JSON.parse(errMsg)\n logs.subtitle = msg\n if (msg.code) {\n if (innerErr) {\n innerErr.code = msg.code\n innerErr.message = msg.msg\n } else {\n err.code = msg.code\n err.message = msg.msg\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n }\n\n // oauth 错误特殊处理\n if (error && errorDescription) {\n logs.subtitle = errorDescription\n if (innerErr) {\n innerErr.code = error\n innerErr.msg = errorDescription\n } else {\n err.code = error\n err.message = errorDescription\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n printGroupLog(logs)\n throw failErr\n }\n }\n }\n }\n}\n\n/**\n * 在原始堆栈中查找装饰器条目并返回源码链接link\n * @param err\n */\nfunction getSourceLink(err: Error) {\n let sourceLink = ''\n const outterErrStacks = err.stack.split('\\n')\n const indexOfDecorator = outterErrStacks.findIndex(str => REG_STACK_DECORATE.test(str))\n\n if (indexOfDecorator !== -1) {\n const match = REG_STACK_LINK.exec(outterErrStacks[indexOfDecorator + 1] || '')\n\n sourceLink = match ? match[0] : ''\n }\n return sourceLink\n}\n\n/**\n * 在原始堆栈中查找装饰器条目,剔除其后的无用堆栈,并将链接替换为源码link\n * @param options\n */\nfunction getRewritedError(options: {\n err: Error;\n className: string;\n methodName: string;\n sourceLink: string;\n}) {\n const { err, className, methodName, sourceLink } = options\n // 找不到源码link返回null,后续逻辑将打印原堆栈信息\n if (!sourceLink) {\n return null\n }\n\n const innerErrStack = err.stack.split('\\n')\n const REG_STACK_INNER_METHOD = isFirefox\n ? /^catchErrorsDecorator\\/<\\/descriptor.value@.*\\d$/\n : new RegExp(`${className}\\\\.descriptor.value\\\\s*\\\\[as\\\\s${methodName}\\\\]\\\\s*\\\\(.*\\\\)$`)\n const REG_STACK_INNER_METHOD_WITHOUT_LINK = isFirefox\n ? /^catchErrorsDecorator\\/<\\/descriptor.value/\n : new RegExp(`${className}\\\\.descriptor.value\\\\s*\\\\[as\\\\s${methodName}\\\\]`)\n const indexOfSource = innerErrStack.findIndex(str => REG_STACK_INNER_METHOD.test(str))\n let innerErr: Error\n if (indexOfSource !== -1) {\n // @ts-ignore\n const realErrStack = innerErrStack.filter((v, i) => i > indexOfSource)\n realErrStack.unshift(innerErrStack[indexOfSource]\n .replace(REG_STACK_INNER_METHOD_WITHOUT_LINK, `${className}.${methodName}`)\n .replace(REG_STACK_LINK, sourceLink))\n innerErr = new Error()\n innerErr.stack = `${isFirefox ? '@debugger' : 'Error'}\\n${realErrStack.join('\\n')}`\n }\n return innerErr\n}\n","export default class AbortController {\n listeners: Array<CallableFunction> = []\n signal = {\n aborted: false,\n addEventListener: (e: string, f: CallableFunction) => {\n if (e === 'abort') {\n this.listeners.push(f)\n }\n },\n }\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor() {}\n\n abort() {\n if (this.signal.aborted) return\n\n this.signal.aborted = true\n this.listeners.forEach(f => f())\n }\n}\n","import { StorageInterface, AbstractStorage, SDKAdapterInterface } from '@cloudbase/adapter-interface'\nimport { ICloudbaseCache, ICacheConfig } from '@cloudbase/types/cache'\nimport { KV, Persistence, ICloudbasePlatformInfo } from '@cloudbase/types'\nimport { printWarn } from './util'\nimport { ERRORS, getSdkName } from '../constants'\n\n/**\n * persitence=none时登录态保存在内存中\n */\nclass TcbCacheObject extends AbstractStorage {\n private readonly root: any\n constructor(root: any) {\n super()\n this.root = root\n if (!root.tcbCacheObject) {\n root.tcbCacheObject = {}\n }\n }\n public setItem(key: string, value: any) {\n this.root.tcbCacheObject[key] = value\n }\n public getItem(key: string) {\n return this.root.tcbCacheObject[key]\n }\n public removeItem(key: string) {\n delete this.root.tcbCacheObject[key]\n }\n public clear() {\n delete this.root.tcbCacheObject\n }\n}\n/**\n * 工厂函数\n */\nfunction createStorage(persistence: Persistence, adapter: SDKAdapterInterface): StorageInterface {\n switch (persistence) {\n case 'local':\n if (!adapter.localStorage) {\n printWarn(ERRORS.INVALID_PARAMS, 'localStorage is not supported on current platform')\n // 不支持localstorage的平台降级为none\n return new TcbCacheObject(adapter.root)\n }\n return adapter.localStorage\n case 'none':\n return new TcbCacheObject(adapter.root)\n default:\n if (!adapter.localStorage) {\n printWarn(ERRORS.INVALID_PARAMS, 'localStorage is not supported on current platform')\n // 不支持localstorage的平台降级为none\n return new TcbCacheObject(adapter.root)\n }\n return adapter.localStorage\n }\n}\n\nexport class CloudbaseCache implements ICloudbaseCache {\n public keys: KV<string> = {}\n\n private persistenceTag: Persistence\n private platformInfo: ICloudbasePlatformInfo\n private storage: StorageInterface\n\n constructor(config: ICacheConfig) {\n const { persistence, platformInfo = {}, keys = {} } = config\n this.platformInfo = platformInfo\n if (!this.storage) {\n this.persistenceTag = this.platformInfo.adapter.primaryStorage || persistence\n this.storage = createStorage(this.persistenceTag, this.platformInfo.adapter)\n this.keys = keys\n }\n }\n /**\n * @getter storage模式-同步/异步\n */\n get mode() {\n return this.storage.mode || 'sync'\n }\n get persistence(): Persistence {\n return this.persistenceTag\n }\n\n public setStore(key: string, value: any, version?: any) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use setStoreAsync insteed')\n return\n }\n if (!this.storage) {\n return\n }\n\n try {\n const val = {\n version: version || 'localCachev1',\n content: value,\n }\n this.storage.setItem(key, JSON.stringify(val))\n } catch (e) {\n throw new Error(JSON.stringify({\n code: ERRORS.OPERATION_FAIL,\n msg: `[${getSdkName()}][${ERRORS.OPERATION_FAIL}]setStore failed`,\n info: e,\n }))\n }\n\n return\n }\n public async setStoreAsync(key: string, value: any, version?: any) {\n if (!this.storage) {\n return\n }\n\n try {\n const val = {\n version: version || 'localCachev1',\n content: value,\n }\n await this.storage.setItem(key, JSON.stringify(val))\n } catch (e) {\n return\n }\n\n return\n }\n public getStore(key: string, version?: string) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use getStoreAsync insteed')\n return\n }\n try {\n // 测试用例使用\n if (typeof process !== 'undefined' && process.env?.tcb_token) {\n return process.env.tcb_token\n }\n\n if (!this.storage) {\n return ''\n }\n } catch (e) {\n return ''\n }\n\n version = version || 'localCachev1'\n\n const content = this.storage.getItem(key)\n if (!content) {\n return ''\n }\n\n if (content.indexOf(version) >= 0) {\n const d = JSON.parse(content)\n return d.content\n }\n return ''\n }\n public async getStoreAsync(key: string, version?: string) {\n try {\n // 测试用例使用\n if (typeof process !== 'undefined' && process.env?.tcb_token) {\n return process.env.tcb_token\n }\n\n if (!this.storage) {\n return ''\n }\n } catch (e) {\n return ''\n }\n\n version = version || 'localCachev1'\n\n const content = await this.storage.getItem(key)\n if (!content) {\n return ''\n }\n\n if (content.indexOf(version) >= 0) {\n const d = JSON.parse(content)\n return d.content\n }\n return ''\n }\n public removeStore(key: string) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use removeStoreAsync insteed')\n return\n }\n this.storage.removeItem(key)\n }\n public async removeStoreAsync(key: string) {\n await this.storage.removeItem(key)\n }\n}\n","import { isString, isInstanceOf } from './util'\nimport { Listeners, ICloudbaseEventEmitter } from '@cloudbase/types/events'\n\n\n/**\n * @private\n * @function _addEventListener - 添加监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @param {Listeners} listeners - 已存响应函数集合\n */\nfunction customeAddEventListener(name: string, listener: Function, listeners: Listeners) {\n listeners[name] = listeners[name] || []\n listeners[name].push(listener)\n}\n/**\n * @private\n * @function _removeEventListener - 移除监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @param {Listeners} listeners - 已存响应函数集合\n */\nfunction customRemoveEventListener(name: string, listener: Function, listeners: Listeners) {\n if (listeners?.[name]) {\n const index = listeners[name].indexOf(listener)\n if (index !== -1) {\n listeners[name].splice(index, 1)\n }\n }\n}\ninterface IEvent {\n name: string;\n target: any;\n data: any;\n}\n/**\n * 自定义事件\n * @class CloudbaseEvent\n * @param {string} name - 类型\n * @param {any} data - 数据\n */\nexport class CloudbaseEvent implements IEvent {\n public readonly name: string\n public target: any\n public data: any\n\n constructor(name: string, data: any) {\n this.data = data || null\n this.name = name\n }\n}\n/**\n * 自定义错误事件\n * @class IErrorEvent\n * @extends CloudbaseEvent\n * @param {Error} error - 错误信息对象\n * @param {any} data - 数据\n */\nexport class IErrorEvent extends CloudbaseEvent {\n public readonly error: Error\n constructor(error: Error, data?: any) {\n super('error', { error, data })\n this.error = error\n }\n}\n\n/**\n * @class CloudbaseEventEmitter\n */\nexport class CloudbaseEventEmitter implements ICloudbaseEventEmitter {\n /**\n * @private\n * @readonly\n * @property {Listeners} listeners - 响应函数集合\n * @default `{}`\n */\n private readonly listeners: Listeners = {}\n\n /**\n * @public\n * @method on - 添加监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @return `this`\n */\n public on(name: string, listener: Function): this {\n customeAddEventListener(name, listener, this.listeners)\n return this\n }\n /**\n * @public\n * @method off - 移除监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @return `this`\n */\n public off(name: string, listener: Function): this {\n customRemoveEventListener(name, listener, this.listeners)\n return this\n }\n /**\n * @public\n * @method fire - 触发事件\n * @param {string|CloudbaseEvent} event - event\n * @return `this`\n */\n public fire(event: string | CloudbaseEvent, data?: any): this {\n // 打印错误信息\n if (isInstanceOf(event, IErrorEvent)) {\n console.error((event as IErrorEvent).error)\n return this\n }\n\n const ev: CloudbaseEvent = isString(event) ? new CloudbaseEvent(event as string, data || {}) : event as CloudbaseEvent\n\n const { name } = ev\n\n if (this.listens(name)) {\n ev.target = this\n\n const handlers = this.listeners[name] ? [...this.listeners[name]] : []\n for (const fn of handlers) {\n fn.call(this, ev)\n }\n }\n\n return this\n }\n\n /**\n * @private\n * @method listens - 判断是否监听了name事件\n * @param {string} name - event名称\n * @return `boolean`\n */\n private listens(name: string): boolean {\n return this.listeners[name] && this.listeners[name].length > 0\n }\n}\n\n\nconst eventEmitter = new CloudbaseEventEmitter()\n\nexport function addEventListener(event: string, callback: Function) {\n eventEmitter.on(event, callback)\n}\n\nexport function activateEvent(event: string, data: any = {}) {\n eventEmitter.fire(event, data)\n}\n\nexport function removeEventListener(event: string, callback: Function) {\n eventEmitter.off(event, callback)\n}\n","import { CloudbaseEventEmitter } from './events'\n\nexport const bus = new CloudbaseEventEmitter()\n\nexport const LANG_CHANGE_EVENT = 'lang_change'\n","import { KV } from '@cloudbase/types'\nimport { getSdkName } from '../constants'\n\nexport function isArray(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Array]'\n}\nexport function isString(val: any): boolean {\n return typeof val === 'string'\n}\nexport function isUndefined(val: any): boolean {\n return typeof val === 'undefined'\n}\nexport function isPalinObject(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Object]'\n}\nexport function isNull(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Null]'\n}\nexport function isInstanceOf(instance: any, construct: any): boolean {\n return instance instanceof construct\n}\nexport function isFormData(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object FormData]'\n}\nexport function genSeqId(): string {\n return Math.random().toString(16)\n .slice(2)\n}\nexport function generateRequestId() {\n let d = new Date().getTime()\n let d2 = (Date?.now && Date.now() * 1000) || 0\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n let r = Math.random() * 16\n if (d > 0) {\n r = (d + r) % 16 | 0\n d = Math.floor(d / 16)\n } else {\n r = (d2 + r) % 16 | 0\n d2 = Math.floor(d2 / 16)\n }\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16)\n })\n}\nexport function formatUrl(PROTOCOL: string, url: string, query: KV<any> = {}): string {\n const urlHasQuery = /\\?/.test(url)\n let queryString = ''\n Object.keys(query).forEach((key) => {\n if (queryString === '') {\n !urlHasQuery && (url += '?')\n } else {\n queryString += '&'\n }\n queryString += `${key}=${encodeURIComponent(query[key])}`\n })\n url += queryString\n if (/^http(s)?:\\/\\//.test(url)) {\n return url\n }\n return `${PROTOCOL}${url}`\n}\n\nexport function toQueryString(query: KV<any> = {}) {\n const queryString = []\n Object.keys(query).forEach((key) => {\n queryString.push(`${key}=${encodeURIComponent(query[key])}`)\n })\n return queryString.join('&')\n}\n\nexport function getQuery(name: string, url?: string) {\n if (typeof window === 'undefined') {\n return false\n }\n // 参数:变量名,url为空则表从当前页面的url中取\n const u = url || decodeURIComponent(window.location.search)\n const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`)\n const r = u.substr(u.indexOf('?') + 1).match(reg)\n return r !== null && r !== undefined ? r[2] : ''\n}\n\nexport const getHash = function (name: string) {\n if (typeof window === 'undefined') {\n return ''\n }\n const matches = window.location.hash.match(new RegExp(`[#?&/]${name}=([^&#]*)`))\n return matches ? matches[1] : ''\n}\n\nexport function removeParam(key: string, sourceURL: string) {\n let rtn = sourceURL.split('?')[0]\n let param\n let params = []\n const queryString = sourceURL.indexOf('?') !== -1 ? sourceURL.split('?')[1] : ''\n if (queryString !== '') {\n params = queryString.split('&')\n for (let i = params.length - 1; i >= 0; i -= 1) {\n /* eslint-disable-next-line */\n param = params[i].split('=')[0]\n if (param === key) {\n params.splice(i, 1)\n }\n }\n rtn = `${rtn}?${params.join('&')}`\n }\n return rtn\n}\n\nexport function createPromiseCallback() {\n let cb: any = {}\n if (!Promise) {\n cb = () => {}\n cb.promise = {}\n\n const throwPromiseNotDefined = () => {\n throw new Error('Your Node runtime does support ES6 Promises. '\n + 'Set \"global.Promise\" to your preferred implementation of promises.',)\n }\n\n Object.defineProperty(cb.promise, 'then', { get: throwPromiseNotDefined })\n Object.defineProperty(cb.promise, 'catch', { get: throwPromiseNotDefined })\n return cb\n }\n\n const promise = new Promise((resolve, reject) => {\n cb = (err, data) => {\n if (err) return reject(err)\n return resolve(data)\n }\n })\n cb.promise = promise\n return cb\n}\n\nexport function execCallback(fn: Function | null | undefined, err: any, data = null) {\n if (fn && typeof fn === 'function') {\n return fn(err, data)\n }\n if (err) {\n throw err\n }\n return data\n}\n\nexport function printWarn(error: string, msg: string) {\n console.warn(`[${getSdkName()}][${error}]:${msg}`)\n}\n\nexport function printError(error: string, msg: string) {\n console.error({\n code: error,\n msg: `[${getSdkName()}][${error}]:${msg}`,\n })\n}\nexport function printInfo(error: string, msg: string) {\n console.log(`[${getSdkName()}][${error}]:${msg}`)\n}\nexport function throwError(error: string, msg: string) {\n // legacy v1 兼容路径(auth v1-compat 本地校验):message 保持已发布版本的 JSON-string 形状\n // (v1 错误处理范式 JSON.parse(e.message) 不受影响),额外挂 code 属性供新范式直访\n const err: any = new Error(JSON.stringify({\n code: error,\n msg: `[${getSdkName()}][${error}]:${msg}`,\n }),)\n err.code = error\n throw err\n}\n\n// ========== Cloudbase Error Factory ==========\nexport interface ICloudbaseErrorOptions {\n code: string\n msg: string\n requestId?: string\n [key: string]: any\n}\n\nexport type CloudbaseErrorFactory = (opts: ICloudbaseErrorOptions) => Error\n\n/**\n * 浏览器形态默认错误类:对齐 v3 已发布行为(实测 @cloudbase/js-sdk@3.8.2 网关业务错误\n * 抛 {code, message, requestId},`e.code` 直接可访问),同时保留 Error 特性\n * (instanceof / stack,是 v3 裸对象的超集)。\n * JSON.stringify(err) 的结果与 v3.8.2 裸对象逐字段一致。\n */\nexport class CloudbaseError extends Error {\n public readonly code: string\n public readonly message: string\n public readonly requestId: string\n\n public constructor(opts: ICloudbaseErrorOptions) {\n super(opts.msg || opts.message || '')\n this.code = opts.code || ''\n this.requestId = opts.requestId || ''\n // Error 构造器创建的 message 自有属性是不可枚举的,直接赋值会保留该属性描述符,\n // 导致 JSON.stringify(err) 丢失 message(v3.8.2 裸对象里 message 是可枚举的)\n Object.defineProperty(this, 'message', {\n value: opts.msg || opts.message || '',\n enumerable: true,\n writable: true,\n configurable: true,\n })\n }\n}\n\nconst defaultErrorFactory: CloudbaseErrorFactory = opts => new CloudbaseError(opts)\n\n/**\n * 创建错误对象。无全局状态:factory 由调用方通过 config.errorFactory 传入(per-instance),\n * 未传入时使用默认工厂(浏览器形态)。\n */\nexport function createCloudbaseError(opts: ICloudbaseErrorOptions, factory?: CloudbaseErrorFactory): Error {\n return (factory || defaultErrorFactory)(opts)\n}\n\n// ========== 统一 throw 开关 ==========\n\n/**\n * 解析是否抛错:只读 `config.throw`,默认 true。\n * `throwOnCode` 仅在 init 时作为别名被 canonicalize 到 `throw`,内部不再保留。\n * 该开关统一控制「服务端业务错误 + 本地校验」的抛/返回行为;\n * Supabase-like API(auth 新方法、storage.from())不受此开关影响。\n */\nexport function resolveThrow(config?: { throw?: boolean } | any): boolean {\n if (config && typeof config.throw === 'boolean') {\n return config.throw\n }\n return true\n}\n\n/**\n * 按 `resolveThrow` 决定抛错或返回 `{ code, message }`。\n * - throw=true:抛 `createCloudbaseError`\n * - throw=false:返回 `{ code, message, ...(requestId) }`\n */\nexport function maybeThrow(\n config: { throw?: boolean } | any,\n opts: { code: string; msg: string; requestId?: string },\n): any {\n if (resolveThrow(config)) {\n throw createCloudbaseError(opts, config?.errorFactory)\n }\n return { code: opts.code, message: opts.msg, ...(opts.requestId ? { requestId: opts.requestId } : {}) }\n}\n\n// ========== 网关响应归一化 ==========\n\n/**\n * 将网关响应的业务错误码/信息从 `data` 提升到顶层(若顶层缺失)。\n * 网关(gateWay)返回 `{ requestId, data: {...}, statusCode, ... }`,业务错误码在 `data.code` / `data.message`;\n * 消费方(database / storage 经典)统一用顶层 `res.code` 判断。\n *\n * 无副作用:需要提升时返回新对象,无需提升时原样返回入参。\n */\nexport function promoteGatewayError(res: any): any {\n if (res && typeof res === 'object' && res.data && typeof res.data === 'object') {\n const { code, message } = res.data\n if ((!res.code && code) || (!res.message && message)) {\n return {\n ...res,\n ...(!res.code && code ? { code } : {}),\n ...(!res.message && message ? { message } : {}),\n }\n }\n }\n return res\n}\n\nexport function errorToResult(e: any): { code: string; message: string; requestId?: string; [key: string]: any } {\n if (e instanceof Error && typeof e.message === 'string') {\n try {\n const parsed = JSON.parse(e.message)\n if (parsed && typeof parsed.code === 'string') {\n return {\n code: parsed.code,\n message: parsed.msg || parsed.message || '',\n requestId: parsed.requestId,\n }\n }\n } catch (_) {}\n }\n if (e && typeof e.code === 'string') {\n return { code: e.code, message: e.message || '', requestId: e.requestId }\n }\n return { code: 'UNKNOWN_ERROR', message: String(e?.message || e || '') }\n}\n\ninterface IPrintGroupLogOptions {\n title: string\n subtitle: string | object\n content: {\n type: 'info' | 'warn' | 'error'\n body: string | Error\n }[]\n printTrace?: boolean\n collapsed?: boolean\n}\nexport function printGroupLog(options: IPrintGroupLogOptions) {\n const { title, subtitle = '', content = [], printTrace = false, collapsed = false } = options\n if (collapsed) {\n (console.groupCollapsed || console.error)(title, subtitle)\n } else {\n (console.group || console.error)(title, subtitle)\n }\n for (const tip of content) {\n const { type, body } = tip\n switch (type) {\n case 'info':\n console.log(body)\n break\n case 'warn':\n console.warn(body)\n break\n case 'error':\n console.error(body)\n break\n }\n }\n if (printTrace) {\n (console.trace || console.log)('stack trace:')\n }\n console.groupEnd?.()\n}\n\nexport const sleep = (ms = 0) => new Promise(r => setTimeout(r, ms))\n\nexport function transformPhone(phoneNumber: string) {\n return `+86${phoneNumber}`\n}\n\nexport const parseQueryString = (queryString) => {\n queryString = queryString.replace(/^\\?/, '')\n const params = {}\n const pairs = queryString.split('&')\n\n pairs.forEach((item) => {\n let [key, value] = item.split('=')\n key = decodeURIComponent(key)\n value = decodeURIComponent(value)\n if (key) {\n if (params[key]) {\n if (Array.isArray(params[key])) {\n params[key].push(value)\n } else {\n params[key] = [params[key], value]\n }\n } else {\n params[key] = value\n }\n }\n })\n\n return params\n}\n\n// 解析URL参数\nexport function parseCaptcha(url) {\n let queryObj: any = {}\n const matched = url.match(/^(data:.*?)(\\?[^#\\s]*)?$/)\n if (matched) {\n // eslint-disable-next-line prefer-destructuring\n url = matched[1]\n const search = matched[2]\n if (search) {\n queryObj = parseQueryString(search)\n }\n }\n const { token, ...restQueryObj } = queryObj\n if (/^data:/.test(url) && !token) {\n return {\n error: 'invalid_argument',\n error_description: `invalid captcha data: ${url}`,\n }\n }\n if (!token) {\n return {\n error: 'unimplemented',\n error_description: 'need to impl captcha data',\n }\n }\n // 解析url得到的参数\n return {\n state: restQueryObj.state,\n token, // 验证码token\n captchaData: url, // 验证码base64图片\n }\n}\n","var _a;\nvar ErrorCode;\n(function (ErrorCode) {\n ErrorCode[\"DocIDError\"] = \"\\u6587\\u6863ID\\u4E0D\\u5408\\u6CD5\";\n ErrorCode[\"CollNameError\"] = \"\\u96C6\\u5408\\u540D\\u79F0\\u4E0D\\u5408\\u6CD5\";\n ErrorCode[\"OpStrError\"] = \"\\u64CD\\u4F5C\\u7B26\\u4E0D\\u5408\\u6CD5\";\n ErrorCode[\"DirectionError\"] = \"\\u6392\\u5E8F\\u5B57\\u7B26\\u4E0D\\u5408\\u6CD5\";\n ErrorCode[\"IntergerError\"] = \"must be integer\";\n ErrorCode[\"BooleanError\"] = \"must be boolean\";\n ErrorCode[\"ArrayError\"] = \"must be array\";\n ErrorCode[\"QueryParamTypeError\"] = \"\\u67E5\\u8BE2\\u53C2\\u6570\\u5FC5\\u987B\\u4E3A\\u5BF9\\u8C61\";\n ErrorCode[\"QueryParamValueError\"] = \"\\u67E5\\u8BE2\\u53C2\\u6570\\u5BF9\\u8C61\\u503C\\u4E0D\\u80FD\\u5747\\u4E3Aundefined\";\n ErrorCode[\"CentersPhereError\"] = \"centersPhere\\u7ED3\\u6784\\u4E0D\\u5408\\u6CD5\";\n})(ErrorCode || (ErrorCode = {}));\nvar FieldType = {\n String: 'String',\n Number: 'Number',\n Object: 'Object',\n Array: 'Array',\n Boolean: 'Boolean',\n Null: 'Null',\n GeoPoint: 'GeoPoint',\n GeoLineString: 'GeoLineString',\n GeoPolygon: 'GeoPolygon',\n GeoMultiPoint: 'GeoMultiPoint',\n GeoMultiLineString: 'GeoMultiLineString',\n GeoMultiPolygon: 'GeoMultiPolygon',\n Date: 'Date',\n Command: 'Command',\n ServerDate: 'ServerDate',\n BsonDate: 'BsonDate'\n};\nvar OrderDirectionList = ['desc', 'asc'];\nvar WhereFilterOpList = ['<', '<=', '==', '>=', '>'];\nvar Opeartor;\n(function (Opeartor) {\n Opeartor[\"lt\"] = \"<\";\n Opeartor[\"gt\"] = \">\";\n Opeartor[\"lte\"] = \"<=\";\n Opeartor[\"gte\"] = \">=\";\n Opeartor[\"eq\"] = \"==\";\n})(Opeartor || (Opeartor = {}));\nvar OperatorMap = (_a = {},\n _a[Opeartor.eq] = '$eq',\n _a[Opeartor.lt] = '$lt',\n _a[Opeartor.lte] = '$lte',\n _a[Opeartor.gt] = '$gt',\n _a[Opeartor.gte] = '$gte',\n _a);\nvar UpdateOperatorList = [\n '$set',\n '$inc',\n '$mul',\n '$unset',\n '$push',\n '$pop',\n '$unshift',\n '$shift',\n '$currentDate',\n '$each',\n '$position'\n];\nvar QueryType;\n(function (QueryType) {\n QueryType[\"WHERE\"] = \"WHERE\";\n QueryType[\"DOC\"] = \"DOC\";\n})(QueryType || (QueryType = {}));\nexport { ErrorCode, FieldType, WhereFilterOpList, Opeartor, OperatorMap, OrderDirectionList, UpdateOperatorList, QueryType };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _symbols = [];\nvar __internalMark__ = {};\nvar HiddenSymbol = (function () {\n function HiddenSymbol(target) {\n Object.defineProperties(this, {\n target: {\n enumerable: false,\n writable: false,\n configurable: false,\n value: target,\n },\n });\n }\n return HiddenSymbol;\n}());\nvar InternalSymbol = (function (_super) {\n __extends(InternalSymbol, _super);\n function InternalSymbol(target, __mark__) {\n if (__mark__ !== __internalMark__) {\n throw new TypeError('InternalSymbol cannot be constructed with new operator');\n }\n return _super.call(this, target) || this;\n }\n InternalSymbol.for = function (target) {\n for (var i = 0, len = _symbols.length; i < len; i++) {\n if (_symbols[i].target === target) {\n return _symbols[i].instance;\n }\n }\n var symbol = new InternalSymbol(target, __internalMark__);\n _symbols.push({\n target: target,\n instance: symbol,\n });\n return symbol;\n };\n return InternalSymbol;\n}(HiddenSymbol));\nexport { InternalSymbol };\nexport default InternalSymbol;\n","import InternalSymbol from '../utils/symbol';\nexport * from '../utils/symbol';\nexport var SYMBOL_UNSET_FIELD_NAME = InternalSymbol.for('UNSET_FIELD_NAME');\nexport var SYMBOL_UPDATE_COMMAND = InternalSymbol.for('UPDATE_COMMAND');\nexport var SYMBOL_QUERY_COMMAND = InternalSymbol.for('QUERY_COMMAND');\nexport var SYMBOL_LOGIC_COMMAND = InternalSymbol.for('LOGIC_COMMAND');\nexport var SYMBOL_GEO_POINT = InternalSymbol.for('GEO_POINT');\nexport var SYMBOL_GEO_LINE_STRING = InternalSymbol.for('SYMBOL_GEO_LINE_STRING');\nexport var SYMBOL_GEO_POLYGON = InternalSymbol.for('SYMBOL_GEO_POLYGON');\nexport var SYMBOL_GEO_MULTI_POINT = InternalSymbol.for('SYMBOL_GEO_MULTI_POINT');\nexport var SYMBOL_GEO_MULTI_LINE_STRING = InternalSymbol.for('SYMBOL_GEO_MULTI_LINE_STRING');\nexport var SYMBOL_GEO_MULTI_POLYGON = InternalSymbol.for('SYMBOL_GEO_MULTI_POLYGON');\nexport var SYMBOL_SERVER_DATE = InternalSymbol.for('SERVER_DATE');\nexport var SYMBOL_REGEXP = InternalSymbol.for('REGEXP');\nexport var SYMBOL_OBJECTID = InternalSymbol.for('OBJECTID');\n","import { InternalSymbol } from './symbol';\nexport var getType = function (x) { return Object.prototype.toString.call(x).slice(8, -1).toLowerCase(); };\nexport var isObject = function (x) { return getType(x) === 'object'; };\nexport var isString = function (x) { return getType(x) === 'string'; };\nexport var isNumber = function (x) { return getType(x) === 'number'; };\nexport var isPromise = function (x) { return getType(x) === 'promise'; };\nexport var isFunction = function (x) { return typeof x === 'function'; };\nexport var isArray = function (x) { return Array.isArray(x); };\nexport var isDate = function (x) { return getType(x) === 'date'; };\nexport var isRegExp = function (x) { return getType(x) === 'regexp'; };\nexport var isInternalObject = function (x) { return x && (x._internalType instanceof InternalSymbol); };\nexport var isPlainObject = function (obj) {\n if (typeof obj !== 'object' || obj === null)\n return false;\n var proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto;\n};\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { SYMBOL_GEO_LINE_STRING } from '../helper/symbol';\nimport { Point } from './point';\nimport { isArray, isNumber } from '../utils/type';\nvar LineString = (function () {\n function LineString(points) {\n if (!isArray(points)) {\n throw new TypeError(\"\\\"points\\\" must be of type Point[]. Received type \".concat(typeof points));\n }\n if (points.length < 2) {\n throw new Error('\"points\" must contain 2 points at least');\n }\n points.forEach(function (point) {\n if (!(point instanceof Point)) {\n throw new TypeError(\"\\\"points\\\" must be of type Point[]. Received type \".concat(typeof point, \"[]\"));\n }\n });\n this.points = points;\n }\n LineString.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'LineString',\n coordinates: this.points.map(function (point) { return point.toJSON().coordinates; })\n },\n _a;\n };\n LineString.prototype.toJSON = function () {\n return {\n type: 'LineString',\n coordinates: this.points.map(function (point) { return point.toJSON().coordinates; })\n };\n };\n LineString.validate = function (lineString) {\n var e_1, _a;\n if (lineString.type !== 'LineString' || !isArray(lineString.coordinates)) {\n return false;\n }\n try {\n for (var _b = __values(lineString.coordinates), _c = _b.next(); !_c.done; _c = _b.next()) {\n var point = _c.value;\n if (!isNumber(point[0]) || !isNumber(point[1])) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n LineString.isClosed = function (lineString) {\n var firstPoint = lineString.points[0];\n var lastPoint = lineString.points[lineString.points.length - 1];\n if (firstPoint.latitude === lastPoint.latitude && firstPoint.longitude === lastPoint.longitude) {\n return true;\n }\n };\n Object.defineProperty(LineString.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_LINE_STRING;\n },\n enumerable: false,\n configurable: true\n });\n return LineString;\n}());\nexport { LineString };\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { SYMBOL_GEO_POLYGON } from '../helper/symbol';\nimport { isArray, isNumber } from '../utils/type';\nimport { LineString } from './lineString';\nvar Polygon = (function () {\n function Polygon(lines) {\n if (!isArray(lines)) {\n throw new TypeError(\"\\\"lines\\\" must be of type LineString[]. Received type \".concat(typeof lines));\n }\n if (lines.length === 0) {\n throw new Error('Polygon must contain 1 linestring at least');\n }\n lines.forEach(function (line) {\n if (!(line instanceof LineString)) {\n throw new TypeError(\"\\\"lines\\\" must be of type LineString[]. Received type \".concat(typeof line, \"[]\"));\n }\n if (!LineString.isClosed(line)) {\n throw new Error(\"LineString \".concat(line.points.map(function (p) { return p.toReadableString(); }), \" is not a closed cycle\"));\n }\n });\n this.lines = lines;\n }\n Polygon.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'Polygon',\n coordinates: this.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n })\n },\n _a;\n };\n Polygon.prototype.toJSON = function () {\n return {\n type: 'Polygon',\n coordinates: this.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n })\n };\n };\n Polygon.validate = function (polygon) {\n var e_1, _a, e_2, _b;\n if (polygon.type !== 'Polygon' || !isArray(polygon.coordinates)) {\n return false;\n }\n try {\n for (var _c = __values(polygon.coordinates), _d = _c.next(); !_d.done; _d = _c.next()) {\n var line = _d.value;\n if (!this.isCloseLineString(line)) {\n return false;\n }\n try {\n for (var line_1 = (e_2 = void 0, __values(line)), line_1_1 = line_1.next(); !line_1_1.done; line_1_1 = line_1.next()) {\n var point = line_1_1.value;\n if (!isNumber(point[0]) || !isNumber(point[1])) {\n return false;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (line_1_1 && !line_1_1.done && (_b = line_1.return)) _b.call(line_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n Polygon.isCloseLineString = function (lineString) {\n var firstPoint = lineString[0];\n var lastPoint = lineString[lineString.length - 1];\n if (firstPoint[0] !== lastPoint[0] || firstPoint[1] !== lastPoint[1]) {\n return false;\n }\n return true;\n };\n Object.defineProperty(Polygon.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_POLYGON;\n },\n enumerable: false,\n configurable: true\n });\n return Polygon;\n}());\nexport { Polygon };\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { SYMBOL_GEO_MULTI_POINT } from '../helper/symbol';\nimport { Point } from './point';\nimport { isArray, isNumber } from '../utils/type';\nvar MultiPoint = (function () {\n function MultiPoint(points) {\n if (!isArray(points)) {\n throw new TypeError(\"\\\"points\\\" must be of type Point[]. Received type \".concat(typeof points));\n }\n if (points.length === 0) {\n throw new Error('\"points\" must contain 1 point at least');\n }\n points.forEach(function (point) {\n if (!(point instanceof Point)) {\n throw new TypeError(\"\\\"points\\\" must be of type Point[]. Received type \".concat(typeof point, \"[]\"));\n }\n });\n this.points = points;\n }\n MultiPoint.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'MultiPoint',\n coordinates: this.points.map(function (point) { return point.toJSON().coordinates; })\n },\n _a;\n };\n MultiPoint.prototype.toJSON = function () {\n return {\n type: 'MultiPoint',\n coordinates: this.points.map(function (point) { return point.toJSON().coordinates; })\n };\n };\n MultiPoint.validate = function (multiPoint) {\n var e_1, _a;\n if (multiPoint.type !== 'MultiPoint' || !isArray(multiPoint.coordinates)) {\n return false;\n }\n try {\n for (var _b = __values(multiPoint.coordinates), _c = _b.next(); !_c.done; _c = _b.next()) {\n var point = _c.value;\n if (!isNumber(point[0]) || !isNumber(point[1])) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n Object.defineProperty(MultiPoint.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_MULTI_POINT;\n },\n enumerable: false,\n configurable: true\n });\n return MultiPoint;\n}());\nexport { MultiPoint };\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { SYMBOL_GEO_MULTI_LINE_STRING } from '../helper/symbol';\nimport { isArray, isNumber } from '../utils/type';\nimport { LineString } from './lineString';\nvar MultiLineString = (function () {\n function MultiLineString(lines) {\n if (!isArray(lines)) {\n throw new TypeError(\"\\\"lines\\\" must be of type LineString[]. Received type \".concat(typeof lines));\n }\n if (lines.length === 0) {\n throw new Error('Polygon must contain 1 linestring at least');\n }\n lines.forEach(function (line) {\n if (!(line instanceof LineString)) {\n throw new TypeError(\"\\\"lines\\\" must be of type LineString[]. Received type \".concat(typeof line, \"[]\"));\n }\n });\n this.lines = lines;\n }\n MultiLineString.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'MultiLineString',\n coordinates: this.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n })\n },\n _a;\n };\n MultiLineString.prototype.toJSON = function () {\n return {\n type: 'MultiLineString',\n coordinates: this.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n })\n };\n };\n MultiLineString.validate = function (multiLineString) {\n var e_1, _a, e_2, _b;\n if (multiLineString.type !== 'MultiLineString' || !isArray(multiLineString.coordinates)) {\n return false;\n }\n try {\n for (var _c = __values(multiLineString.coordinates), _d = _c.next(); !_d.done; _d = _c.next()) {\n var line = _d.value;\n try {\n for (var line_1 = (e_2 = void 0, __values(line)), line_1_1 = line_1.next(); !line_1_1.done; line_1_1 = line_1.next()) {\n var point = line_1_1.value;\n if (!isNumber(point[0]) || !isNumber(point[1])) {\n return false;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (line_1_1 && !line_1_1.done && (_b = line_1.return)) _b.call(line_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n Object.defineProperty(MultiLineString.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_MULTI_LINE_STRING;\n },\n enumerable: false,\n configurable: true\n });\n return MultiLineString;\n}());\nexport { MultiLineString };\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { SYMBOL_GEO_MULTI_POLYGON } from '../helper/symbol';\nimport { isArray, isNumber } from '../utils/type';\nimport { Polygon } from './polygon';\nvar MultiPolygon = (function () {\n function MultiPolygon(polygons) {\n var e_1, _a;\n if (!isArray(polygons)) {\n throw new TypeError(\"\\\"polygons\\\" must be of type Polygon[]. Received type \".concat(typeof polygons));\n }\n if (polygons.length === 0) {\n throw new Error('MultiPolygon must contain 1 polygon at least');\n }\n try {\n for (var polygons_1 = __values(polygons), polygons_1_1 = polygons_1.next(); !polygons_1_1.done; polygons_1_1 = polygons_1.next()) {\n var polygon = polygons_1_1.value;\n if (!(polygon instanceof Polygon)) {\n throw new TypeError(\"\\\"polygon\\\" must be of type Polygon[]. Received type \".concat(typeof polygon, \"[]\"));\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (polygons_1_1 && !polygons_1_1.done && (_a = polygons_1.return)) _a.call(polygons_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this.polygons = polygons;\n }\n MultiPolygon.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'MultiPolygon',\n coordinates: this.polygons.map(function (polygon) {\n return polygon.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n });\n })\n },\n _a;\n };\n MultiPolygon.prototype.toJSON = function () {\n return {\n type: 'MultiPolygon',\n coordinates: this.polygons.map(function (polygon) {\n return polygon.lines.map(function (line) {\n return line.points.map(function (point) { return [point.longitude, point.latitude]; });\n });\n })\n };\n };\n MultiPolygon.validate = function (multiPolygon) {\n var e_2, _a, e_3, _b, e_4, _c;\n if (multiPolygon.type !== 'MultiPolygon' || !isArray(multiPolygon.coordinates)) {\n return false;\n }\n try {\n for (var _d = __values(multiPolygon.coordinates), _e = _d.next(); !_e.done; _e = _d.next()) {\n var polygon = _e.value;\n try {\n for (var polygon_1 = (e_3 = void 0, __values(polygon)), polygon_1_1 = polygon_1.next(); !polygon_1_1.done; polygon_1_1 = polygon_1.next()) {\n var line = polygon_1_1.value;\n try {\n for (var line_1 = (e_4 = void 0, __values(line)), line_1_1 = line_1.next(); !line_1_1.done; line_1_1 = line_1.next()) {\n var point = line_1_1.value;\n if (!isNumber(point[0]) || !isNumber(point[1])) {\n return false;\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (line_1_1 && !line_1_1.done && (_c = line_1.return)) _c.call(line_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (polygon_1_1 && !polygon_1_1.done && (_b = polygon_1.return)) _b.call(polygon_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return true;\n };\n Object.defineProperty(MultiPolygon.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_MULTI_POLYGON;\n },\n enumerable: false,\n configurable: true\n });\n return MultiPolygon;\n}());\nexport { MultiPolygon };\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { FieldType } from './constant';\nimport { Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon } from './geo/index';\nvar Util = (function () {\n function Util() {\n }\n Util.formatResDocumentData = function (documents) {\n return documents.map(function (document) {\n return Util.formatField(document);\n });\n };\n Util.formatField = function (document) {\n var keys = Object.keys(document);\n var protoField = {};\n if (Array.isArray(document)) {\n protoField = [];\n }\n keys.forEach(function (key) {\n var item = document[key];\n var type = Util.whichType(item);\n var realValue;\n switch (type) {\n case FieldType.GeoPoint:\n realValue = new Point(item.coordinates[0], item.coordinates[1]);\n break;\n case FieldType.GeoLineString:\n realValue = new LineString(item.coordinates.map(function (point) { return new Point(point[0], point[1]); }));\n break;\n case FieldType.GeoPolygon:\n realValue = new Polygon(item.coordinates.map(function (line) { return new LineString(line.map(function (_a) {\n var _b = __read(_a, 2), lng = _b[0], lat = _b[1];\n return new Point(lng, lat);\n })); }));\n break;\n case FieldType.GeoMultiPoint:\n realValue = new MultiPoint(item.coordinates.map(function (point) { return new Point(point[0], point[1]); }));\n break;\n case FieldType.GeoMultiLineString:\n realValue = new MultiLineString(item.coordinates.map(function (line) { return new LineString(line.map(function (_a) {\n var _b = __read(_a, 2), lng = _b[0], lat = _b[1];\n return new Point(lng, lat);\n })); }));\n break;\n case FieldType.GeoMultiPolygon:\n realValue = new MultiPolygon(item.coordinates.map(function (polygon) {\n return new Polygon(polygon.map(function (line) { return new LineString(line.map(function (_a) {\n var _b = __read(_a, 2), lng = _b[0], lat = _b[1];\n return new Point(lng, lat);\n })); }));\n }));\n break;\n case FieldType.Date:\n realValue = item;\n break;\n case FieldType.Object:\n case FieldType.Array:\n realValue = Util.formatField(item);\n break;\n case FieldType.ServerDate:\n realValue = new Date(item.$date);\n break;\n default:\n realValue = item;\n }\n if (Array.isArray(protoField)) {\n protoField.push(realValue);\n }\n else {\n protoField[key] = realValue;\n }\n });\n return protoField;\n };\n Util.whichType = function (obj) {\n var type = Object.prototype.toString.call(obj).slice(8, -1);\n if (type === FieldType.Date) {\n return FieldType.Date;\n }\n if (type === FieldType.Object) {\n if (obj.$date) {\n type = FieldType.ServerDate;\n }\n else if (Point.validate(obj)) {\n type = FieldType.GeoPoint;\n }\n else if (LineString.validate(obj)) {\n type = FieldType.GeoLineString;\n }\n else if (Polygon.validate(obj)) {\n type = FieldType.GeoPolygon;\n }\n else if (MultiPoint.validate(obj)) {\n type = FieldType.GeoMultiPoint;\n }\n else if (MultiLineString.validate(obj)) {\n type = FieldType.GeoMultiLineString;\n }\n else if (MultiPolygon.validate(obj)) {\n type = FieldType.GeoMultiPolygon;\n }\n }\n return type;\n };\n Util.generateDocId = function () {\n var chars = 'ABCDEFabcdef0123456789';\n var autoId = '';\n for (var i = 0; i < 24; i++) {\n autoId += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return autoId;\n };\n return Util;\n}());\nexport { Util };\n","export var ERRORS = {\n CREATE_WATCH_NET_ERROR: {\n code: 'CREATE_WATCH_NET_ERROR',\n message: 'create watch network error'\n },\n CREATE_WACTH_EXCEED_ERROR: {\n code: 'CREATE_WACTH_EXCEED_ERROR',\n message: 'maximum connections exceed'\n },\n CREATE_WATCH_SERVER_ERROR: {\n code: 'CREATE_WATCH_SERVER_ERROR',\n message: 'create watch server error'\n },\n CONN_ERROR: {\n code: 'CONN_ERROR',\n message: 'connection error'\n },\n INVALID_PARAM: {\n code: 'INVALID_PARAM',\n message: 'Invalid request param'\n },\n INSERT_DOC_FAIL: {\n code: 'INSERT_DOC_FAIL',\n message: 'insert document failed'\n },\n DATABASE_TRANSACTION_CONFLICT: {\n code: 'DATABASE_TRANSACTION_CONFLICT',\n message: 'database transaction conflict'\n },\n DATABASE_REQUEST_FAILED: {\n code: 'DATABASE_REQUEST_FAILED',\n message: 'database request failed'\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Db } from '../';\nimport { EJSON } from 'bson';\nimport { isObject } from './type';\nexport var sleep = function (ms) {\n if (ms === void 0) { ms = 0; }\n return new Promise(function (r) { return setTimeout(r, ms); });\n};\nexport function withCallback(promise, callback) {\n if (typeof callback === 'function') {\n promise.then(function (res) { return callback(0, res); }, function (err) { return callback(err); });\n return undefined;\n }\n return promise;\n}\nvar counters = {};\nexport var autoCount = function (domain) {\n if (domain === void 0) { domain = 'any'; }\n if (!counters[domain]) {\n counters[domain] = 0;\n }\n return counters[domain]++;\n};\nvar wsList = {};\nexport function getWsInstance(db) {\n if (!Db.wsClientClass) {\n throw new Error('to use realtime you must import realtime module first');\n }\n var env = db.config.env;\n if (!wsList[env]) {\n wsList[env] = new Db.wsClientClass({\n context: {\n appConfig: {\n docSizeLimit: 1000,\n realtimePingInterval: 10000,\n realtimePongWaitTimeout: 5000,\n request: Db.createRequest(db.config)\n }\n }\n });\n }\n return wsList[env];\n}\nexport var getReqOpts = function (apiOptions) {\n if (apiOptions.timeout !== undefined) {\n return {\n timeout: apiOptions.timeout\n };\n }\n return {};\n};\nexport var filterUndefined = function (o) {\n if (!isObject(o)) {\n return o;\n }\n for (var key in o) {\n if (o[key] === undefined) {\n delete o[key];\n }\n else if (isObject(o[key])) {\n o[key] = filterUndefined(o[key]);\n }\n }\n return o;\n};\nexport var stringifyByEJSON = function (params) {\n params = filterUndefined(params);\n return EJSON.stringify(params, { relaxed: false });\n};\nexport var parseByEJSON = function (params) {\n return EJSON.parse(params);\n};\nvar TcbError = (function (_super) {\n __extends(TcbError, _super);\n function TcbError(error) {\n var _this = _super.call(this, error.message) || this;\n _this.code = error.code;\n _this.message = error.message;\n return _this;\n }\n return TcbError;\n}(Error));\nexport { TcbError };\nexport var E = function (errObj) {\n return new TcbError(errObj);\n};\nexport function processReturn(throwOnCode, res) {\n if (throwOnCode === false) {\n return res;\n }\n throw E(__assign({}, res));\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { ErrorCode, WhereFilterOpList, OrderDirectionList, FieldType } from './constant';\nimport { Util } from './util';\nimport { ERRORS } from './const/code';\nimport { E } from './utils/utils';\nimport { getType } from './utils/type';\nimport { SYMBOL_GEO_POINT } from './helper/symbol';\nvar validOptionsKeys = ['limit', 'offset', 'projection', 'order', 'multiple', 'timeout', 'raw'];\nvar Validate = (function () {\n function Validate() {\n }\n Validate.isGeopoint = function (point, degree) {\n if (Util.whichType(degree) !== FieldType.Number) {\n throw new Error('Geo Point must be number type');\n }\n var degreeAbs = Math.abs(degree);\n if (point === 'latitude' && degreeAbs > 90) {\n throw new Error('latitude should be a number ranges from -90 to 90');\n }\n else if (point === 'longitude' && degreeAbs > 180) {\n throw new Error('longitude should be a number ranges from -180 to 180');\n }\n return true;\n };\n Validate.isInteger = function (param, num) {\n if (!Number.isInteger(num)) {\n throw new Error(param + ErrorCode.IntergerError);\n }\n return true;\n };\n Validate.mustBeBoolean = function (param, bool) {\n if (typeof bool !== 'boolean') {\n throw new Error(param + ErrorCode.BooleanError);\n }\n return true;\n };\n Validate.isProjection = function (param, value) {\n if (getType(value) !== 'object') {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: \"\".concat(param, \" projection must be an object\") }));\n }\n for (var key in value) {\n var subValue = value[key];\n if (getType(subValue) === 'number') {\n if (subValue !== 0 && subValue !== 1) {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: \"if the value in projection is of number, it must be 0 or 1\" }));\n }\n }\n else if (getType(subValue) === 'object') {\n }\n else {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: 'invalid projection' }));\n }\n }\n return true;\n };\n Validate.isOrder = function (param, value) {\n if (getType(value) !== 'object') {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: \"\".concat(param, \" order must be an object\") }));\n }\n for (var key in value) {\n var subValue = value[key];\n if (subValue !== 1 && subValue !== -1) {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: \"order value must be 1 or -1\" }));\n }\n }\n return true;\n };\n Validate.isFieldOrder = function (direction) {\n if (OrderDirectionList.indexOf(direction) === -1) {\n throw new Error(ErrorCode.DirectionError);\n }\n return true;\n };\n Validate.isFieldPath = function (path) {\n if (!/^[a-zA-Z0-9-_\\.]/.test(path)) {\n throw new Error();\n }\n return true;\n };\n Validate.isOperator = function (op) {\n if (WhereFilterOpList.indexOf(op) === -1) {\n throw new Error(ErrorCode.OpStrError);\n }\n return true;\n };\n Validate.isCollName = function (name) {\n if (!/^[a-zA-Z0-9]([a-zA-Z0-9-_]){1,32}$/.test(name)) {\n throw new Error(ErrorCode.CollNameError);\n }\n return true;\n };\n Validate.isDocID = function (docId) {\n if (!/^([a-fA-F0-9]){24}$/.test(docId)) {\n throw new Error(ErrorCode.DocIDError);\n }\n return true;\n };\n Validate.isValidOptions = function (options) {\n if (options === void 0) { options = {}; }\n if (getType(options) !== 'object') {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: \"options must be an object\" }));\n }\n var keys = Object.keys(options);\n for (var index in keys) {\n if (validOptionsKeys.indexOf(keys[index]) < 0) {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: \"\".concat(keys[index], \" is invalid options key\") }));\n }\n }\n var _a = options, limit = _a.limit, offset = _a.offset, projection = _a.projection, order = _a.order;\n var multiple = options.multiple;\n if (limit !== undefined) {\n Validate.isInteger('limit', limit);\n }\n if (offset !== undefined) {\n Validate.isInteger('offset', offset);\n }\n if (projection !== undefined) {\n Validate.isProjection('projection', projection);\n }\n if (order !== undefined) {\n Validate.isOrder('order', order);\n }\n if (multiple !== undefined) {\n Validate.mustBeBoolean('multiple', multiple);\n }\n if (options.timeout !== undefined) {\n Validate.isInteger('timeout', options.timeout);\n }\n return true;\n };\n Validate.isValidAggregation = function (stage) {\n if (Object.keys(stage).length !== 1) {\n throw E(__assign(__assign({}, ERRORS.INVALID_PARAM), { message: \"aggregation stage must have one key\" }));\n }\n return true;\n };\n Validate.isCentersPhere = function (param) {\n if (Array.isArray(param) && param.length === 2) {\n if (getType(param[0]) === 'object' &&\n param[0]._internalType === SYMBOL_GEO_POINT &&\n typeof param[1] === 'number') {\n return true;\n }\n if (Array.isArray(param[0]) && param[0].length === 2) {\n var longitude = param[0][0];\n var latitude = param[0][1];\n Validate.isGeopoint('longitude', longitude);\n Validate.isGeopoint('latitude', latitude);\n if (typeof param[1] === 'number') {\n return true;\n }\n }\n }\n throw new Error(\"\".concat(ErrorCode.CentersPhereError));\n };\n return Validate;\n}());\nexport { Validate };\n","import { SYMBOL_UNSET_FIELD_NAME, SYMBOL_UPDATE_COMMAND } from '../helper/symbol';\nexport var UPDATE_COMMANDS_LITERAL;\n(function (UPDATE_COMMANDS_LITERAL) {\n UPDATE_COMMANDS_LITERAL[\"SET\"] = \"set\";\n UPDATE_COMMANDS_LITERAL[\"REMOVE\"] = \"remove\";\n UPDATE_COMMANDS_LITERAL[\"INC\"] = \"inc\";\n UPDATE_COMMANDS_LITERAL[\"MUL\"] = \"mul\";\n UPDATE_COMMANDS_LITERAL[\"PUSH\"] = \"push\";\n UPDATE_COMMANDS_LITERAL[\"PULL\"] = \"pull\";\n UPDATE_COMMANDS_LITERAL[\"PULL_ALL\"] = \"pullAll\";\n UPDATE_COMMANDS_LITERAL[\"POP\"] = \"pop\";\n UPDATE_COMMANDS_LITERAL[\"SHIFT\"] = \"shift\";\n UPDATE_COMMANDS_LITERAL[\"UNSHIFT\"] = \"unshift\";\n UPDATE_COMMANDS_LITERAL[\"ADD_TO_SET\"] = \"addToSet\";\n UPDATE_COMMANDS_LITERAL[\"BIT\"] = \"bit\";\n UPDATE_COMMANDS_LITERAL[\"RENAME\"] = \"rename\";\n UPDATE_COMMANDS_LITERAL[\"MAX\"] = \"max\";\n UPDATE_COMMANDS_LITERAL[\"MIN\"] = \"min\";\n})(UPDATE_COMMANDS_LITERAL || (UPDATE_COMMANDS_LITERAL = {}));\nvar UpdateCommand = (function () {\n function UpdateCommand(operator, operands, fieldName) {\n this._internalType = SYMBOL_UPDATE_COMMAND;\n Object.defineProperties(this, {\n _internalType: {\n enumerable: false,\n configurable: false,\n },\n });\n this.operator = operator;\n this.operands = operands;\n this.fieldName = fieldName || SYMBOL_UNSET_FIELD_NAME;\n }\n UpdateCommand.prototype._setFieldName = function (fieldName) {\n var command = new UpdateCommand(this.operator, this.operands, fieldName);\n return command;\n };\n return UpdateCommand;\n}());\nexport { UpdateCommand };\nexport function isUpdateCommand(object) {\n return object && (object instanceof UpdateCommand) && (object._internalType === SYMBOL_UPDATE_COMMAND);\n}\nexport function isKnownUpdateCommand(object) {\n return isUpdateCommand(object) && (object.operator.toUpperCase() in UPDATE_COMMANDS_LITERAL);\n}\nexport default UpdateCommand;\n","import { Validate } from '../validate';\nimport { SYMBOL_GEO_POINT } from '../helper/symbol';\nimport { isArray } from '../utils/type';\nvar Point = (function () {\n function Point(longitude, latitude) {\n Validate.isGeopoint('longitude', longitude);\n Validate.isGeopoint('latitude', latitude);\n this.longitude = longitude;\n this.latitude = latitude;\n }\n Point.prototype.parse = function (key) {\n var _a;\n return _a = {},\n _a[key] = {\n type: 'Point',\n coordinates: [this.longitude, this.latitude]\n },\n _a;\n };\n Point.prototype.toJSON = function () {\n return {\n type: 'Point',\n coordinates: [\n this.longitude,\n this.latitude,\n ],\n };\n };\n Point.prototype.toReadableString = function () {\n return \"[\".concat(this.longitude, \",\").concat(this.latitude, \"]\");\n };\n Point.validate = function (point) {\n return point.type === 'Point' &&\n isArray(point.coordinates) &&\n Validate.isGeopoint('longitude', point.coordinates[0]) &&\n Validate.isGeopoint('latitude', point.coordinates[1]);\n };\n Object.defineProperty(Point.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_GEO_POINT;\n },\n enumerable: false,\n configurable: true\n });\n return Point;\n}());\nexport { Point };\n","import { SYMBOL_UNSET_FIELD_NAME, SYMBOL_LOGIC_COMMAND } from '../helper/symbol';\nimport { isQueryCommand } from './query';\nexport var AND = 'and';\nexport var OR = 'or';\nexport var NOT = 'not';\nexport var NOR = 'nor';\nexport var LOGIC_COMMANDS_LITERAL;\n(function (LOGIC_COMMANDS_LITERAL) {\n LOGIC_COMMANDS_LITERAL[\"AND\"] = \"and\";\n LOGIC_COMMANDS_LITERAL[\"OR\"] = \"or\";\n LOGIC_COMMANDS_LITERAL[\"NOT\"] = \"not\";\n LOGIC_COMMANDS_LITERAL[\"NOR\"] = \"nor\";\n})(LOGIC_COMMANDS_LITERAL || (LOGIC_COMMANDS_LITERAL = {}));\nvar LogicCommand = (function () {\n function LogicCommand(operator, operands, fieldName) {\n this._internalType = SYMBOL_LOGIC_COMMAND;\n Object.defineProperties(this, {\n _internalType: {\n enumerable: false,\n configurable: false,\n },\n });\n this.operator = operator;\n this.operands = operands;\n this.fieldName = fieldName || SYMBOL_UNSET_FIELD_NAME;\n if (this.fieldName !== SYMBOL_UNSET_FIELD_NAME) {\n if (Array.isArray(operands)) {\n operands = operands.slice();\n this.operands = operands;\n for (var i = 0, len = operands.length; i < len; i++) {\n var query = operands[i];\n if (isLogicCommand(query) || isQueryCommand(query)) {\n operands[i] = query._setFieldName(this.fieldName);\n }\n }\n }\n else {\n var query = operands;\n if (isLogicCommand(query) || isQueryCommand(query)) {\n operands = query._setFieldName(this.fieldName);\n }\n }\n }\n }\n LogicCommand.prototype._setFieldName = function (fieldName) {\n var operands = this.operands.map(function (operand) {\n if (operand instanceof LogicCommand) {\n return operand._setFieldName(fieldName);\n }\n else {\n return operand;\n }\n });\n var command = new LogicCommand(this.operator, operands, fieldName);\n return command;\n };\n LogicCommand.prototype.and = function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = Array.isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n expressions.unshift(this);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.AND, expressions, this.fieldName);\n };\n LogicCommand.prototype.or = function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = Array.isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n expressions.unshift(this);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.OR, expressions, this.fieldName);\n };\n return LogicCommand;\n}());\nexport { LogicCommand };\nexport function isLogicCommand(object) {\n return object && (object instanceof LogicCommand) && (object._internalType === SYMBOL_LOGIC_COMMAND);\n}\nexport function isKnownLogicCommand(object) {\n return isLogicCommand && (object.operator.toUpperCase() in LOGIC_COMMANDS_LITERAL);\n}\nexport default LogicCommand;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { LogicCommand } from './logic';\nimport { SYMBOL_QUERY_COMMAND } from '../helper/symbol';\nimport { Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon } from '../geo/index';\nimport { isNumber } from '../utils/type';\nimport { Validate } from '../validate';\nexport var EQ = 'eq';\nexport var NEQ = 'neq';\nexport var GT = 'gt';\nexport var GTE = 'gte';\nexport var LT = 'lt';\nexport var LTE = 'lte';\nexport var IN = 'in';\nexport var NIN = 'nin';\nexport var ALL = 'all';\nexport var ELEM_MATCH = 'elemMatch';\nexport var EXISTS = 'exists';\nexport var SIZE = 'size';\nexport var MOD = 'mod';\nexport var QUERY_COMMANDS_LITERAL;\n(function (QUERY_COMMANDS_LITERAL) {\n QUERY_COMMANDS_LITERAL[\"EQ\"] = \"eq\";\n QUERY_COMMANDS_LITERAL[\"NEQ\"] = \"neq\";\n QUERY_COMMANDS_LITERAL[\"GT\"] = \"gt\";\n QUERY_COMMANDS_LITERAL[\"GTE\"] = \"gte\";\n QUERY_COMMANDS_LITERAL[\"LT\"] = \"lt\";\n QUERY_COMMANDS_LITERAL[\"LTE\"] = \"lte\";\n QUERY_COMMANDS_LITERAL[\"IN\"] = \"in\";\n QUERY_COMMANDS_LITERAL[\"NIN\"] = \"nin\";\n QUERY_COMMANDS_LITERAL[\"ALL\"] = \"all\";\n QUERY_COMMANDS_LITERAL[\"ELEM_MATCH\"] = \"elemMatch\";\n QUERY_COMMANDS_LITERAL[\"EXISTS\"] = \"exists\";\n QUERY_COMMANDS_LITERAL[\"SIZE\"] = \"size\";\n QUERY_COMMANDS_LITERAL[\"MOD\"] = \"mod\";\n QUERY_COMMANDS_LITERAL[\"GEO_NEAR\"] = \"geoNear\";\n QUERY_COMMANDS_LITERAL[\"GEO_WITHIN\"] = \"geoWithin\";\n QUERY_COMMANDS_LITERAL[\"GEO_INTERSECTS\"] = \"geoIntersects\";\n})(QUERY_COMMANDS_LITERAL || (QUERY_COMMANDS_LITERAL = {}));\nvar QueryCommand = (function (_super) {\n __extends(QueryCommand, _super);\n function QueryCommand(operator, operands, fieldName) {\n var _this = _super.call(this, operator, operands, fieldName) || this;\n _this.operator = operator;\n _this._internalType = SYMBOL_QUERY_COMMAND;\n return _this;\n }\n QueryCommand.prototype.toJSON = function () {\n var _a, _b, _c;\n switch (this.operator) {\n case QUERY_COMMANDS_LITERAL.IN:\n case QUERY_COMMANDS_LITERAL.NIN:\n return _a = {},\n _a['$' + this.operator] = this.operands,\n _a;\n case QUERY_COMMANDS_LITERAL.NEQ:\n return _b = {},\n _b['$ne'] = this.operands[0],\n _b;\n default:\n return _c = {},\n _c['$' + this.operator] = this.operands[0],\n _c;\n }\n };\n QueryCommand.prototype._setFieldName = function (fieldName) {\n var command = new QueryCommand(this.operator, this.operands, fieldName);\n return command;\n };\n QueryCommand.prototype.eq = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.EQ, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.neq = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.NEQ, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.gt = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.GT, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.gte = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.GTE, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.lt = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.LT, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.lte = function (val) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.LTE, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.in = function (list) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.IN, list, this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.nin = function (list) {\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.NIN, list, this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.geoNear = function (val) {\n if (!(val.geometry instanceof Point)) {\n throw new TypeError(\"\\\"geometry\\\" must be of type Point. Received type \".concat(typeof val.geometry));\n }\n if (val.maxDistance !== undefined && !isNumber(val.maxDistance)) {\n throw new TypeError(\"\\\"maxDistance\\\" must be of type Number. Received type \".concat(typeof val.maxDistance));\n }\n if (val.minDistance !== undefined && !isNumber(val.minDistance)) {\n throw new TypeError(\"\\\"minDistance\\\" must be of type Number. Received type \".concat(typeof val.minDistance));\n }\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_NEAR, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.geoWithin = function (val) {\n if (!(val.geometry instanceof MultiPolygon) &&\n !(val.geometry instanceof Polygon) &&\n !Validate.isCentersPhere(val.centerSphere)) {\n throw new TypeError(\"\\\"geometry\\\" must be of type Polygon or MultiPolygon. Received type \".concat(typeof val.geometry));\n }\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_WITHIN, [val], this.fieldName);\n return this.and(command);\n };\n QueryCommand.prototype.geoIntersects = function (val) {\n if (!(val.geometry instanceof Point) &&\n !(val.geometry instanceof LineString) &&\n !(val.geometry instanceof Polygon) &&\n !(val.geometry instanceof MultiPoint) &&\n !(val.geometry instanceof MultiLineString) &&\n !(val.geometry instanceof MultiPolygon)) {\n throw new TypeError(\"\\\"geometry\\\" must be of type Point, LineString, Polygon, MultiPoint, MultiLineString or MultiPolygon. Received type \".concat(typeof val.geometry));\n }\n var command = new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_INTERSECTS, [val], this.fieldName);\n return this.and(command);\n };\n return QueryCommand;\n}(LogicCommand));\nexport { QueryCommand };\nexport function isQueryCommand(object) {\n return object && object instanceof QueryCommand && object._internalType === SYMBOL_QUERY_COMMAND;\n}\nexport function isKnownQueryCommand(object) {\n return isQueryCommand(object) && object.operator.toUpperCase() in QUERY_COMMANDS_LITERAL;\n}\nexport function isComparisonCommand(object) {\n return isQueryCommand(object);\n}\nexport default QueryCommand;\n","import { QUERY_COMMANDS_LITERAL } from './commands/query';\nimport { LOGIC_COMMANDS_LITERAL } from './commands/logic';\nimport { UPDATE_COMMANDS_LITERAL } from './commands/update';\nexport var OperatorMap = {};\nfor (var key in QUERY_COMMANDS_LITERAL) {\n OperatorMap[key] = '$' + key;\n}\nfor (var key in LOGIC_COMMANDS_LITERAL) {\n OperatorMap[key] = '$' + key;\n}\nfor (var key in UPDATE_COMMANDS_LITERAL) {\n OperatorMap[key] = '$' + key;\n}\nOperatorMap[QUERY_COMMANDS_LITERAL.NEQ] = '$ne';\nOperatorMap[UPDATE_COMMANDS_LITERAL.REMOVE] = '$unset';\nOperatorMap[UPDATE_COMMANDS_LITERAL.SHIFT] = '$pop';\nOperatorMap[UPDATE_COMMANDS_LITERAL.UNSHIFT] = '$push';\nexport function operatorToString(operator) {\n return OperatorMap[operator] || '$' + operator;\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { SYMBOL_GEO_POINT, SYMBOL_SERVER_DATE, SYMBOL_OBJECTID, SYMBOL_REGEXP } from '../helper/symbol';\nimport { getType, isObject, isArray, isDate, isNumber, isInternalObject, isRegExp } from '../utils/type';\nimport { Point } from '../geo/index';\nimport { ServerDate } from '../serverDate/index';\nexport function serialize(val) {\n return serializeHelper(val, [val]);\n}\nfunction serializeHelper(val, visited) {\n if (isInternalObject(val)) {\n switch (val._internalType) {\n case SYMBOL_GEO_POINT: {\n return val.toJSON();\n }\n case SYMBOL_SERVER_DATE: {\n return val.parse();\n }\n case SYMBOL_REGEXP: {\n return val.parse();\n }\n case SYMBOL_OBJECTID: {\n return val.parse();\n }\n default: {\n return val.toJSON ? val.toJSON() : val;\n }\n }\n }\n else if (isDate(val)) {\n return val;\n }\n else if (isRegExp(val)) {\n return {\n $regularExpression: {\n pattern: val.source,\n options: val.flags\n }\n };\n }\n else if (isArray(val)) {\n return val.map(function (item) {\n if (visited.indexOf(item) > -1) {\n throw new Error('Cannot convert circular structure to JSON');\n }\n return serializeHelper(item, __spreadArray(__spreadArray([], __read(visited), false), [item], false));\n });\n }\n else if (isObject(val)) {\n var rawRet = __assign({}, val);\n var finalRet = {};\n for (var key in rawRet) {\n if (visited.indexOf(rawRet[key]) > -1) {\n throw new Error('Cannot convert circular structure to JSON');\n }\n if (rawRet[key] !== undefined) {\n finalRet[key] = serializeHelper(rawRet[key], __spreadArray(__spreadArray([], __read(visited), false), [rawRet[key]], false));\n }\n }\n return finalRet;\n }\n else {\n return val;\n }\n}\nexport function deserialize(object) {\n var ret = __assign({}, object);\n for (var key in ret) {\n switch (key) {\n case '$date': {\n switch (getType(ret[key])) {\n case 'number': {\n return new Date(ret[key]);\n }\n case 'object': {\n return new ServerDate(ret[key]);\n }\n }\n break;\n }\n case 'type': {\n switch (ret.type) {\n case 'Point': {\n if (isArray(ret.coordinates) &&\n isNumber(ret.coordinates[0]) &&\n isNumber(ret.coordinates[1])) {\n return new Point(ret.coordinates[0], ret.coordinates[1]);\n }\n break;\n }\n }\n break;\n }\n }\n }\n return object;\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { getType, isObject, isArray, isDate, isRegExp, isInternalObject } from '../utils/type';\nimport { serialize as serializeInternalDataType, deserialize as deserializeInternalDataType } from './datatype';\nfunction flatten(query, shouldPreserverObject, parents, visited) {\n var cloned = __assign({}, query);\n for (var key in query) {\n if (/^\\$/.test(key))\n continue;\n var value = query[key];\n if (value === undefined) {\n delete cloned[key];\n continue;\n }\n if (!value)\n continue;\n if (isObject(value) && !shouldPreserverObject(value)) {\n if (visited.indexOf(value) > -1) {\n throw new Error('Cannot convert circular structure to JSON');\n }\n var newParents = __spreadArray(__spreadArray([], __read(parents), false), [key], false);\n var newVisited = __spreadArray(__spreadArray([], __read(visited), false), [value], false);\n var flattenedChild = flatten(value, shouldPreserverObject, newParents, newVisited);\n cloned[key] = flattenedChild;\n var hasKeyNotCombined = false;\n for (var childKey in flattenedChild) {\n if (!/^\\$/.test(childKey)) {\n cloned[\"\".concat(key, \".\").concat(childKey)] = flattenedChild[childKey];\n delete cloned[key][childKey];\n }\n else {\n hasKeyNotCombined = true;\n }\n }\n if (!hasKeyNotCombined) {\n delete cloned[key];\n }\n }\n }\n return cloned;\n}\nexport function flattenQueryObject(query) {\n return flatten(query, isConversionRequired, [], [query]);\n}\nexport function flattenObject(object) {\n return flatten(object, function (_) { return false; }, [], [object]);\n}\nexport function mergeConditionAfterEncode(query, condition, key) {\n if (!condition[key]) {\n delete query[key];\n }\n for (var conditionKey in condition) {\n if (query[conditionKey]) {\n if (isArray(query[conditionKey])) {\n query[conditionKey].push(condition[conditionKey]);\n }\n else if (isObject(query[conditionKey])) {\n if (isObject(condition[conditionKey])) {\n Object.assign(query[conditionKey], condition[conditionKey]);\n }\n else {\n console.warn(\"unmergable condition, query is object but condition is \".concat(getType(condition), \", can only overwrite\"), condition, key);\n query[conditionKey] = condition[conditionKey];\n }\n }\n else {\n console.warn(\"to-merge query is of type \".concat(getType(query), \", can only overwrite\"), query, condition, key);\n query[conditionKey] = condition[conditionKey];\n }\n }\n else {\n query[conditionKey] = condition[conditionKey];\n }\n }\n}\nexport function isConversionRequired(val) {\n return isInternalObject(val) || isDate(val) || isRegExp(val);\n}\nexport function encodeInternalDataType(val) {\n return serializeInternalDataType(val);\n}\nexport function decodeInternalDataType(object) {\n return deserializeInternalDataType(object);\n}\n","import { UpdateCommand, isUpdateCommand, UPDATE_COMMANDS_LITERAL } from '../commands/update';\nimport { SYMBOL_UNSET_FIELD_NAME } from '../helper/symbol';\nimport { getType, isArray } from '../utils/type';\nimport { operatorToString } from '../operator-map';\nimport { flattenQueryObject, encodeInternalDataType, mergeConditionAfterEncode } from './common';\nimport { stringifyByEJSON } from '../utils/utils';\nvar UpdateSerializer = (function () {\n function UpdateSerializer() {\n }\n UpdateSerializer.encode = function (query) {\n var stringifier = new UpdateSerializer();\n return stringifier.encodeUpdate(query);\n };\n UpdateSerializer.encodeEJSON = function (query, raw) {\n var stringifier = new UpdateSerializer();\n return stringifyByEJSON(raw ? query : stringifier.encodeUpdate(query));\n };\n UpdateSerializer.prototype.encodeUpdate = function (query) {\n if (isUpdateCommand(query)) {\n return this.encodeUpdateCommand(query);\n }\n else if (getType(query) === 'object') {\n return this.encodeUpdateObject(query);\n }\n else {\n return query;\n }\n };\n UpdateSerializer.prototype.encodeUpdateCommand = function (query) {\n if (query.fieldName === SYMBOL_UNSET_FIELD_NAME) {\n throw new Error('Cannot encode a comparison command with unset field name');\n }\n switch (query.operator) {\n case UPDATE_COMMANDS_LITERAL.PUSH:\n case UPDATE_COMMANDS_LITERAL.PULL:\n case UPDATE_COMMANDS_LITERAL.PULL_ALL:\n case UPDATE_COMMANDS_LITERAL.POP:\n case UPDATE_COMMANDS_LITERAL.SHIFT:\n case UPDATE_COMMANDS_LITERAL.UNSHIFT:\n case UPDATE_COMMANDS_LITERAL.ADD_TO_SET: {\n return this.encodeArrayUpdateCommand(query);\n }\n default: {\n return this.encodeFieldUpdateCommand(query);\n }\n }\n };\n UpdateSerializer.prototype.encodeFieldUpdateCommand = function (query) {\n var _a, _b, _c, _d;\n var $op = operatorToString(query.operator);\n switch (query.operator) {\n case UPDATE_COMMANDS_LITERAL.REMOVE: {\n return _a = {},\n _a[$op] = (_b = {},\n _b[query.fieldName] = '',\n _b),\n _a;\n }\n default: {\n return _c = {},\n _c[$op] = (_d = {},\n _d[query.fieldName] = query.operands[0],\n _d),\n _c;\n }\n }\n };\n UpdateSerializer.prototype.encodeArrayUpdateCommand = function (query) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n var $op = operatorToString(query.operator);\n switch (query.operator) {\n case UPDATE_COMMANDS_LITERAL.PUSH: {\n var modifiers = void 0;\n if (isArray(query.operands)) {\n modifiers = {\n $each: query.operands.map(encodeInternalDataType)\n };\n }\n else {\n modifiers = query.operands;\n }\n return _a = {},\n _a[$op] = (_b = {},\n _b[query.fieldName] = modifiers,\n _b),\n _a;\n }\n case UPDATE_COMMANDS_LITERAL.UNSHIFT: {\n var modifiers = {\n $each: query.operands.map(encodeInternalDataType),\n $position: 0\n };\n return _c = {},\n _c[$op] = (_d = {},\n _d[query.fieldName] = modifiers,\n _d),\n _c;\n }\n case UPDATE_COMMANDS_LITERAL.POP: {\n return _e = {},\n _e[$op] = (_f = {},\n _f[query.fieldName] = 1,\n _f),\n _e;\n }\n case UPDATE_COMMANDS_LITERAL.SHIFT: {\n return _g = {},\n _g[$op] = (_h = {},\n _h[query.fieldName] = -1,\n _h),\n _g;\n }\n default: {\n return _j = {},\n _j[$op] = (_k = {},\n _k[query.fieldName] = encodeInternalDataType(query.operands),\n _k),\n _j;\n }\n }\n };\n UpdateSerializer.prototype.encodeUpdateObject = function (query) {\n var flattened = flattenQueryObject(query);\n for (var key in flattened) {\n if (/^\\$/.test(key))\n continue;\n var val = flattened[key];\n if (isUpdateCommand(val)) {\n flattened[key] = val._setFieldName(key);\n var condition = this.encodeUpdateCommand(flattened[key]);\n mergeConditionAfterEncode(flattened, condition, key);\n }\n else {\n flattened[key] = val = encodeInternalDataType(val);\n var $setCommand = new UpdateCommand(UPDATE_COMMANDS_LITERAL.SET, [val], key);\n var condition = this.encodeUpdateCommand($setCommand);\n mergeConditionAfterEncode(flattened, condition, key);\n }\n }\n return flattened;\n };\n return UpdateSerializer;\n}());\nexport { UpdateSerializer };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Db } from './index';\nimport { Util } from './util';\nimport { UpdateSerializer } from './serializer/update';\nimport { serialize } from './serializer/datatype';\nimport { UpdateCommand } from './commands/update';\nimport { QueryType } from './constant';\nimport { getWsInstance, getReqOpts, stringifyByEJSON, processReturn, withCallback } from './utils/utils';\nimport { ERRORS } from './const/code';\nimport { EJSON } from 'bson';\nvar DocumentReference = (function () {\n function DocumentReference(db, coll, apiOptions, docID, transactionId) {\n var _this = this;\n this.watch = function (options) {\n var ws = getWsInstance(_this._db);\n return ws.watch(__assign(__assign({}, options), { envId: _this._db.config.env, collectionName: _this._coll, query: JSON.stringify({\n _id: _this.id\n }) }));\n };\n this._db = db;\n this._coll = coll;\n this.id = docID;\n this._transactionId = transactionId;\n this.request = Db.createRequest(this._db.config);\n this._apiOptions = apiOptions;\n }\n DocumentReference.prototype.create = function (data, callback) {\n return withCallback(this._create(data), callback);\n };\n DocumentReference.prototype._create = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var isBatch, params, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isBatch = Array.isArray(data);\n if (!isBatch && this.id) {\n data['_id'] = this.id;\n }\n params = {\n collectionName: this._coll,\n data: isBatch\n ? data.map(function (item) { return stringifyByEJSON(serialize(item)); })\n : [stringifyByEJSON(serialize(data))],\n transactionId: this._transactionId\n };\n return [4, this.request.send('database.insertDocument', params, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n if (this._transactionId) {\n return [2, {\n inserted: 1,\n ok: 1,\n id: res.data.insertedIds[0],\n requestId: res.requestId\n }];\n }\n if (isBatch) {\n return [2, {\n ids: (res.data && res.data.insertedIds) || [],\n requestId: res.requestId\n }];\n }\n return [2, {\n id: res.data.insertedIds[0],\n requestId: res.requestId\n }];\n }\n });\n });\n };\n DocumentReference.prototype.set = function (data, callback) {\n return withCallback(this._set(data), callback);\n };\n DocumentReference.prototype._set = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var hasOperator, checkMixed, param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.id) {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: 'docId不能为空' }))];\n }\n if (!data || typeof data !== 'object') {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '参数必需是非空对象' }))];\n }\n if (data.hasOwnProperty('_id')) {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '不能更新_id的值' }))];\n }\n hasOperator = false;\n checkMixed = function (objs) {\n if (typeof objs === 'object') {\n for (var key in objs) {\n if (objs[key] instanceof UpdateCommand) {\n hasOperator = true;\n }\n else if (typeof objs[key] === 'object') {\n checkMixed(objs[key]);\n }\n }\n }\n };\n checkMixed(data);\n if (hasOperator) {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.DATABASE_REQUEST_FAILED), { message: 'update operator complicit' }))];\n }\n param = {\n collectionName: this._coll,\n queryType: QueryType.DOC,\n data: stringifyByEJSON(serialize(data)),\n transactionId: this._transactionId,\n multi: false,\n merge: false,\n upsert: true\n };\n if (this.id) {\n param['query'] = stringifyByEJSON({ _id: this.id });\n }\n return [4, this.request.send('database.modifyDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n if (this._transactionId) {\n return [2, {\n updated: res.data.updated,\n upserted: [{ _id: res.data.upsert_id }],\n requestId: res.requestId\n }];\n }\n return [2, {\n updated: res.data.updated,\n upsertedId: res.data.upsert_id,\n requestId: res.requestId\n }];\n }\n });\n });\n };\n DocumentReference.prototype.update = function (data, callback) {\n return withCallback(this._update(data), callback);\n };\n DocumentReference.prototype._update = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var query, param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!data || typeof data !== 'object') {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '参数必需是非空对象' }))];\n }\n if (data.hasOwnProperty('_id')) {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '不能更新_id的值' }))];\n }\n query = stringifyByEJSON({ _id: this.id });\n param = {\n collectionName: this._coll,\n transactionId: this._transactionId,\n data: UpdateSerializer.encodeEJSON(data, this._apiOptions.raw || false),\n query: query,\n queryType: QueryType.DOC,\n multi: false,\n merge: true,\n upsert: false\n };\n return [4, this.request.send('database.modifyDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n return [2, {\n updated: res.data.updated,\n requestId: res.requestId\n }];\n }\n });\n });\n };\n DocumentReference.prototype.delete = function (callback) {\n return this.remove(callback);\n };\n DocumentReference.prototype.remove = function (callback) {\n return withCallback(this._remove(), callback);\n };\n DocumentReference.prototype._remove = function () {\n return __awaiter(this, void 0, void 0, function () {\n var query, param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n query = stringifyByEJSON({ _id: this.id });\n param = {\n collectionName: this._coll,\n transactionId: this._transactionId,\n query: query,\n queryType: QueryType.DOC,\n multi: false\n };\n return [4, this.request.send('database.removeDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n return [2, {\n deleted: res.data.deleted,\n requestId: res.requestId\n }];\n }\n });\n });\n };\n DocumentReference.prototype.get = function (callback) {\n return withCallback(this._get(), callback);\n };\n DocumentReference.prototype._get = function () {\n return __awaiter(this, void 0, void 0, function () {\n var query, projection, param, res, list, documents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n query = stringifyByEJSON({ _id: this.id });\n projection = this._apiOptions.projection;\n param = {\n collectionName: this._coll,\n query: query,\n transactionId: this._transactionId,\n queryType: QueryType.DOC,\n multi: false\n };\n if (projection) {\n param.projection = stringifyByEJSON(projection);\n }\n return [4, this.request.send('database.getDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n list = res.data.list.map(function (item) { return EJSON.parse(item); });\n documents = Util.formatResDocumentData(list);\n if (this._transactionId) {\n return [2, {\n data: documents[0] || null,\n requestId: res.requestId\n }];\n }\n return [2, {\n data: documents,\n requestId: res.requestId\n }];\n }\n });\n });\n };\n DocumentReference.prototype.field = function (projection) {\n var transformProjection = {};\n for (var k in projection) {\n if (typeof projection[k] === 'boolean') {\n transformProjection[k] = projection[k] === true ? 1 : 0;\n }\n if (typeof projection[k] === 'number') {\n transformProjection[k] = projection[k] > 0 ? 1 : 0;\n }\n if (typeof projection[k] === 'object') {\n transformProjection[k] = projection[k];\n }\n }\n var newApiOption = __assign({}, this._apiOptions);\n newApiOption.projection = transformProjection;\n return new DocumentReference(this._db, this._coll, newApiOption, this.id, this._transactionId);\n };\n return DocumentReference;\n}());\nexport { DocumentReference };\n","import { isQueryCommand, isComparisonCommand, QUERY_COMMANDS_LITERAL } from '../commands/query';\nimport { isLogicCommand, LOGIC_COMMANDS_LITERAL } from '../commands/logic';\nimport { SYMBOL_UNSET_FIELD_NAME, SYMBOL_GEO_POINT } from '../helper/symbol';\nimport { getType, isObject, isArray, isRegExp, isDate } from '../utils/type';\nimport { operatorToString } from '../operator-map';\nimport { flattenQueryObject, isConversionRequired, encodeInternalDataType } from './common';\nimport { stringifyByEJSON } from '../utils/utils';\nimport { Validate } from '../validate';\nvar QuerySerializer = (function () {\n function QuerySerializer() {\n }\n QuerySerializer.encode = function (query) {\n var encoder = new QueryEncoder();\n return encoder.encodeQuery(query);\n };\n QuerySerializer.encodeEJSON = function (query, raw) {\n var encoder = new QueryEncoder();\n return stringifyByEJSON(raw ? query : encoder.encodeQuery(query));\n };\n return QuerySerializer;\n}());\nexport { QuerySerializer };\nvar QueryEncoder = (function () {\n function QueryEncoder() {\n }\n QueryEncoder.prototype.encodeQuery = function (query, key) {\n var _a, _b, _c;\n if (isConversionRequired(query)) {\n if (isLogicCommand(query)) {\n return this.encodeLogicCommand(query);\n }\n else if (isQueryCommand(query)) {\n return this.encodeQueryCommand(query);\n }\n else if (isRegExp(query)) {\n return _a = {}, _a[key] = this.encodeRegExp(query), _a;\n }\n else if (isDate(query)) {\n return _b = {}, _b[key] = encodeInternalDataType(query), _b;\n }\n else {\n return _c = {}, _c[key] = this.encodeQueryObject(query), _c;\n }\n }\n else {\n if (isObject(query)) {\n return this.encodeQueryObject(query);\n }\n else {\n return query;\n }\n }\n };\n QueryEncoder.prototype.encodeRegExp = function (query) {\n return {\n $regularExpression: {\n pattern: query.source,\n options: query.flags\n }\n };\n };\n QueryEncoder.prototype.encodeLogicCommand = function (query) {\n var _a, _b, _c, _d, _e, _f, _g;\n var _this = this;\n switch (query.operator) {\n case LOGIC_COMMANDS_LITERAL.NOR:\n case LOGIC_COMMANDS_LITERAL.AND:\n case LOGIC_COMMANDS_LITERAL.OR: {\n var $op = operatorToString(query.operator);\n var subqueries = query.operands.map(function (oprand) { return _this.encodeQuery(oprand, query.fieldName); });\n return _a = {},\n _a[$op] = subqueries,\n _a;\n }\n case LOGIC_COMMANDS_LITERAL.NOT: {\n var $op = operatorToString(query.operator);\n var operatorExpression = query.operands[0];\n if (isRegExp(operatorExpression)) {\n return _b = {},\n _b[query.fieldName] = (_c = {},\n _c[$op] = this.encodeRegExp(operatorExpression),\n _c),\n _b;\n }\n else {\n var subqueries = this.encodeQuery(operatorExpression)[query.fieldName];\n return _d = {},\n _d[query.fieldName] = (_e = {},\n _e[$op] = subqueries,\n _e),\n _d;\n }\n }\n default: {\n var $op = operatorToString(query.operator);\n if (query.operands.length === 1) {\n var subquery = this.encodeQuery(query.operands[0]);\n return _f = {},\n _f[$op] = subquery,\n _f;\n }\n else {\n var subqueries = query.operands.map(this.encodeQuery.bind(this));\n return _g = {},\n _g[$op] = subqueries,\n _g;\n }\n }\n }\n };\n QueryEncoder.prototype.encodeQueryCommand = function (query) {\n if (isComparisonCommand(query)) {\n return this.encodeComparisonCommand(query);\n }\n else {\n return this.encodeComparisonCommand(query);\n }\n };\n QueryEncoder.prototype.encodeComparisonCommand = function (query) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n if (query.fieldName === SYMBOL_UNSET_FIELD_NAME) {\n throw new Error('Cannot encode a comparison command with unset field name');\n }\n var $op = operatorToString(query.operator);\n switch (query.operator) {\n case QUERY_COMMANDS_LITERAL.EQ:\n case QUERY_COMMANDS_LITERAL.NEQ:\n case QUERY_COMMANDS_LITERAL.LT:\n case QUERY_COMMANDS_LITERAL.LTE:\n case QUERY_COMMANDS_LITERAL.GT:\n case QUERY_COMMANDS_LITERAL.GTE:\n case QUERY_COMMANDS_LITERAL.ELEM_MATCH:\n case QUERY_COMMANDS_LITERAL.EXISTS:\n case QUERY_COMMANDS_LITERAL.SIZE:\n case QUERY_COMMANDS_LITERAL.MOD: {\n return _a = {},\n _a[query.fieldName] = (_b = {},\n _b[$op] = encodeInternalDataType(query.operands[0]),\n _b),\n _a;\n }\n case QUERY_COMMANDS_LITERAL.IN:\n case QUERY_COMMANDS_LITERAL.NIN:\n case QUERY_COMMANDS_LITERAL.ALL: {\n return _c = {},\n _c[query.fieldName] = (_d = {},\n _d[$op] = encodeInternalDataType(query.operands),\n _d),\n _c;\n }\n case QUERY_COMMANDS_LITERAL.GEO_NEAR: {\n var options = query.operands[0];\n return _e = {},\n _e[query.fieldName] = {\n $nearSphere: {\n $geometry: options.geometry.toJSON(),\n $maxDistance: options.maxDistance,\n $minDistance: options.minDistance\n }\n },\n _e;\n }\n case QUERY_COMMANDS_LITERAL.GEO_WITHIN: {\n var options = query.operands[0];\n if (options.centerSphere) {\n Validate.isCentersPhere(options.centerSphere);\n var centerSphere = options.centerSphere;\n if (centerSphere[0]._internalType === SYMBOL_GEO_POINT) {\n return _f = {},\n _f[query.fieldName] = {\n $geoWithin: {\n $centerSphere: [centerSphere[0].toJSON().coordinates, centerSphere[1]]\n }\n },\n _f;\n }\n return _g = {},\n _g[query.fieldName] = {\n $geoWithin: {\n $centerSphere: options.centerSphere\n }\n },\n _g;\n }\n return _h = {},\n _h[query.fieldName] = {\n $geoWithin: {\n $geometry: options.geometry.toJSON()\n }\n },\n _h;\n }\n case QUERY_COMMANDS_LITERAL.GEO_INTERSECTS: {\n var options = query.operands[0];\n return _j = {},\n _j[query.fieldName] = {\n $geoIntersects: {\n $geometry: options.geometry.toJSON()\n }\n },\n _j;\n }\n default: {\n return _k = {},\n _k[query.fieldName] = (_l = {},\n _l[$op] = encodeInternalDataType(query.operands[0]),\n _l),\n _k;\n }\n }\n };\n QueryEncoder.prototype.encodeQueryObject = function (query) {\n var flattened = flattenQueryObject(query);\n for (var key in flattened) {\n var val = flattened[key];\n if (isLogicCommand(val)) {\n flattened[key] = val._setFieldName(key);\n var condition = this.encodeLogicCommand(flattened[key]);\n this.mergeConditionAfterEncode(flattened, condition, key);\n }\n else if (isComparisonCommand(val)) {\n flattened[key] = val._setFieldName(key);\n var condition = this.encodeComparisonCommand(flattened[key]);\n this.mergeConditionAfterEncode(flattened, condition, key);\n }\n else if (isConversionRequired(val)) {\n flattened[key] = encodeInternalDataType(val);\n }\n }\n return flattened;\n };\n QueryEncoder.prototype.mergeConditionAfterEncode = function (query, condition, key) {\n if (!condition[key]) {\n delete query[key];\n }\n for (var conditionKey in condition) {\n if (query[conditionKey]) {\n if (isArray(query[conditionKey])) {\n query[conditionKey] = query[conditionKey].concat(condition[conditionKey]);\n }\n else if (isObject(query[conditionKey])) {\n if (isObject(condition[conditionKey])) {\n Object.assign(query, condition);\n }\n else {\n console.warn(\"unmergable condition, query is object but condition is \".concat(getType(condition), \", can only overwrite\"), condition, key);\n query[conditionKey] = condition[conditionKey];\n }\n }\n else {\n console.warn(\"to-merge query is of type \".concat(getType(query), \", can only overwrite\"), query, condition, key);\n query[conditionKey] = condition[conditionKey];\n }\n }\n else {\n query[conditionKey] = condition[conditionKey];\n }\n }\n };\n return QueryEncoder;\n}());\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { QueryType } from './constant';\nimport { Db } from './index';\nimport { Validate } from './validate';\nimport { Util } from './util';\nimport { QuerySerializer } from './serializer/query';\nimport { UpdateSerializer } from './serializer/update';\nimport { ErrorCode } from './constant';\nimport { getWsInstance, getReqOpts, stringifyByEJSON, processReturn, withCallback } from './utils/utils';\nimport { ERRORS } from './const/code';\nimport { EJSON } from 'bson';\nvar Query = (function () {\n function Query(db, coll, fieldFilters, apiOptions, transactionId) {\n var _this = this;\n this.watch = function (options) {\n var ws = getWsInstance(_this._db);\n var _a = _this._apiOptions, limit = _a.limit, order = _a.order;\n return ws.watch(__assign(__assign({}, options), { envId: _this._db.config.env, collectionName: _this._coll, query: JSON.stringify(_this._fieldFilters), limit: limit, orderBy: order\n ? order.reduce(function (acc, cur) {\n acc[cur.field] = cur.direction;\n return acc;\n }, {})\n : undefined }));\n };\n this._db = db;\n this._coll = coll;\n this._fieldFilters = fieldFilters;\n this._apiOptions = apiOptions || {};\n this._request = Db.createRequest(this._db.config);\n this._transactionId = transactionId;\n }\n Query.prototype.get = function (callback) {\n return withCallback(this._get(), callback);\n };\n Query.prototype._get = function () {\n return __awaiter(this, void 0, void 0, function () {\n var order, param, offset, limit, projection, res, list, documents, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n order = this._apiOptions.order;\n param = {\n collectionName: this._coll,\n queryType: QueryType.WHERE,\n transactionId: this._transactionId\n };\n if (this._fieldFilters) {\n param.query = this._fieldFilters;\n }\n if (order) {\n param.order = stringifyByEJSON(order);\n }\n offset = this._apiOptions.offset;\n if (offset) {\n param.offset = offset;\n }\n limit = this._apiOptions.limit;\n if (limit) {\n param.limit = limit < 1000 ? limit : 1000;\n }\n else {\n param.limit = 100;\n }\n projection = this._apiOptions.projection;\n if (projection) {\n param.projection = stringifyByEJSON(projection);\n }\n return [4, this._request.send('database.getDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n list = res.data.list.map(function (item) { return EJSON.parse(item); });\n documents = Util.formatResDocumentData(list);\n result = {\n data: documents,\n requestId: res.requestId\n };\n if (res.total)\n result.total = res.total;\n if (res.limit)\n result.limit = res.limit;\n if (res.offset)\n result.offset = res.offset;\n return [2, result];\n }\n });\n });\n };\n Query.prototype.count = function (callback) {\n return withCallback(this._count(), callback);\n };\n Query.prototype._count = function () {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n param = {\n collectionName: this._coll,\n queryType: QueryType.WHERE\n };\n if (this._fieldFilters) {\n param.query = this._fieldFilters;\n }\n return [4, this._request.send('database.calculateDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n return [2, {\n requestId: res.requestId,\n total: res.data.total\n }];\n }\n });\n });\n };\n Query.prototype.where = function (query) {\n if (Object.prototype.toString.call(query).slice(8, -1) !== 'Object') {\n throw Error(ErrorCode.QueryParamTypeError);\n }\n var keys = Object.keys(query);\n var checkFlag = keys.some(function (item) {\n return query[item] !== undefined;\n });\n if (keys.length && !checkFlag) {\n throw Error(ErrorCode.QueryParamValueError);\n }\n return new Query(this._db, this._coll, QuerySerializer.encodeEJSON(query, this._apiOptions.raw || false), this._apiOptions, this._transactionId);\n };\n Query.prototype.options = function (apiOptions) {\n Validate.isValidOptions(apiOptions);\n return new Query(this._db, this._coll, this._fieldFilters, apiOptions, this._transactionId);\n };\n Query.prototype.orderBy = function (fieldPath, directionStr) {\n var _a;\n Validate.isFieldPath(fieldPath);\n Validate.isFieldOrder(directionStr);\n var newOrder = (_a = {},\n _a[fieldPath] = directionStr === 'desc' ? -1 : 1,\n _a);\n var order = this._apiOptions.order || {};\n var newApiOption = Object.assign({}, this._apiOptions, {\n order: Object.assign({}, order, newOrder)\n });\n return new Query(this._db, this._coll, this._fieldFilters, newApiOption, this._transactionId);\n };\n Query.prototype.limit = function (limit) {\n Validate.isInteger('limit', limit);\n var newApiOption = __assign({}, this._apiOptions);\n newApiOption.limit = limit;\n return new Query(this._db, this._coll, this._fieldFilters, newApiOption, this._transactionId);\n };\n Query.prototype.skip = function (offset) {\n Validate.isInteger('offset', offset);\n var newApiOption = __assign({}, this._apiOptions);\n newApiOption.offset = offset;\n return new Query(this._db, this._coll, this._fieldFilters, newApiOption, this._transactionId);\n };\n Query.prototype.update = function (data, callback) {\n return withCallback(this._update(data), callback);\n };\n Query.prototype._update = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var multiple, multi, param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!data || typeof data !== 'object') {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '参数必需是非空对象' }))];\n }\n if (data.hasOwnProperty('_id')) {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '不能更新_id的值' }))];\n }\n multiple = this._apiOptions.multiple;\n multi = multiple === undefined ? true : multiple;\n param = {\n collectionName: this._coll,\n queryType: QueryType.WHERE,\n multi: multi,\n merge: true,\n upsert: false,\n data: UpdateSerializer.encodeEJSON(data, this._apiOptions.raw || false)\n };\n if (this._transactionId) {\n param.transactionId = this._transactionId;\n }\n if (this._fieldFilters) {\n param.query = this._fieldFilters;\n }\n return [4, this._request.send('database.modifyDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n return [2, {\n requestId: res.requestId,\n updated: res.data.updated,\n upsertId: res.data.upsert_id\n }];\n }\n });\n });\n };\n Query.prototype.field = function (projection) {\n var transformProjection = {};\n for (var k in projection) {\n if (typeof projection[k] === 'boolean') {\n transformProjection[k] = projection[k] === true ? 1 : 0;\n }\n if (typeof projection[k] === 'number') {\n transformProjection[k] = projection[k] > 0 ? 1 : 0;\n }\n if (typeof projection[k] === 'object') {\n transformProjection[k] = projection[k];\n }\n }\n var newApiOption = __assign({}, this._apiOptions);\n newApiOption.projection = transformProjection;\n return new Query(this._db, this._coll, this._fieldFilters, newApiOption, this._transactionId);\n };\n Query.prototype.remove = function (callback) {\n return withCallback(this._remove(), callback);\n };\n Query.prototype._remove = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, offset, limit, projection, order, multiple, multi, param, res;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this._apiOptions, offset = _a.offset, limit = _a.limit, projection = _a.projection, order = _a.order;\n if (offset !== undefined ||\n limit !== undefined ||\n projection !== undefined ||\n order !== undefined) {\n console.warn('`offset`, `limit`, `projection`, `orderBy` are not supported in remove() operation');\n }\n multiple = this._apiOptions.multiple;\n multi = multiple === undefined ? true : multiple;\n param = {\n collectionName: this._coll,\n query: this._fieldFilters,\n queryType: QueryType.WHERE,\n multi: multi\n };\n if (this._transactionId) {\n param.transactionId = this._transactionId;\n }\n return [4, this._request.send('database.removeDocument', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _b.sent();\n if (res.code) {\n return [2, res];\n }\n return [2, {\n requestId: res.requestId,\n deleted: res.data.deleted\n }];\n }\n });\n });\n };\n Query.prototype.updateAndReturn = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!data || typeof data !== 'object') {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '参数必需是非空对象' }))];\n }\n if (data.hasOwnProperty('_id')) {\n return [2, processReturn(this._db.config.throwOnCode, __assign(__assign({}, ERRORS.INVALID_PARAM), { message: '不能更新_id的值' }))];\n }\n param = {\n collectionName: this._coll,\n queryType: QueryType.WHERE,\n data: UpdateSerializer.encodeEJSON(data, false)\n };\n if (this._transactionId) {\n param.transactionId = this._transactionId;\n }\n if (this._fieldFilters) {\n param.query = this._fieldFilters;\n }\n return [4, this._request.send('database.modifyAndReturnDoc', param, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n return [2, {\n requestId: res.requestId,\n updated: res.data.updated,\n doc: res.data.doc && EJSON.parse(res.data.doc)\n }];\n }\n });\n });\n };\n return Query;\n}());\nexport { Query };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Db } from './index';\nimport { EJSON } from 'bson';\nimport { QuerySerializer } from './serializer/query';\nimport { stringifyByEJSON } from './utils/utils';\nimport { getType } from './utils/type';\nimport { Validate } from './validate';\nimport { Point } from './geo/point';\nvar Aggregation = (function () {\n function Aggregation(db, collectionName, rawPipeline) {\n var _this = this;\n this._stages = [];\n if (db && collectionName) {\n this._db = db;\n this._request = Db.createRequest(this._db.config);\n this._collectionName = collectionName;\n if (rawPipeline && rawPipeline.length > 0) {\n rawPipeline.forEach(function (stage) {\n Validate.isValidAggregation(stage);\n var stageName = Object.keys(stage)[0];\n _this._pipe(stageName, stage[stageName], true);\n });\n }\n }\n }\n Aggregation.prototype.end = function () {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._collectionName || !this._db) {\n throw new Error('Aggregation pipeline cannot send request');\n }\n return [4, this._request.send('database.aggregateDocuments', {\n collectionName: this._collectionName,\n stages: this._stages\n })];\n case 1:\n result = _a.sent();\n if (result && result.data && result.data.list) {\n return [2, {\n requestId: result.requestId,\n data: result.data.list.map(EJSON.parse)\n }];\n }\n return [2, result];\n }\n });\n });\n };\n Aggregation.prototype.unwrap = function () {\n return this._stages;\n };\n Aggregation.prototype.done = function () {\n return this._stages.map(function (_a) {\n var _b;\n var stageKey = _a.stageKey, stageValue = _a.stageValue;\n return _b = {},\n _b[stageKey] = JSON.parse(stageValue),\n _b;\n });\n };\n Aggregation.prototype._pipe = function (stage, param, raw) {\n if (raw === void 0) { raw = false; }\n var transformParam = '';\n if (getType(param) === 'object') {\n transformParam = stringifyByEJSON(param);\n }\n else {\n transformParam = JSON.stringify(param);\n }\n this._stages.push({\n stageKey: raw ? stage : \"$\".concat(stage),\n stageValue: transformParam\n });\n return this;\n };\n Aggregation.prototype.addFields = function (param) {\n return this._pipe('addFields', param);\n };\n Aggregation.prototype.bucket = function (param) {\n return this._pipe('bucket', param);\n };\n Aggregation.prototype.bucketAuto = function (param) {\n return this._pipe('bucketAuto', param);\n };\n Aggregation.prototype.count = function (param) {\n return this._pipe('count', param);\n };\n Aggregation.prototype.geoNear = function (param) {\n if (param.query) {\n param.query = QuerySerializer.encode(param.query);\n }\n if (param.distanceMultiplier && typeof (param.distanceMultiplier) === 'number') {\n param.distanceMultiplier = param.distanceMultiplier;\n }\n if (param.near) {\n param.near = new Point(param.near.longitude, param.near.latitude).toJSON();\n }\n return this._pipe('geoNear', param);\n };\n Aggregation.prototype.group = function (param) {\n return this._pipe('group', param);\n };\n Aggregation.prototype.limit = function (param) {\n return this._pipe('limit', param);\n };\n Aggregation.prototype.match = function (param) {\n return this._pipe('match', QuerySerializer.encode(param));\n };\n Aggregation.prototype.project = function (param) {\n return this._pipe('project', param);\n };\n Aggregation.prototype.lookup = function (param) {\n return this._pipe('lookup', param);\n };\n Aggregation.prototype.replaceRoot = function (param) {\n return this._pipe('replaceRoot', param);\n };\n Aggregation.prototype.sample = function (param) {\n return this._pipe('sample', param);\n };\n Aggregation.prototype.skip = function (param) {\n return this._pipe('skip', param);\n };\n Aggregation.prototype.sort = function (param) {\n return this._pipe('sort', param);\n };\n Aggregation.prototype.sortByCount = function (param) {\n return this._pipe('sortByCount', param);\n };\n Aggregation.prototype.unwind = function (param) {\n return this._pipe('unwind', param);\n };\n return Aggregation;\n}());\nexport default Aggregation;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { DocumentReference } from './document';\nimport { Query } from './query';\nimport Aggregation from './aggregate';\nimport { serialize } from './serializer/datatype';\nimport { getReqOpts, stringifyByEJSON, withCallback } from './utils/utils';\nimport { Validate } from './validate';\nimport { isArray } from './utils/type';\nvar CollectionReference = (function (_super) {\n __extends(CollectionReference, _super);\n function CollectionReference(db, coll, apiOptions, transactionId) {\n var _this = _super.call(this, db, coll, '', apiOptions, transactionId) || this;\n if (transactionId) {\n _this._transactionId = transactionId;\n }\n return _this;\n }\n Object.defineProperty(CollectionReference.prototype, \"name\", {\n get: function () {\n return this._coll;\n },\n enumerable: false,\n configurable: true\n });\n CollectionReference.prototype.doc = function (docID) {\n if (typeof docID !== 'string' && typeof docID !== 'number') {\n throw new Error('docId必须为字符串或数字');\n }\n return new DocumentReference(this._db, this._coll, this._apiOptions, docID, this._transactionId);\n };\n CollectionReference.prototype.add = function (data, callback) {\n return withCallback(this._add(data), callback);\n };\n CollectionReference.prototype._add = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var transformData, params, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n transformData = data;\n if (!isArray(data)) {\n transformData = [data];\n }\n transformData = transformData.map(function (item) {\n return stringifyByEJSON(serialize(item));\n });\n params = {\n collectionName: this._coll,\n data: transformData\n };\n if (this._transactionId) {\n params.transactionId = this._transactionId;\n }\n return [4, this._request.send('database.insertDocument', params, getReqOpts(this._apiOptions))];\n case 1:\n res = _a.sent();\n if (res.code) {\n return [2, res];\n }\n if (!isArray(data)) {\n if (this._transactionId) {\n return [2, {\n inserted: 1,\n ok: 1,\n id: res.data.insertedIds[0],\n requestId: res.requestId\n }];\n }\n return [2, {\n id: res.data.insertedIds[0],\n requestId: res.requestId\n }];\n }\n return [2, {\n ids: res.data.insertedIds,\n requestId: res.requestId\n }];\n }\n });\n });\n };\n CollectionReference.prototype.aggregate = function (rawPipeline) {\n if (rawPipeline === void 0) { rawPipeline = []; }\n return new Aggregation(this._db, this._coll, (this._apiOptions.raw || false) ? rawPipeline : []);\n };\n CollectionReference.prototype.options = function (apiOptions) {\n Validate.isValidOptions(apiOptions);\n return new CollectionReference(this._db, this._coll, apiOptions, this._transactionId);\n };\n return CollectionReference;\n}(Query));\nexport { CollectionReference };\n","import { QueryCommand, QUERY_COMMANDS_LITERAL } from './commands/query';\nimport { LogicCommand, LOGIC_COMMANDS_LITERAL } from './commands/logic';\nimport { UpdateCommand, UPDATE_COMMANDS_LITERAL } from './commands/update';\nimport { isArray, isObject, isString } from './utils/type';\nimport Aggregation from './aggregate';\nexport var Command = {\n eq: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.EQ, [val]);\n },\n neq: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.NEQ, [val]);\n },\n lt: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.LT, [val]);\n },\n lte: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.LTE, [val]);\n },\n gt: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.GT, [val]);\n },\n gte: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.GTE, [val]);\n },\n in: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.IN, val);\n },\n nin: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.NIN, val);\n },\n all: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.ALL, val);\n },\n elemMatch: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.ELEM_MATCH, [val]);\n },\n exists: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.EXISTS, [val]);\n },\n size: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.SIZE, [val]);\n },\n mod: function () {\n if (arguments.length == 1)\n return new QueryCommand(QUERY_COMMANDS_LITERAL.MOD, [arguments[0]]);\n if (arguments.length == 2)\n return new QueryCommand(QUERY_COMMANDS_LITERAL.MOD, [[arguments[0], arguments[1]]]);\n return new QueryCommand(QUERY_COMMANDS_LITERAL.MOD, arguments);\n },\n geoNear: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_NEAR, [val]);\n },\n geoWithin: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_WITHIN, [val]);\n },\n geoIntersects: function (val) {\n return new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_INTERSECTS, [val]);\n },\n and: function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.AND, expressions);\n },\n nor: function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.NOR, expressions);\n },\n or: function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.OR, expressions);\n },\n not: function () {\n var __expressions__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __expressions__[_i] = arguments[_i];\n }\n var expressions = isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n return new LogicCommand(LOGIC_COMMANDS_LITERAL.NOT, expressions);\n },\n set: function (val) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.SET, [val]);\n },\n remove: function () {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.REMOVE, []);\n },\n inc: function (val) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.INC, [val]);\n },\n mul: function (val) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.MUL, [val]);\n },\n push: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var values;\n if (isObject(args[0]) && args[0].hasOwnProperty('each')) {\n values = {};\n var options = args[0];\n if (options.each !== undefined) {\n values['$each'] = options.each;\n }\n if (options.position !== undefined) {\n values['$position'] = options.position;\n }\n if (options.sort !== undefined) {\n values['$sort'] = options.sort;\n }\n if (options.slice !== undefined) {\n values['$slice'] = options.slice;\n }\n }\n else if (isArray(args[0])) {\n values = args[0];\n }\n else {\n values = Array.from(args);\n }\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.PUSH, values);\n },\n pull: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.PULL, values);\n },\n pullAll: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.PULL_ALL, values);\n },\n pop: function () {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.POP, []);\n },\n shift: function () {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.SHIFT, []);\n },\n unshift: function () {\n var __values__ = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n __values__[_i] = arguments[_i];\n }\n var values = isArray(arguments[0]) ? arguments[0] : Array.from(arguments);\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.UNSHIFT, values);\n },\n addToSet: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.ADD_TO_SET, values);\n },\n rename: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.RENAME, [values]);\n },\n bit: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.BIT, [values]);\n },\n max: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.MAX, [values]);\n },\n min: function (values) {\n return new UpdateCommand(UPDATE_COMMANDS_LITERAL.MIN, [values]);\n },\n expr: function (values) {\n return {\n $expr: values\n };\n },\n jsonSchema: function (schema) {\n return {\n $jsonSchema: schema\n };\n },\n text: function (values) {\n if (isString(values)) {\n return {\n $search: values.search\n };\n }\n else {\n return {\n $search: values.search,\n $language: values.language,\n $caseSensitive: values.caseSensitive,\n $diacriticSensitive: values.diacriticSensitive\n };\n }\n },\n aggregate: {\n pipeline: function () {\n return new Aggregation();\n },\n abs: function (param) { return new AggregationOperator('abs', param); },\n add: function (param) { return new AggregationOperator('add', param); },\n ceil: function (param) { return new AggregationOperator('ceil', param); },\n divide: function (param) { return new AggregationOperator('divide', param); },\n exp: function (param) { return new AggregationOperator('exp', param); },\n floor: function (param) { return new AggregationOperator('floor', param); },\n ln: function (param) { return new AggregationOperator('ln', param); },\n log: function (param) { return new AggregationOperator('log', param); },\n log10: function (param) { return new AggregationOperator('log10', param); },\n mod: function (param) { return new AggregationOperator('mod', param); },\n multiply: function (param) { return new AggregationOperator('multiply', param); },\n pow: function (param) { return new AggregationOperator('pow', param); },\n sqrt: function (param) { return new AggregationOperator('sqrt', param); },\n subtract: function (param) { return new AggregationOperator('subtract', param); },\n trunc: function (param) { return new AggregationOperator('trunc', param); },\n arrayElemAt: function (param) { return new AggregationOperator('arrayElemAt', param); },\n arrayToObject: function (param) { return new AggregationOperator('arrayToObject', param); },\n concatArrays: function (param) { return new AggregationOperator('concatArrays', param); },\n filter: function (param) { return new AggregationOperator('filter', param); },\n in: function (param) { return new AggregationOperator('in', param); },\n indexOfArray: function (param) { return new AggregationOperator('indexOfArray', param); },\n isArray: function (param) { return new AggregationOperator('isArray', param); },\n map: function (param) { return new AggregationOperator('map', param); },\n range: function (param) { return new AggregationOperator('range', param); },\n reduce: function (param) { return new AggregationOperator('reduce', param); },\n reverseArray: function (param) { return new AggregationOperator('reverseArray', param); },\n size: function (param) { return new AggregationOperator('size', param); },\n slice: function (param) { return new AggregationOperator('slice', param); },\n zip: function (param) { return new AggregationOperator('zip', param); },\n and: function (param) { return new AggregationOperator('and', param); },\n not: function (param) { return new AggregationOperator('not', param); },\n or: function (param) { return new AggregationOperator('or', param); },\n cmp: function (param) { return new AggregationOperator('cmp', param); },\n eq: function (param) { return new AggregationOperator('eq', param); },\n gt: function (param) { return new AggregationOperator('gt', param); },\n gte: function (param) { return new AggregationOperator('gte', param); },\n lt: function (param) { return new AggregationOperator('lt', param); },\n lte: function (param) { return new AggregationOperator('lte', param); },\n neq: function (param) { return new AggregationOperator('ne', param); },\n cond: function (param) { return new AggregationOperator('cond', param); },\n ifNull: function (param) { return new AggregationOperator('ifNull', param); },\n switch: function (param) { return new AggregationOperator('switch', param); },\n dateFromParts: function (param) { return new AggregationOperator('dateFromParts', param); },\n dateFromString: function (param) { return new AggregationOperator('dateFromString', param); },\n dayOfMonth: function (param) { return new AggregationOperator('dayOfMonth', param); },\n dayOfWeek: function (param) { return new AggregationOperator('dayOfWeek', param); },\n dayOfYear: function (param) { return new AggregationOperator('dayOfYear', param); },\n isoDayOfWeek: function (param) { return new AggregationOperator('isoDayOfWeek', param); },\n isoWeek: function (param) { return new AggregationOperator('isoWeek', param); },\n isoWeekYear: function (param) { return new AggregationOperator('isoWeekYear', param); },\n millisecond: function (param) { return new AggregationOperator('millisecond', param); },\n minute: function (param) { return new AggregationOperator('minute', param); },\n month: function (param) { return new AggregationOperator('month', param); },\n second: function (param) { return new AggregationOperator('second', param); },\n hour: function (param) { return new AggregationOperator('hour', param); },\n week: function (param) { return new AggregationOperator('week', param); },\n year: function (param) { return new AggregationOperator('year', param); },\n literal: function (param) { return new AggregationOperator('literal', param); },\n mergeObjects: function (param) { return new AggregationOperator('mergeObjects', param); },\n objectToArray: function (param) { return new AggregationOperator('objectToArray', param); },\n allElementsTrue: function (param) { return new AggregationOperator('allElementsTrue', param); },\n anyElementTrue: function (param) { return new AggregationOperator('anyElementTrue', param); },\n setDifference: function (param) { return new AggregationOperator('setDifference', param); },\n setEquals: function (param) { return new AggregationOperator('setEquals', param); },\n setIntersection: function (param) { return new AggregationOperator('setIntersection', param); },\n setIsSubset: function (param) { return new AggregationOperator('setIsSubset', param); },\n setUnion: function (param) { return new AggregationOperator('setUnion', param); },\n concat: function (param) { return new AggregationOperator('concat', param); },\n dateToString: function (param) { return new AggregationOperator('dateToString', param); },\n indexOfBytes: function (param) { return new AggregationOperator('indexOfBytes', param); },\n indexOfCP: function (param) { return new AggregationOperator('indexOfCP', param); },\n split: function (param) { return new AggregationOperator('split', param); },\n strLenBytes: function (param) { return new AggregationOperator('strLenBytes', param); },\n strLenCP: function (param) { return new AggregationOperator('strLenCP', param); },\n strcasecmp: function (param) { return new AggregationOperator('strcasecmp', param); },\n substr: function (param) { return new AggregationOperator('substr', param); },\n substrBytes: function (param) { return new AggregationOperator('substrBytes', param); },\n substrCP: function (param) { return new AggregationOperator('substrCP', param); },\n toLower: function (param) { return new AggregationOperator('toLower', param); },\n toUpper: function (param) { return new AggregationOperator('toUpper', param); },\n meta: function (param) { return new AggregationOperator('meta', param); },\n addToSet: function (param) { return new AggregationOperator('addToSet', param); },\n avg: function (param) { return new AggregationOperator('avg', param); },\n first: function (param) { return new AggregationOperator('first', param); },\n last: function (param) { return new AggregationOperator('last', param); },\n max: function (param) { return new AggregationOperator('max', param); },\n min: function (param) { return new AggregationOperator('min', param); },\n push: function (param) { return new AggregationOperator('push', param); },\n stdDevPop: function (param) { return new AggregationOperator('stdDevPop', param); },\n stdDevSamp: function (param) { return new AggregationOperator('stdDevSamp', param); },\n sum: function (param) { return new AggregationOperator('sum', param); },\n let: function (param) { return new AggregationOperator('let', param); }\n },\n project: {\n slice: function (param) { return new ProjectionOperator('slice', param); },\n elemMatch: function (param) { return new ProjectionOperator('elemMatch', param); }\n }\n};\nvar AggregationOperator = (function () {\n function AggregationOperator(name, param) {\n this['$' + name] = param;\n }\n return AggregationOperator;\n}());\nexport { AggregationOperator };\nvar ProjectionOperator = (function () {\n function ProjectionOperator(name, param) {\n this['$' + name] = param;\n }\n return ProjectionOperator;\n}());\nexport { ProjectionOperator };\nexport default Command;\n","import { SYMBOL_SERVER_DATE } from '../helper/symbol';\nvar ServerDate = (function () {\n function ServerDate(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.offset, offset = _c === void 0 ? 0 : _c;\n this.offset = offset;\n }\n Object.defineProperty(ServerDate.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_SERVER_DATE;\n },\n enumerable: false,\n configurable: true\n });\n ServerDate.prototype.parse = function () {\n return {\n $tcb_server_date: {\n offset: this.offset\n }\n };\n };\n return ServerDate;\n}());\nexport { ServerDate };\nexport function ServerDateConstructor(opt) {\n return new ServerDate(opt);\n}\n","import { SYMBOL_REGEXP } from '../helper/symbol';\nvar RegExp = (function () {\n function RegExp(_a) {\n var regexp = _a.regexp, options = _a.options;\n if (!regexp) {\n throw new TypeError('regexp must be a string');\n }\n this.$regularExpression = {\n pattern: regexp || '',\n options: options || ''\n };\n }\n RegExp.prototype.parse = function () {\n return {\n $regularExpression: {\n pattern: this.$regularExpression.pattern,\n options: this.$regularExpression.options\n }\n };\n };\n Object.defineProperty(RegExp.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_REGEXP;\n },\n enumerable: false,\n configurable: true\n });\n return RegExp;\n}());\nexport { RegExp };\nexport function RegExpConstructor(param) {\n return new RegExp(param);\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Db } from '../index';\nimport { CollectionReference } from '../collection';\nimport { ERRORS } from '../const/code';\nvar START = 'database.startTransaction';\nvar COMMIT = 'database.commitTransaction';\nvar ABORT = 'database.abortTransaction';\nvar Transaction = (function () {\n function Transaction(db) {\n this._db = db;\n this._request = Db.createRequest(this._db.config);\n this.aborted = false;\n this.commited = false;\n this.inited = false;\n }\n Transaction.prototype.init = function () {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4, this._request.send(START)];\n case 1:\n res = _a.sent();\n if (res.code) {\n throw res;\n }\n this.inited = true;\n this._id = res.transactionId;\n return [2];\n }\n });\n });\n };\n Transaction.prototype.collection = function (collName) {\n if (!collName) {\n throw new Error('Collection name is required');\n }\n return new CollectionReference(this._db, collName, {}, this._id);\n };\n Transaction.prototype.getTransactionId = function () {\n return this._id;\n };\n Transaction.prototype.getRequestMethod = function () {\n return this._request;\n };\n Transaction.prototype.commit = function () {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n param = {\n transactionId: this._id\n };\n return [4, this._request.send(COMMIT, param)];\n case 1:\n res = _a.sent();\n if (res.code)\n throw res;\n this.commited = true;\n return [2, res];\n }\n });\n });\n };\n Transaction.prototype.rollback = function (customRollbackRes) {\n return __awaiter(this, void 0, void 0, function () {\n var param, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n param = {\n transactionId: this._id\n };\n return [4, this._request.send(ABORT, param)];\n case 1:\n res = _a.sent();\n if (res.code)\n throw res;\n this.aborted = true;\n this.abortReason = customRollbackRes;\n return [2, res];\n }\n });\n });\n };\n return Transaction;\n}());\nexport { Transaction };\nexport function startTransaction() {\n return __awaiter(this, void 0, void 0, function () {\n var transaction;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n transaction = new Transaction(this);\n return [4, transaction.init()];\n case 1:\n _a.sent();\n return [2, transaction];\n }\n });\n });\n}\nexport function runTransaction(callback, times) {\n if (times === void 0) { times = 3; }\n return __awaiter(this, void 0, void 0, function () {\n var transaction, callbackRes, error_1, throwWithRollback;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 4, , 10]);\n transaction = new Transaction(this);\n return [4, transaction.init()];\n case 1:\n _a.sent();\n return [4, callback(transaction)];\n case 2:\n callbackRes = _a.sent();\n if (transaction.aborted === true) {\n throw transaction.abortReason;\n }\n return [4, transaction.commit()];\n case 3:\n _a.sent();\n return [2, callbackRes];\n case 4:\n error_1 = _a.sent();\n if (transaction.inited === false) {\n throw error_1;\n }\n throwWithRollback = function (error) { return __awaiter(_this, void 0, void 0, function () {\n var err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(!transaction.aborted && !transaction.commited)) return [3, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4, transaction.rollback()];\n case 2:\n _a.sent();\n return [3, 4];\n case 3:\n err_1 = _a.sent();\n return [3, 4];\n case 4: throw error;\n case 5:\n if (transaction.aborted === true) {\n throw transaction.abortReason;\n }\n throw error;\n }\n });\n }); };\n if (!(times <= 0)) return [3, 6];\n return [4, throwWithRollback(error_1)];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6:\n if (!(error_1 && error_1.code === ERRORS.DATABASE_TRANSACTION_CONFLICT.code)) return [3, 8];\n return [4, runTransaction.bind(this)(callback, --times)];\n case 7: return [2, _a.sent()];\n case 8: return [4, throwWithRollback(error_1)];\n case 9:\n _a.sent();\n return [3, 10];\n case 10: return [2];\n }\n });\n });\n}\n","import { SYMBOL_OBJECTID } from '../helper/symbol';\nvar ObjectId = (function () {\n function ObjectId(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.id, id = _c === void 0 ? '' : _c;\n this.id = id;\n }\n Object.defineProperty(ObjectId.prototype, \"_internalType\", {\n get: function () {\n return SYMBOL_OBJECTID;\n },\n enumerable: false,\n configurable: true\n });\n ObjectId.prototype.parse = function () {\n return {\n $oid: this.id\n };\n };\n return ObjectId;\n}());\nexport { ObjectId };\nexport function ObjectIdConstructor(opt) {\n return new ObjectId(opt);\n}\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as Geo from './geo/index';\nimport { CollectionReference } from './collection';\nimport { Command } from './command';\nimport { ServerDateConstructor } from './serverDate/index';\nimport { RegExpConstructor } from './regexp/index';\nimport { startTransaction, runTransaction } from './transaction/index';\nimport { LogicCommand } from './commands/logic';\nimport { QueryCommand } from './commands/query';\nimport { UpdateCommand } from './commands/update';\nimport { ObjectIdConstructor } from './ObjectId/index';\nexport { Query } from './query';\nexport { CollectionReference } from './collection';\nexport { DocumentReference } from './document';\nvar Db = (function () {\n function Db(config) {\n this.config = config;\n this.Geo = Geo;\n this.serverDate = ServerDateConstructor;\n this.command = Command;\n this.RegExp = RegExpConstructor;\n this.ObjectId = ObjectIdConstructor;\n this.startTransaction = startTransaction;\n this.runTransaction = runTransaction;\n this.logicCommand = LogicCommand;\n this.updateCommand = UpdateCommand;\n this.queryCommand = QueryCommand;\n }\n Db.createRequest = function (config) {\n var request = new Db.reqClass(config);\n var originalSend = request.send;\n request.send = function (action, data) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (data) {\n if (config.instance) {\n data.instance = config.instance;\n }\n if (config.database) {\n data.database = config.database;\n }\n }\n return originalSend.call.apply(originalSend, __spreadArray([this, action, data], __read(args), false));\n };\n return request;\n };\n Db.prototype.collection = function (collName) {\n if (!collName) {\n throw new Error('Collection name is required');\n }\n return new CollectionReference(this, collName);\n };\n Db.prototype.createCollection = function (collName) {\n var request = Db.createRequest(this.config);\n var params = {\n collectionName: collName\n };\n return request.send('database.addCollection', params);\n };\n return Db;\n}());\nexport { Db };\n","module.exports = require(\"@cloudbase/adapter-interface\");","module.exports = require(\"bson\");","module.exports = require(\"jwt-decode\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(198);\n"],"names":["database_1","require","bson_1","utilities_1","exports","filterRes","res","utils","promoteGatewayError","header","statusCode","flattenResData","data","result","__assign","safeParseEJSON","EJSON","parse","_a","parseEJSONParam","value","JSON","parseEJSONValue","gateWayFunc","normalizeOrderParam","order","toDirection","v","n","Number","isNaN","s","toLowerCase","ret","_i","items_1","Array","isArray","length","item","undefined","field","direction","push","_b","Object","entries","_c","extractDocId","query","keys","id","_id","String","$oid","eq","$eq","toLegacyRegExp","$regularExpression","$regex","pattern","$options","options","map","key","parseWriteParam","buildQueryParams","params","filter","stringValue","stringify","concat","encodeURIComponent","join","getUrlPrefix","instance","database","customReqOpts","Promise","projection","docId","isQueryDoc","queryParams","transactionId","offset","limit","relaxed","url","collectionName","this","gateWay","method","_e","sent","code","_d","list","items","ids","insertedIds","multi","upsert","replaceMode","merge","count","pipeline","stages","stage","stageValue","stageKey","serialize","call","hasId","inserted","ok","commands","cmd","request_id","deserialize","normalized","returnDoc","doc","component","name","entity","dbConfig","prototype","toString","slice","createCloudbaseError","msg","config","errorFactory","platform","adapter","runtime","Req","_super","__extends","send","action","opts","timeout","endPointMode","shouldThrow","resolveThrow","_fromApp","message","requestId","request","constructor","Db","reqClass","getAccessToken","authInstance","bind","wsClientClass","wsClass","ws","NewDb","runCommands","createRequest","cloudbase","registerComponent","e","registerDatabase","app","console","warn","window","RUNTIME","Web","__importStar","util_1","adapters","adapterList_1","isMatch","genAdapter","WEB","adapter_interface_1","common_1","WebRequest","_this","timeoutMsg","restrictedMethods","get","includes","post","put","upload","file","headers","reqMethod","formData","FormData","forEach","append","body","download","responseType","URL","createObjectURL","Blob","fileName","decodeURIComponent","pathname","split","pop","link","document","createElement","href","setAttribute","style","display","appendChild","click","revokeObjectURL","removeChild","resolve","tempFilePath","fetch","abortController","AbortController","enableAbort","stream","signal","_timeout","shouldThrowOnError","aborted","abort","addEventListener","timer","setTimeout","Error","then","response","__awaiter","clearTimeout","reject","json","apply","catch","x","text","status","withCredentials","onUploadProgress","realUrl","formatUrl","getProtocol","ajax","XMLHttpRequest","open","payload","once","setRequestHeader","onreadystatechange","readyState","arr","getAllResponseHeaders","trim","headerMap_1","line","parts","shift","responseText","isFormData","toQueryString","AbstractSDKRequest","type","root","WebSocket","localStorage","sdkName","PROTOCOL","protocol","INVALID_PARAMS","INVALID_SYNTAX","INVALID_OPERATION","OPERATION_FAIL","NETWORK_ERROR","UNKOWN_ERROR","__exportStar","constants_1","isFirefox","navigator","userAgent","indexOf","REG_STACK_DECORATE","REG_STACK_LINK","getRewritedError","err","className","methodName","sourceLink","innerErr","innerErrStack","stack","REG_STACK_INNER_METHOD","RegExp","REG_STACK_INNER_METHOD_WITHOUT_LINK","indexOfSource","findIndex","str","test","realErrStack","i","unshift","replace","mode","customInfo","title","messages","target","descriptor","IS_DEBUG_MODE","fnName","fn","outterErrStacks","indexOfDecorator","match","exec","getSourceLink","args","arguments","failErr","errMsg","error","errorDescription","error_description","logs","content","subtitle","printGroupLog","err_1","constants","cache","events","langEvent","helpers","abortController_1","__importDefault","default","jwt","decode","listeners","f","TcbCacheObject","tcbCacheObject","setItem","getItem","removeItem","clear","AbstractStorage","CloudbaseCache","persistence","platformInfo","storage","persistenceTag","primaryStorage","printWarn","ERRORS","createStorage","defineProperty","setStore","version","val","getSdkName","info","setStoreAsync","getStore","process","tcb_token","getStoreAsync","removeStore","removeStoreAsync","CloudbaseEvent","IErrorEvent","CloudbaseEventEmitter","on","listener","customeAddEventListener","off","index","splice","customRemoveEventListener","fire","event","isInstanceOf","ev","isString","listens","handlers_1","__spreadArray","eventEmitter","callback","events_1","construct","Math","random","d","Date","getTime","d2","now","c","r","floor","urlHasQuery","queryString","u","location","search","reg","substr","matches","hash","sourceURL","rtn","cb","promise","throwPromiseNotDefined","log","CloudbaseError","enumerable","writable","configurable","defaultErrorFactory","factory","throw","parsed","_","printTrace","collapsed","groupCollapsed","group","content_1","tip","trace","groupEnd","ms","phoneNumber","queryObj","matched","parseQueryString","token","restQueryObj","__rest","state","captchaData","ErrorCode","Opeartor","QueryType","FieldType","OrderDirectionList","WhereFilterOpList","lt","lte","gt","gte","extendStatics","b","setPrototypeOf","__proto__","p","hasOwnProperty","TypeError","__","create","_symbols","__internalMark__","InternalSymbol","__mark__","for","len","symbol","defineProperties","SYMBOL_UNSET_FIELD_NAME","SYMBOL_UPDATE_COMMAND","SYMBOL_QUERY_COMMAND","SYMBOL_LOGIC_COMMAND","SYMBOL_GEO_POINT","SYMBOL_GEO_LINE_STRING","SYMBOL_GEO_POLYGON","SYMBOL_GEO_MULTI_POINT","SYMBOL_GEO_MULTI_LINE_STRING","SYMBOL_GEO_MULTI_POLYGON","SYMBOL_SERVER_DATE","SYMBOL_REGEXP","SYMBOL_OBJECTID","getType","isObject","isNumber","isDate","isRegExp","isInternalObject","_internalType","LineString","points","point","Point","coordinates","toJSON","validate","lineString","e_1","o","Symbol","iterator","m","next","done","__values","e_1_1","return","isClosed","firstPoint","lastPoint","latitude","longitude","Polygon","lines","toReadableString","polygon","e_2","isCloseLineString","line_1","line_1_1","e_2_1","MultiPoint","multiPoint","MultiLineString","multiLineString","MultiPolygon","polygons","polygons_1","polygons_1_1","multiPolygon","e_3","e_4","polygon_1","polygon_1_1","e_4_1","e_3_1","__read","ar","Util","formatResDocumentData","documents","formatField","protoField","realValue","whichType","lng","lat","$date","obj","generateDocId","autoId","charAt","chars","assign","t","withCallback","wsList","getWsInstance","db","env","context","appConfig","docSizeLimit","realtimePingInterval","realtimePongWaitTimeout","getReqOpts","apiOptions","filterUndefined","stringifyByEJSON","TcbError","E","errObj","processReturn","throwOnCode","UPDATE_COMMANDS_LITERAL","validOptionsKeys","Validate","isGeopoint","degree","degreeAbs","abs","isInteger","param","num","mustBeBoolean","bool","isProjection","subValue","isOrder","isFieldOrder","isFieldPath","path","isOperator","op","isCollName","isDocID","isValidOptions","multiple","isValidAggregation","isCentersPhere","LOGIC_COMMANDS_LITERAL","UpdateCommand","operator","operands","fieldName","_setFieldName","isUpdateCommand","object","LogicCommand","isLogicCommand","isQueryCommand","operand","and","__expressions__","expressions","from","AND","or","OR","QUERY_COMMANDS_LITERAL","QueryCommand","IN","NIN","NEQ","command","EQ","neq","GT","GTE","LT","LTE","in","nin","geoNear","geometry","maxDistance","minDistance","GEO_NEAR","geoWithin","centerSphere","GEO_WITHIN","geoIntersects","GEO_INTERSECTS","isComparisonCommand","OperatorMap","operatorToString","to","pack","l","serializeHelper","visited","source","flags","rawRet","finalRet","flatten","shouldPreserverObject","parents","cloned","flattenedChild","hasKeyNotCombined","childKey","flattenQueryObject","isConversionRequired","mergeConditionAfterEncode","condition","conditionKey","encodeInternalDataType","serializeInternalDataType","UpdateSerializer","encode","encodeUpdate","encodeEJSON","raw","stringifier","encodeUpdateCommand","encodeUpdateObject","encodeArrayUpdateCommand","encodeFieldUpdateCommand","$op","_f","_g","_h","_j","_k","modifiers","$each","$position","flattened","$setCommand","thisArg","_arguments","P","generator","fulfilled","step","rejected","__generator","y","g","label","trys","ops","verb","DocumentReference","coll","docID","watch","_db","envId","_coll","_transactionId","_apiOptions","_create","isBatch","set","_set","hasOperator","checkMixed","objs","queryType","updated","upserted","upsert_id","upsertedId","update","_update","delete","remove","_remove","deleted","_get","transformProjection","k","newApiOption","QuerySerializer","QueryEncoder","encodeQuery","encoder","encodeLogicCommand","encodeQueryCommand","encodeRegExp","encodeQueryObject","subqueries","oprand","operatorExpression","subquery","encodeComparisonCommand","_l","$nearSphere","$geometry","$maxDistance","$minDistance","$geoWithin","$centerSphere","$geoIntersects","Query","fieldFilters","_fieldFilters","orderBy","reduce","acc","cur","_request","total","_count","where","checkFlag","some","fieldPath","directionStr","newOrder","skip","upsertId","updateAndReturn","Aggregation","rawPipeline","_stages","_collectionName","stageName","_pipe","end","unwrap","transformParam","addFields","bucket","bucketAuto","distanceMultiplier","near","project","lookup","replaceRoot","sample","sort","sortByCount","unwind","aggregate","CollectionReference","add","_add","transformData","Command","all","elemMatch","exists","size","mod","nor","not","inc","mul","values","each","position","pull","pullAll","__values__","addToSet","rename","bit","max","min","expr","$expr","jsonSchema","schema","$jsonSchema","$search","$language","language","$caseSensitive","caseSensitive","$diacriticSensitive","diacriticSensitive","AggregationOperator","ceil","divide","exp","ln","log10","multiply","pow","sqrt","subtract","trunc","arrayElemAt","arrayToObject","concatArrays","indexOfArray","range","reverseArray","zip","cmp","cond","ifNull","switch","dateFromParts","dateFromString","dayOfMonth","dayOfWeek","dayOfYear","isoDayOfWeek","isoWeek","isoWeekYear","millisecond","minute","month","second","hour","week","year","literal","mergeObjects","objectToArray","allElementsTrue","anyElementTrue","setDifference","setEquals","setIntersection","setIsSubset","setUnion","dateToString","indexOfBytes","indexOfCP","strLenBytes","strLenCP","strcasecmp","substrBytes","substrCP","toLower","toUpper","meta","avg","first","last","stdDevPop","stdDevSamp","sum","let","ProjectionOperator","ServerDate","$tcb_server_date","ServerDateConstructor","opt","regexp","RegExpConstructor","Transaction","commited","inited","init","collection","collName","getTransactionId","getRequestMethod","commit","rollback","customRollbackRes","abortReason","startTransaction","transaction","runTransaction","times","callbackRes","error_1","throwWithRollback","ObjectId","ObjectIdConstructor","Geo","serverDate","logicCommand","updateCommand","queryCommand","originalSend","createCollection","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","prop","toStringTag","__webpack_exports__"],"sourceRoot":""}