{"version":3,"file":"2773.57cecb5954313c35dfc2.js","mappings":"oKAkBO,MAAMA,EAA0BC,GAAU,CAC/C,MAAMC,EAAaC,EAA8BF,CAAK,EAChDG,EAAWC,EAAuBH,EAAYD,CAAK,EAEzD,OACE,gBAAC,cAAW,CAAC,MAAM,oBAAoB,cAAY,gCACjD,gBAAC,MACC,MAAM,OACN,SAAU,CAAC,CAAE,MAAAK,CAAM,IAAML,EAAM,SAASK,CAAM,EAC9C,MAAOF,EACP,QAAS,CACP,CACE,MAAO,qBACP,QAASH,EAAM,uBACjB,EACA,CACE,MAAO,eACP,SAAU,GACV,QAASC,CACX,CACF,EACA,YAAY,iBACZ,QAAS,GAAGD,EAAM,0BAClB,cAAc,MAChB,CACF,CAEJ,EAEME,EAAgC,CAAC,CAAE,iBAAAI,CAAiB,IAA6C,CACrG,MAAMC,EAAYD,GAAkB,UAC9BE,EAAaF,GAAkB,WAErC,SAAO,WAAQ,IACT,CAACC,GAAa,CAACC,EACV,CAAC,KAGH,MAA8BD,EAAyBC,CAAwB,EAAE,IAAKC,IAAO,CAClG,GAAGA,EACH,MAAOA,EAAE,IACX,EAAE,EACD,CAACF,EAAWC,CAAU,CAAC,CAC5B,EAEMJ,EAAyB,CAACH,EAA4CD,OACnE,WAAQ,IACM,CAAC,GAAGC,EAAY,GAAGD,EAAM,uBAAuB,EACjD,KAAMU,GAAMA,EAAE,QAAUV,EAAM,kBAAkB,EACjE,CAACC,EAAYD,EAAM,mBAAoBA,EAAM,uBAAuB,CAAC,C,yGCvDnE,MAAMW,EAAoC,CAAC,CAAE,MAAAC,EAAO,MAAAP,EAAQ,GAAI,SAAAQ,CAAS,IAAM,CACpF,KAAM,CAACC,EAAOC,CAAQ,KAAI,YAASV,GAAS,EAAE,EAExCW,KAAoB,YAASH,EAAU,GAAI,EAEjD,OAAAA,EAAYI,GAAW,CACrBF,EAASE,EAAE,OAAO,KAAK,EACvBD,EAAkBC,EAAE,OAAO,KAAK,CAClC,EAGE,gBAAC,cAAW,CAAC,MAAM,YACjB,gBAAC,IAAK,CAAC,GAAI,GAAGL,aAAkB,MAAOE,EAAO,SAAAD,CAAA,CAAoB,CACpE,CAEJ,C,sHCHO,MAAMK,EAAuB,CAAC,CACnC,MAAAN,EACA,wBAAAO,EACA,SAAAN,EACA,MAAAO,EACA,eAAAC,EACA,WAAAC,EACA,iBAAAhB,EACA,aAAAiB,CACF,IAAM,CACJ,MAAMC,KAAiB,WAAQ,OAAM,MAAqBH,EAAgBC,CAAU,EAAG,CAACD,EAAgBC,CAAU,CAAC,EACnH,OACE,gBAAC,mBAAgB,KACf,gBAAC,eACC,MAAM,qBACN,QAAQ,kMAER,gBAAC,KACC,QAAS,GAAGV,uBACZ,wBAAAO,EACA,MAAAC,EACA,SAAWK,GAAMZ,EAAS,CAAE,GAAGO,EAAO,GAAGK,CAAE,CAAC,EAC5C,iBAAAnB,EACA,aAAAiB,CAAA,CACF,CACF,EACA,gBAAC,cAAW,CAAC,MAAM,mBAAmB,QAASC,CAAA,EAC7C,gBAAC,KACC,QAAS,GAAGZ,qBACZ,wBAAAO,EACA,QAASC,EAAM,gBACf,SAAWM,GAAWb,EAAS,CAAE,GAAGO,EAAO,gBAAiBM,CAAO,CAAC,EACpE,gBAAiB,KACnB,CACF,CACF,CAEJ,C,qFC5CO,MAAMC,EAA+B,CAAC,CAC3C,QAAAC,EACA,MAAAR,EACA,wBAAAD,EACA,SAAAN,EACA,iBAAAP,EACA,aAAAiB,CACF,IAAM,CACJ,KAAM,CAAE,iBAAkBM,CAAI,EAAIT,EAClC,GAAI,CAAE,UAAAb,EAAW,WAAAC,CAAW,EAAIF,GAAoB,CAAC,EAErD,KAAM,CAAE,iBAAAwB,EAAkB,aAAAC,CAAa,KAAI,WACzC,OAAM,MAAuBxB,EAAWC,EAAYqB,EAAKN,CAAY,EACrE,CAAChB,EAAWC,EAAYqB,EAAKN,CAAY,CAC3C,EAEA,OACE,gBAAC,MACC,SAAU,CAAC,CAAE,MAAAlB,CAAM,IAAMQ,EAAS,CAAE,GAAGO,EAAO,iBAAkBf,CAAO,CAAC,EACxE,MAAO,CAAC,GAAG0B,EAAc,GAAGZ,CAAuB,EAAE,KAAMT,GAAMA,EAAE,QAAUoB,CAAgB,EAC7F,QAAS,CACP,CACE,MAAO,qBACP,QAASX,CACX,EACA,CACE,MAAO,oBACP,SAAU,GACV,QAASY,CACX,CACF,EACA,YAAY,mBACZ,QAAAH,EACA,cAAc,MAChB,CAEJ,C,sHChCO,MAAMI,EAAoC,CAAC,CAChD,MAAApB,EACA,OAAQqB,EAAW,CAAC,EACpB,MAAAb,EACA,SAAAP,EACA,oBAAAqB,EACA,iBAAA5B,CACF,IAAM,CACJ,MAAM6B,KAAU,WACd,IAAM,CAACD,EAAqB,MAAG,MAAuB,CAAC,GAAGD,EAAU,GAAG,IAAa,CAAC,CAAC,EACtF,CAACA,EAAUC,CAAmB,CAChC,EAEA,OACE,gBAAC,mBAAgB,KACf,gBAAC,eACC,MAAM,WACN,QAAQ,qTAER,gBAAC,MACC,QAAS,GAAGtB,aACZ,MAAM,OACN,YAAY,eACZ,QAAAuB,EACA,MAAOf,EAAM,UAAY,CAAC,EAC1B,SAAWe,GAAY,CACrBtB,EAAS,CAAE,GAAGO,EAAO,SAAUe,EAAQ,IAAKC,GAAMA,EAAE,KAAM,CAAE,CAAC,CAC/D,EACA,cAAc,MAChB,CACF,EACA,gBAAC,KACC,iBAAA9B,EACA,wBAAyB4B,EAAoB,QAC7C,mBAAoBd,EAAM,mBAC1B,SAAUA,EAAM,UAAY,CAAC,EAC7B,SAAWiB,GAAuBxB,EAAS,CAAE,GAAGO,EAAO,mBAAAiB,CAAmB,CAAC,EAC3E,MAAAzB,CAAA,CACF,CACF,CAEJ,C,sHCxCA,MAAM0B,EAAmB,IACnBC,EAAoB,MAEpBC,EAAwBC,GAC5BA,EAAQ,QAAQ,CAAC,CAAE,IAAAC,EAAK,SAAAC,EAAU,MAAAtC,EAAO,UAAAuC,CAAU,IAAM,CAACF,EAAKC,EAAUtC,EAAOuC,CAAS,CAAC,EAAE,MAAM,EAAG,EAAE,EAEnGC,EAAY,CAAC,IAAK,KAAM,KAAM,KAAK,EAAE,IAAI,GAAQ,EAIjDC,EAAsB,CAAC,aAAa,EAE7BC,EAAwC,CAAC,CACpD,OAAAC,EAAS,CAAC,EACV,QAASC,EACT,SAAUC,EACV,oBAAAhB,CACF,IAAM,CACJ,MAAMiB,KAAuB,MAAqBF,CAAW,EACvDR,EAAUU,EAAW,OAAO,CAAC,CAAE,IAAAT,CAAI,IAAM,CAACI,EAAoB,SAASJ,CAAG,CAAC,EAC3EU,EAAmBD,EAAW,OAAO,CAAC,CAAE,IAAAT,CAAI,IAAMI,EAAoB,SAASJ,CAAG,CAAC,EAEnFP,KAAU,WACd,IAAM,CAACD,EAAqB,MAAG,MAAuB,OAAO,KAAKc,CAAM,CAAC,CAAC,EAC1E,CAACA,EAAQd,CAAmB,CAC9B,EAEMmB,EAAa,CAAC,CAAE,IAAAX,EAAM,GAAI,MAAArC,EAAQ,EAAG,IAAuB,CAE7C8B,EAAQ,KAAMmB,GAC3BA,EAAG,QACEnB,EAAQ,KAAMoB,GAAQA,EAAI,QAAUb,CAAG,EAEzCY,EAAG,QAAUZ,CACrB,GAECP,EAAQ,KAAK,CAAE,MAAOO,EAAK,MAAOA,CAAI,CAAC,EAGzC,MAAMc,EAAeR,EAAO,eAAeN,CAAG,EAC1C,CAACR,EAAqB,GAAGc,EAAON,CAAG,EAAE,IAAI,GAAQ,CAAC,EAClD,CAACR,CAAmB,EAExB,OADqBsB,EAAa,KAAMF,GAAOA,EAAG,QAAUjD,CAAK,GAE/DmD,EAAa,KAAK,CAAE,MAAOnD,EAAO,MAAAA,CAAM,CAAC,EAGpC,CAAE,QAAA8B,EAAS,aAAAqB,CAAa,CACjC,EAEM3C,EAAY4C,GAAkC,CAClD,MAAMhB,EAAUgB,EAAM,OAAOL,CAAgB,EAAE,IAAI,CAAC,CAAE,IAAAV,EAAK,SAAAC,EAAU,MAAAtC,EAAO,UAAAuC,CAAU,KAAO,CAC3F,IAAKF,GAAO,GACZ,SAAUC,GAAYL,EACtB,MAAOjC,GAAS,GAChB,UAAWuC,GAAaL,CAC1B,EAAE,EACFW,EAAUV,EAAqBC,CAAO,CAAC,CACzC,EAEMiB,EAAa,CAACC,EAAuBC,EAAsCC,IAA6B,CAC5G,KAAM,CAAE,IAAAnB,EAAM,GAAI,SAAAC,EAAWL,EAAkB,MAAAjC,EAAQ,GAAI,UAAAuC,EAAYL,CAAkB,EAAIoB,EACvF,CAAE,QAAAxB,EAAS,aAAAqB,CAAa,EAAIH,EAAWM,CAAI,EAEjD,OACE,gBAAC,KAAe,CAAC,QAAQ,KAAK,MAAM,QAClC,gBAAC,MACC,aAAW,mBACX,kBAAoBG,GAAM,kBAAkBA,IAC5C,iBAAgB,GAChB,MAAOpB,EACP,QAASP,EACT,SAAU,CAAC,CAAE,MAAOO,EAAM,EAAG,IAAMkB,EAAa,CAAE,IAAAlB,EAAK,SAAAC,EAAU,MAAAtC,EAAO,UAAAuC,CAAU,CAAC,EACrF,EACA,gBAAC,MACC,MAAOD,EACP,QAASE,EACT,SAAU,CAAC,CAAE,MAAOF,EAAWL,CAAiB,IAAMsB,EAAa,CAAE,IAAAlB,EAAK,SAAAC,EAAU,MAAAtC,EAAO,UAAAuC,CAAU,CAAC,EACxG,EACA,gBAAC,MACC,aAAW,qBACX,YAAY,mBACZ,kBAAoBkB,GAAM,oBAAoBA,IAC9C,iBAAgB,GAChB,MAAAzD,EACA,QAASmD,EACT,SAAU,CAAC,CAAE,MAAAnD,EAAQ,EAAG,IAAMuD,EAAa,CAAE,IAAAlB,EAAK,SAAAC,EAAU,MAAAtC,EAAO,UAAAuC,CAAU,CAAC,EAChF,EACA,gBAAC,kBAAe,CAAC,aAAW,SAAS,KAAK,QAAQ,QAAQ,YAAY,QAASiB,EAAc,KAAK,QAAS,EAC7G,CAEJ,EAEA,OACE,gBAAC,YAAS,KACR,gBAAC,eACC,MAAM,SACN,QAAQ,kMAER,gBAAC,aAAU,CAAC,MAAOpB,EAAS,WAAAiB,EAAwB,SAAA7C,CAAA,CAAoB,CAC1E,CACF,CAEJ,C,0ECnHO,SAASkD,EAAe,CAAE,MAAA3C,EAAO,SAAAP,EAAU,WAAAmD,CAAW,EAAmC,CAC9F,MAAMC,EAAaC,GAAe,CAC5BA,EAAM,MAAQ,UAAYA,EAAM,UAAYA,EAAM,WACpDA,EAAM,eAAe,EACrBF,EAAW,EAEf,EAEA,OACE,gCACE,gBAAC,KACC,KAAK,QACL,UAAU,oBACV,MAAO5C,EACP,KAAM,GACN,YAAY,4DACZ,OAAQ4C,EACR,SAAW/C,GAAMJ,EAASI,EAAE,cAAc,KAAK,EAC/C,UAAAgD,CAAA,CACF,CACF,CAEJ,C,0ICfO,MAAME,EAAwC,CAAC,CAAE,MAAAvD,EAAO,SAAAC,EAAU,YAAAuD,EAAa,oBAAAlC,CAAoB,IAEtG,gBAAC,YAAS,KACR,gBAAC,eACC,MAAM,eACN,QAAS,GAAGtB,iBACZ,QACE,gCAAE,OACI,gBAAC,YAAK,cAAY,EAAO,2GAE/B,GAGF,gBAAC,KAAe,KACd,gBAACyD,EAAA,GACC,cAAa,GAAGzD,wBAChB,MAAOwD,IAAgB,WACvB,SAAWnD,GAAMJ,EAASI,EAAE,cAAc,QAAU,GAAK,UAAU,EACrE,EACA,gBAAC,MACC,QAAS,GAAGL,iBACZ,wBAAyBsB,EAAoB,QAC7C,QAASkC,EACT,SAAAvD,EACA,SAAUuD,IAAgB,WAC1B,gBAAiB,KACnB,CACF,CACF,CACF,E,0BCjBG,MAAME,EAAoFC,IAAgB,CAC/G,YAAaA,EAAW,kBAAkB,EAC1C,mBAAoB,cACpB,gBAAiB,wBACjB,iBAAkB,gBAClB,SAAU,CAAC,EACX,QAAS,CAAC,CACZ,GAEaC,EAAsFD,IAAgB,CACjH,YAAaA,EAAW,kBAAkB,EAC1C,MAAO,EACT,GAEA,SAASE,EAAO,CACd,MAAA7D,EACA,MAAAQ,EACA,WAAAE,EACA,SAAUoD,EACV,WAAAV,EACA,eAAA3C,EACA,oBAAAa,CACF,EAAmC,CACjC,MAAMyC,KAAyB,eAC5BC,GAAmC,CAClCF,EAAc,CAAE,GAAGtD,EAAO,eAAAwD,CAAe,CAAC,EAC1CZ,EAAW,CACb,EACA,CAACU,EAAeV,EAAY5C,CAAK,CACnC,EAEMyD,KAA0B,eAC7BC,GAAqC,CACpCJ,EAAc,CAAE,GAAGtD,EAAO,gBAAA0D,CAAgB,CAAC,EAC3Cd,EAAW,CACb,EACA,CAACU,EAAeV,EAAY5C,CAAK,CACnC,EAEA,sBAAU,IAAM,CACVA,EAAM,YAAc,uBAA8B,CAACA,EAAM,gBAC3DuD,EAAuBL,EAAsBhD,CAAU,CAAC,EAEtDF,EAAM,YAAc,wBAA+B,CAACA,EAAM,iBAC5DyD,EAAwBL,EAAuBlD,CAAU,CAAC,CAE9D,EAAG,CACDqD,EACAE,EACAzD,EAAM,UACNA,EAAM,eACNA,EAAM,gBACNE,CACF,CAAC,EAGC,gBAAC,aAAU,KACR,CAAC,sBAA4B,eAAoB,EAAE,SAASF,EAAM,SAAS,GAAKA,EAAM,gBACrF,gBAAC2D,EAAA,GACC,MAAAnE,EACA,oBAAAsB,EACA,eAAAb,EACA,SAAUsD,EACV,WAAArD,EACA,MAAOF,EAAM,eACb,QAASA,EAAM,QACf,gBAAkB4D,GAAoBN,EAAc,CAAE,GAAGtD,EAAO,QAAA4D,CAAQ,CAAC,EAC3E,EAGD5D,EAAM,YAAc,wBAA+BA,EAAM,iBACxD,gCACE,gBAAC2C,EAAA,GACC,SAAWtC,GAAcoD,EAAwB,CAAE,GAAGzD,EAAM,gBAAkB,MAAOK,CAAE,CAAC,EACxF,WAAAuC,EACA,MAAO5C,EAAM,gBAAgB,MAC9B,EACD,gBAAC+C,EAAA,CACC,SAAWC,GAAwBS,EAAwB,CAAE,GAAGzD,EAAM,gBAAkB,YAAAgD,CAAY,CAAC,EACrG,YAAahD,EAAM,gBAAgB,YACnC,MAAAR,EACA,oBAAAsB,CAAA,CACF,CACF,CAEJ,CAEJ,CAEO,MAAM+C,EAAoB,OAAWR,CAAM,C,0ECpG3C,SAASS,EAAa,CAC3B,QAAAtD,EACA,wBAAAT,EACA,SAAAN,EACA,QAAAsE,EACA,SAAAC,EACA,gBAAAC,CACF,EAAU,CACR,MAAMlD,KAAU,WACd,IACEkD,EAAgB,IAAKC,IAAQ,CAC3B,GAAGA,EACH,MAAOA,EAAG,IACZ,EAAE,EACJ,CAACD,CAAe,CAClB,EACME,KAAiB,WAAQ,IAAMpD,EAAQ,OAAQmD,GAAO,CAACA,EAAG,MAAM,EAAG,CAACnD,CAAO,CAAC,EAElF,OACE,gBAAC,MACC,MAAM,OACN,SAAU,CAAC,CAAE,MAAA9B,CAAM,IAAMQ,EAASR,CAAM,EACxC,MAAO,CAAC,GAAG8B,EAAS,GAAGhB,CAAuB,EAAE,KAAMT,GAAMA,EAAE,QAAUyE,CAAO,EAC/E,QAAS,CACP,CACE,MAAO,qBACP,QAAShE,CACX,EACA,CACE,MAAO,eACP,SAAU,GACV,QAASoE,CACX,CACF,EACA,YAAY,gBACZ,QAAA3D,EACA,SAAAwD,EACA,iBAAgB,GAChB,cAAc,MAChB,CAEJ,C,0GClDA,MAAMI,EAAc,CAAE,MAAO,OAAQ,MAAO,SAAsB,EAQrDC,EAAyC,CAAC,CAAE,MAAArE,EAAO,iBAAAd,EAAkB,SAAAO,CAAS,IAAM,CAC/F,MAAMsB,EAAUuD,EAAWpF,CAAgB,EAE3C,OACE,gBAAC,eACC,MAAM,iBACN,QAAQ,sWAER,gBAAC,KACC,SAAWD,GAA4B,CACrC,KAAM,CAAE,iBAAkBwB,CAAI,EAAIT,EAC5B,CAAE,UAAAb,EAAW,WAAAC,CAAW,EAAIF,GAAoB,CAAC,EACjD,CAAE,iBAAAwB,CAAiB,KAAI,MAAuBvB,EAAWC,EAAYqB,EAAKxB,CAAK,EACrFQ,EAAS,CAAE,GAAGO,EAAO,aAAcf,EAAO,iBAAAyB,CAAiB,CAAC,CAC9D,EACA,MAAOV,EAAM,cAAgB,UAC7B,QAAAe,CAAA,CACF,CACF,CAEJ,EAEMuD,EAAcpF,GAAkF,CACpG,MAAME,EAAaF,GAAkB,WAC/BC,EAAYD,GAAkB,UAEpC,SAAO,WAAQ,IAAM,CACnB,GAAI,CAACE,GAAcA,IAAe,YAAoBD,IAAc,kBAClE,MAAO,CAACiF,CAAW,EAGrB,MAAMrD,EAAU,CACdqD,EACA,CACE,MAAO,OACP,MAAO,UACP,YAAa,iEACf,CACF,EAEA,OAAOhF,IAAe,gBAClB,CACE,GAAG2B,EACH,CACE,MAAO,QACP,MAAO,WACP,YAAa,qEACf,CACF,EACAA,CACN,EAAG,CAAC3B,EAAYD,CAAS,CAAC,CAC5B,C,qFCpDO,SAASoF,EAAQ,CAAE,MAAA/E,EAAO,YAAAgF,EAAa,WAAAtE,EAAY,SAAAT,EAAU,wBAAAM,CAAwB,EAAU,CACpG,KAAM,CAAC0E,EAAUC,CAAW,KAAI,YAAyC,CAAC,CAAC,KAC3E,aAAU,IAAM,CACdxE,EAAW,YAAY,EAAE,KAAMuE,GAAaC,EAAYD,CAAQ,CAAC,CACnE,EAAG,CAACvE,CAAU,CAAC,EAEf,MAAMyE,KAAgC,WACpC,IAAM,CACJF,EACA,CACE,MAAO,qBACP,QAAS1E,CACX,EACA,GAAG0E,CACL,EACA,CAACA,EAAU1E,CAAuB,CACpC,EAEA,OACE,gBAAC,cAAW,CAAC,MAAM,WACjB,gBAAC,MACC,MAAM,OACN,iBAAgB,GAChB,kBAAoB2C,GAAM,gBAAgBA,IAC1C,SAAU,CAAC,CAAE,MAAAzD,CAAM,IAAMQ,EAASR,CAAM,EACxC,QAAS0F,EACT,MAAO,CAAE,MAAOH,EAAa,MAAOA,CAAY,EAChD,YAAY,iBACZ,QAAS,GAAGhF,WAAA,CACd,CACF,CAEJ,C,2GCnCO,MAAMoF,EAAehG,GAAkC,CAC5D,KAAM,CAAE,MAAAoB,EAAO,SAAAP,EAAU,WAAAmD,CAAW,EAAIhE,EAClC,CAAE,UAAAiG,CAAU,EAAI7E,EAEtB,OACE,gBAAC,eAAY,KACX,gBAAC,gBACC,MAAM,aACN,QAAS,KACT,MAAO6E,EACP,SAAU,CAAC,CAAE,MAAA5F,CAAM,IAAM,CACvBQ,EAAS,CAAE,GAAGO,EAAO,UAAWf,CAAO,CAAC,EACxC2D,EAAW,CACb,EACF,EACA,gBAAC,WAAQ,CAAC,KAAM,EAAG,CACrB,CAEJ,E,0BChBO,MAAMkC,EAAelG,GAAiB,CAC3C,KAAM,CAAE,WAAAsB,EAAY,MAAO6E,EAAM,WAAAnC,EAAY,SAAAnD,CAAS,EAAIb,EAEpD,CAACoG,EAAUC,CAAW,KAAI,YAAS,EAAK,EACxCjF,KAAQ,WAAQ,IACfgF,EAIED,GAHLE,EAAY,EAAI,EACT/E,EAAW,aAAa6E,CAAI,GAGpC,CAACA,EAAM7E,EAAY8E,CAAQ,CAAC,EAEzBE,EAAW,CAAE,MAAG,KAAgBhF,CAAU,EAAG,GAAGF,EAAM,QAAS,EAC/DmF,EAAoB9E,GAAgB,CACxCZ,EAAS,CAAE,GAAGO,EAAO,SAAUK,CAAE,CAAC,EAClCuC,EAAW,CACb,EAGM3C,GADOrB,EAAM,MAAM,OAAO,OAASA,EAAM,MAAM,OAAO,CAAC,EAAE,KAAO,CAAC,IAC1C,QAAU,CAAC,EAClCkC,EAAsB,CAC1B,MAAO,qBACP,SAAU,GACV,QAASZ,EAAW,aAAa,EAAE,IAAI,GAAQ,CACjD,KAGA,aAAU,IAAM,CACT,OAAO,OAAO,IAAS,EAAE,SAASF,EAAM,SAAS,GACpDP,EAAS,CAAE,GAAGO,EAAO,UAAW,qBAA2B,CAAC,CAEhE,CAAC,EACD,MAAM6E,EAAY7E,EAAM,UAExB,OACE,gBAAC,aAAU,KACT,gBAAC4E,EAAW,CAAC,MAAA5E,EAAc,SAAAP,EAAoB,WAAAmD,CAAA,CAAwB,EACtEiC,IAAc,UACb,gBAAC,MACC,MAAO7E,EAAM,MACb,oBAAAc,EACA,eAAAb,EACA,SAAAR,EACA,WAAAmD,EACA,WAAA1C,EACA,MAAAF,CAAA,CACF,EAGD6E,IAAc,UACb,gBAAC,MACC,MAAO7E,EAAM,MACb,oBAAAc,EACA,eAAAb,EACA,SAAUkF,EACV,WAAAvC,EACA,WAAA1C,EACA,MAAOgF,EACP,QAASlF,EAAM,QACf,gBAAkB4D,GAAoBnE,EAAS,CAAE,GAAGO,EAAO,QAAA4D,CAAQ,CAAC,EACtE,CAEJ,CAEJ,C,yIChEO,MAAMwB,EAAuB,CAAC,CAAE,MAAA5F,EAAO,QAAAuE,EAAS,wBAAAhE,EAAyB,SAAAN,CAAS,IAAa,CACpG,MAAMsB,EAAU,SAAsBsE,IAAQ,CAC5C,GAAGA,EACH,MAAOA,EAAG,IACZ,EAAE,EACEtB,GAAW,CAAChD,EAAQ,KAAMmB,GAAOA,EAAG,QAAU6B,CAAO,GACvDhD,EAAQ,KAAK,CAAE,MAAOgD,EAAS,KAAMA,EAAS,MAAOA,EAAS,OAAQ,EAAM,CAAC,EAE/E,MAAMI,EAAiBpD,EAAQ,OAAQsE,GAAO,CAACA,EAAG,MAAM,EAExD,OACE,gBAAC,cAAW,CAAC,MAAM,kBAAkB,QAAS,GAAG7F,mBAAA,EAC/C,gBAAC8F,EAAA,IACC,QAAS,GAAG9F,oBACZ,MAAM,OACN,iBAAgB,GAChB,MAAO,CAAC,GAAGuB,EAAS,GAAGhB,CAAuB,EAAE,KAAMT,GAAMA,EAAE,QAAUyE,CAAO,EAC/E,QAAS,CACP,CACE,MAAO,qBACP,QAAShE,CACX,EACA,CACE,MAAO,qBACP,SAAU,GACV,QAASoE,CACX,CACF,EACA,SAAU,CAAC,CAAE,MAAAlF,CAAM,IAAMQ,EAASR,CAAM,EAC1C,CACF,CAEJ,E,0BC9BO,MAAMsG,EAAM,CAAC,CAAE,MAAA/F,EAAO,MAAAQ,EAAO,wBAAAD,EAAyB,SAAAN,EAAU,WAAAS,CAAW,IAAa,CAC7F,KAAM,CAACsF,EAAMC,CAAO,KAAI,YAAyC,CAAC,CAAC,EAC7D,CAAE,YAAAjB,EAAa,UAAAkB,CAAU,EAAI1F,EAEnC,sBAAU,IAAM,CACV,CAACwE,GAAe,CAACkB,GAIrBxF,EAAW,0BAA0BsE,EAAakB,CAAS,EAAE,KAAMC,GAA2C,CAC5GF,EAAQ,CACN,CACE,MAAO,qBACP,QAAS1F,CACX,EACA,GAAG4F,CACL,CAAC,CACH,CAAC,CACH,EAAG,CAACzF,EAAYsE,EAAakB,EAAW3F,CAAuB,CAAC,EAG9D,gBAAC,cAAW,CAAC,MAAM,OACjB,gBAACuF,EAAA,IACC,QAAS,GAAG9F,QACZ,MAAM,OACN,iBAAgB,GAChB,MAAOQ,GAAO,OAAS,CAAE,MAAOA,GAAO,MAAO,MAAOA,GAAO,SAAWA,GAAO,KAAM,EACpF,YAAY,aACZ,QAASwF,EACT,SAAU,MAAO,CAAE,MAAOI,EAAQ,GAAI,MAAOC,EAAU,EAAG,IAAM,CAE9D,MAAMC,GADO,MAAM5F,EAAW,0BAA0BsE,EAAakB,CAAS,GAC7D,KAAK,CAAC,CAAE,MAAAzG,CAAM,IAAMA,IAAUiB,EAAW,YAAY,QAAQ0F,CAAK,CAAC,EACpFnG,EAAS,CAAE,GAAGO,EAAO,MAAA4F,EAAO,QAAAC,EAAS,KAAMC,GAAK,IAAK,CAAC,CACxD,EACF,CACF,CAEJ,ECpCaC,EAAW,CAAC,CAAE,MAAAvG,EAAO,MAAAQ,EAAO,wBAAAD,EAAyB,SAAAN,EAAU,WAAAS,CAAW,IAEnF,gBAAC,cAAW,CAAC,MAAM,WAAW,QAAS,GAAGV,gBAAA,EACxC,gBAAC8F,EAAA,IACC,QAAS,GAAG9F,iBACZ,MAAM,OACN,iBAAgB,GAChB,MAAO,CAAC,GAAG,KAAW,GAAGO,CAAuB,EAAE,KAAMT,GAAMA,EAAE,QAAUU,GAAO,YAAkB,EACnG,QAAS,CACP,CACE,MAAO,qBACP,QAASD,CACX,EACA,GAAG,IACL,EACA,SAAU,CAAC,CAAE,MAAOiG,CAAa,IAAMvG,EAAS,CAAE,GAAGO,EAAO,aAAcgG,GAAgB,EAAG,CAAC,EAChG,CACF,EClBSC,EAAU,CAAC,CAAE,MAAAzG,EAAO,MAAAQ,EAAO,wBAAAD,EAAyB,SAAAN,EAAU,WAAAS,CAAW,IAAa,CACjG,KAAM,CAACgG,EAAUC,CAAW,KAAI,YAAyC,CAAC,CAAC,EACrE,CAAE,YAAA3B,CAAY,EAAIxE,EAExB,sBAAU,IAAM,CACTwE,GAILtE,EAAW,eAAesE,CAAW,EAAE,KAAM0B,GAA6C,CACxFC,EAAY,CACV,CACE,MAAO,qBACP,QAASpG,CACX,EACA,GAAGmG,CACL,CAAC,CACH,CAAC,CACH,EAAG,CAAChG,EAAYsE,EAAazE,CAAuB,CAAC,EAGnD,gBAAC,cAAW,CAAC,MAAM,WACjB,gBAACuF,EAAA,IACC,QAAS,GAAG9F,gBACZ,MAAM,OACN,iBAAgB,GAChB,MAAOQ,GAAO,WAAa,CAAE,MAAOA,GAAO,UAAW,MAAOA,GAAO,aAAeA,GAAO,SAAU,EACpG,YAAY,iBACZ,QAASkG,EACT,SAAU,CAAC,CAAE,MAAOR,EAAY,GAAI,MAAOU,EAAc,EAAG,IAC1D3G,EAAS,CAAE,GAAGO,EAAO,UAAA0F,EAAW,YAAAU,EAAa,MAAO,EAAG,CAAC,EAE5D,CACF,CAEJ,ECtBaC,EAAqElD,IAAgB,CAChG,YAAaA,EAAW,kBAAkB,EAC1C,gBAAiB,wBACjB,iBAAkB,gBAClB,QAAS,GACT,aAAc,oBACd,UAAW,GACX,YAAa,GACb,MAAO,GACP,QAAS,GACT,eAAgB,EAClB,GAEO,SAASmD,EAAe,CAC7B,MAAA9G,EACA,MAAAQ,EACA,WAAAE,EACA,SAAAT,EACA,oBAAAqB,EACA,eAAAb,EACA,QAAA2D,EACA,gBAAA2C,CACF,EAAmC,CACjC,MAAMnG,KAAiB,WAAQ,OAAM,MAAqBH,EAAgBC,CAAU,EAAG,CAACD,EAAgBC,CAAU,CAAC,EACnH,OACE,gCACE,gBAAC,YAAS,KACR,gBAACqE,EAAA,GACC,MAAA/E,EACA,wBAAyBsB,EAAoB,QAC7C,YAAad,EAAM,YACnB,WAAAE,EACA,SAAWsE,GAAgB/E,EAAS,CAAE,GAAGO,EAAO,YAAAwE,CAAY,CAAC,EAC/D,EACA,gBAACyB,EAAA,CACC,MAAAzG,EACA,WAAAU,EACA,wBAAyBY,EAAoB,QAC7C,MAAAd,EACA,SAAAP,CAAA,CACF,EACA,gBAAC8F,EAAA,CACC,MAAA/F,EACA,WAAAU,EACA,wBAAyBY,EAAoB,QAC7C,MAAAd,EACA,SAAAP,CAAA,CACF,EACA,gBAACsG,EAAA,CACC,MAAAvG,EACA,WAAAU,EACA,wBAAyBY,EAAoB,QAC7C,MAAAd,EACA,SAAAP,CAAA,CACF,EACCO,EAAM,eAAiB,MACtB,gBAACoF,EAAA,CACC,MAAA5F,EACA,SAAWgH,GAAmB/G,EAAS,CAAE,GAAGO,EAAO,eAAAwG,CAA+B,CAAC,EACnF,QAASxG,EAAM,eACf,wBAAyBc,EAAoB,QAC/C,EAGF,gBAAC,mBAAgB,KACf,gBAAC,cAAW,CAAC,MAAM,mBAAmB,QAASV,CAAA,EAC7C,gBAAC0D,EAAA,GACC,QAAS,GAAGtE,qBACZ,wBAAyBsB,EAAoB,QAC7C,QAASd,EAAM,gBACf,SAAWM,GAAWb,EAAS,CAAE,GAAGO,EAAO,gBAAiBM,CAAO,CAAC,EACpE,gBAAiB,KACnB,CACF,CACF,EAEA,gBAACf,EAAA,EAAO,CAAC,MAAAC,EAAc,MAAOoE,EAAS,SAAU2C,CAAA,CAAiB,CACpE,CACF,CAEJ,C,6OC/EO,SAASlD,EAAO,CACrB,MAAA7D,EACA,SAAAC,EACA,WAAAS,EACA,MAAAF,EACA,oBAAAc,EACA,eAAAb,EACA,QAAA2D,EACA,gBAAA2C,CACF,EAAmC,CACjC,KAAM,CAAC3E,EAAQ6E,CAAS,KAAI,YAA+B,CAAC,CAAC,EACvD,CAACC,EAAmBC,CAAoB,KAAI,YAA6B,CAAC,CAAC,EAC3E,CAACzH,EAAkB0H,CAAmB,KAAI,YAA2B,EACrE,CAACC,EAASC,CAAU,KAAI,YAAyC,CAAC,CAAC,EACnE,CAACZ,EAAUC,CAAW,KAAI,YAAyC,CAAC,CAAC,EACrE,CAACY,GAASC,CAAU,KAAI,YAAiB,EAAE,EAC3C,CAACC,EAAWC,EAAY,KAAI,YAAoB,CAAE,GAAGhH,EAAW,QAAQ,UAAU,CAAE,CAAC,GAE1EiH,GAAoB,CAC/BF,IAAc,OAASA,EAAU,IAAI,OAASE,EAAK,IAAI,MAAQF,EAAU,IAAI,KAAOE,EAAK,IAAI,KAC/FD,GAAa,CAAE,GAAGC,CAAK,CAAC,CAE5B,GAEQjH,EAAW,QAAQ,UAAU,CAAC,EAEtC,MAAMkH,MAAQ,MAAU,EAClBC,MAAe,KAAgBD,EAAK,EAEpCE,MAAc,MAAWC,CAAS,EAElC,CAAE,YAAA/C,EAAa,SAAA3D,GAAU,mBAAAI,EAAmB,EAAIjB,EAChDwH,KAAa,MAAcxH,CAAK,EAChC,CAAE,YAAAyH,CAAY,EAAIvH,EAElBwH,KAA8B,eAClC,CAAChB,EAAuCc,IAC/Bd,EAAkB,KAAMiB,GAAOA,EAAG,OAASF,EAAY,QAAQD,CAAU,CAAC,EAEnF,CAACC,CAAW,CACd,KAEA,aAAU,IAAM,CACVjD,GAAegD,GACjBtH,EACG,UAAUsH,EAAYhI,EAAOgF,EAAa,CAAE,SAAA3D,GAAU,mBAAAI,EAAmB,EAAGgG,CAAS,EACrF,KAAMrF,GAAW6E,EAAU7E,CAAM,CAAC,CAEzC,EAAG,CAAC1B,EAAYW,GAAU2G,EAAYhD,EAAahF,EAAOyB,GAAoBgG,CAAS,CAAC,KAExF,aAAU,IAAM,EACgB,SAAY,CACxC,GAAIzC,EAAa,CACf,MAAMkC,EAAoB,MAAMxG,EAAW,eAAesE,CAAW,EAC/D0B,EAAW0B,GAAgBlB,CAAiB,EAClDC,EAAqBD,CAAiB,EACtCP,EAAYD,CAAQ,CACtB,CACF,GACsB,CACxB,EAAG,CAAChG,EAAYsE,EAAa8C,GAAaD,GAAa,iBAAiB,CAAC,KAEzE,aAAU,IAAM,CAyBd,MAAMR,GAxBkBH,GAA0C,CAChE,MAAMmB,EAA2BH,EAA4BhB,EAAmBc,CAAU,EAC1F,OAAKK,EAIoBnB,EACtB,OAAQoB,GAAMA,EAAE,UAAYD,EAAyB,OAAO,EAC5D,IAAKC,IAAO,CACX,QAASA,EAAE,QACX,MAAOA,EAAE,KACT,MAAOA,EAAE,YACT,UAAW,UAA2B,CACpC,OACE,gBAAC,WACC,gBAAC,OAAI,UAAWR,EAAA,EAAcQ,EAAE,IAAK,EACrC,gBAAC,OAAI,UAAWT,GAAa,mBAAoBS,EAAE,WAAY,CACjE,CAEJ,CACF,EAAE,EAjBK,CAAC,CAmBZ,GAE+BpB,CAAiB,EAC1CK,EAAUF,EAAQ,OAAS,EAAIA,EAAQ,CAAC,EAAE,QAAU,GACpD3H,EAAmBwI,EAA4BhB,EAAmBc,CAAU,EAClFZ,EAAoB1H,CAAgB,EACpC4H,EAAWD,CAAO,EAClBG,EAAWD,CAAO,CACpB,EAAG,CAACL,EAAmBgB,EAA6BF,EAAYF,GAAaD,GAAa,iBAAiB,CAAC,EAE5G,MAAMU,GAAkB,CAAC,CAAE,MAAOhB,CAAQ,IAA+B,CACvE,MAAMF,EAAUH,EACb,OAAQoB,GAAwBA,EAAE,UAAYL,EAAY,QAAQV,CAAO,CAAC,EAC1E,IAAKe,IAAyB,CAC7B,QAASA,EAAE,QACX,MAAOA,EAAE,KACT,MAAOA,EAAE,YACT,YAAaA,EAAE,WACjB,EAAE,EAEJ9H,EAAM,QAAU,CAAC,EAEb6G,EAAQ,OAAS,GAAK,CAACA,EAAQ,KAAMiB,GAAMA,EAAE,QAAUL,EAAY,QAAQD,CAAU,CAAC,GACxFQ,GAAmBnB,EAAQ,CAAC,CAAC,EAC7BG,EAAWD,CAAQ,EACnBD,EAAWD,CAAO,IAElBG,EAAWD,CAAQ,EACnBD,EAAWD,CAAO,EAEtB,EAEMe,GAAmBlB,GAA0C,CACjE,MAAMR,EAAWQ,EAAkB,IAAKoB,IAAO,CAC7C,MAAOA,EAAE,QACT,SAAO,aAAUA,EAAE,gBAAgB,CACrC,EAAE,EAEF,OAAO5B,EAAS,OAAS,KAAI,UAAOA,EAAW5G,GAAMA,EAAE,KAAK,EAAI,CAAC,CACnE,EAEM0I,GAAqB,CAAC,CAAE,MAAA/I,CAAM,IAA+B,CACjE,MAAMC,EAAmBwI,EAA4BhB,EAAmBzH,CAAM,EAC9E2H,EAAoB1H,CAAgB,EACpC,KAAM,CAAE,WAAAE,EAAY,UAAAD,CAAU,EAAID,EAC5BiB,EACJf,IAAe,YAAoBD,IAAc,kBAC7C,UACA,UACA,CAAE,iBAAAuB,CAAiB,KAAI,MAAuBvB,EAAWC,EAAYY,EAAM,iBAAkBG,CAAY,EAG/G,OAAO,OAAOH,EAAO,CACnB,MAAG,MAAsBE,CAAU,EACnC,YAAaF,EAAM,YACnB,QAASA,EAAM,OACjB,CAAC,EACDP,EAAS,CACP,MAAG,MACD,CACE,GAAGO,EACH,iBAAAU,CACF,EACAzB,CACF,EACA,aAAAkB,CACF,CAAC,CACH,EAEA,OACE,gCACE,gBAAC,YAAS,KACR,gBAAC,mBAAgB,KACf,gBAAC,KACC,MAAAX,EACA,wBAAyBsB,EAAoB,QAC7C,YAAA0D,EACA,WAAAtE,EACA,SAAWsE,GAAgB,CACzB/E,EAAS,CAAE,GAAGO,EAAO,YAAAwE,CAAY,CAAC,CACpC,EACF,EAEA,gBAAC,cAAW,CAAC,MAAM,UAAU,MAAM,QACjC,gBAAC,MACC,MAAM,OACN,SAAUuD,GACV,MAAO,CAAC,GAAG7B,EAAU,GAAGpF,EAAoB,OAAO,EAAE,KAAMxB,GAAMA,EAAE,QAAUyH,EAAO,EACpF,QAAS,CACP,CACE,MAAO,qBACP,QAASjG,EAAoB,OAC/B,EACA,GAAGoF,CACL,EACA,YAAY,kBACZ,QAAS,GAAG1G,WAAA,CACd,CACF,EACA,gBAAC,cAAW,CAAC,MAAM,cAAc,MAAM,QACrC,gBAAC,MACC,MAAM,OACN,SAAUwI,GACV,MAAO,CAAC,GAAGnB,EAAS,GAAG/F,EAAoB,OAAO,EAAE,KAAMxB,GAAMA,EAAE,QAAUkI,CAAU,EACtF,QAAS,CACP,CACE,MAAO,qBACP,QAAS1G,EAAoB,OAC/B,EACA,GAAG+F,CACL,EACA,YAAY,gBACZ,QAAS,GAAGrH,iBAAA,CACd,CACF,CACF,CACF,EAEA,gCACE,gBAAC,KACC,OAAAoC,EACA,QAAS5B,EAAM,QACf,SAAWqB,GAAsB5B,EAAS,CAAE,GAAGO,EAAO,QAAAqB,CAAQ,CAAC,EAC/D,oBAAAP,CAAA,CACF,EACA,gBAAC,YAAS,KACR,gBAAC,IAAY,CAAC,iBAAA5B,EAAoC,MAAAc,EAAc,SAAAP,CAAA,CAAoB,EACpF,gBAAC,KACC,MAAAD,EACA,OAAQ,OAAO,KAAKoC,CAAM,EAC1B,MAAA5B,EACA,SAAAP,EACA,oBAAAqB,EACA,iBAAA5B,CAAA,CACF,EACA,gBAAC,KACC,MAAAM,EACA,WAAAU,EACA,wBAAyBY,EAAoB,QAC7C,MAAAd,EACA,eAAAC,EACA,SAAAR,EACA,iBAAAP,EACA,aAAcc,EAAM,aACtB,EACA,gBAAC,IAAO,CAAC,MAAAR,EAAc,MAAOoE,EAAS,SAAU2C,CAAA,CAAiB,CACpE,CACF,CACF,CAEJ,CAEA,MAAMgB,EAAaH,GAAyB;AAAA;AAAA;AAAA;AAAA,WAIjCA,EAAM,OAAO,KAAK;AAAA,EAGhBzD,EAA0B,OAAWN,CAAM,C,uJCjRjD,MAAM4E,EAAkB,IAE3B,gBAAC,OAAI,UAAU,uCACb,gBAAC,WACC,gBAAC,UAAG,yBAAuB,EAC3B,gBAAC,SAAE,0JAE+C,GAClD,EACA,gBAAC,SAAE,oJAGH,EACA,gBAAC,YACE,kBAAuB,eAAa,kBACvC,EACA,gBAAC,SAAE,mBACe,gBAAC,YAAK,wEAAsE,CAC9F,EACA,gBAAC,YAAK,WAAS,EACf,gBAAC,SACC,gBAAC,YAAM,kBAAwB,EAAO,8BACxC,EACA,gBAAC,SACC,gBAAC,YAAM,iBAAuB,EAAO,oEACvC,EACA,gBAAC,SACC,gBAAC,YAAM,iBAAuB,EAAO,qDACvC,EACA,gBAAC,SACC,gBAAC,YAAM,oBAA0B,EAAO,wCAC1C,EACA,gBAAC,SACC,gBAAC,YAAM,6BAAmC,EAAO,0DACnD,EACA,gBAAC,SACC,gBAAC,YAAM,+BAAqC,EAAO,qDACrD,CACF,CACF,E,4FC5BG,MAAMC,EAAkD,CAAC,CAC9D,MAAAC,EACA,SAAA1I,EACA,MAAAR,EACA,QAAA8B,EACA,iBAAAqH,EAAmB,EACrB,IAEI,gBAACC,EAAA,EAAW,CAAC,MAAAF,EAAc,WAAY,IACrC,gBAAC7C,EAAA,IACC,MAAO,GACP,iBAAA8C,EACA,MAAAnJ,EACA,SAAU,CAAC,CAAE,MAAAA,CAAM,IAAMQ,EAASR,CAAM,EACxC,QAAA8B,CAAA,CACF,CACF,E,uLCxBG,MAAMuH,EAAc,GACdC,EAAc,GACdC,EAAoB,GACpBC,EAAe,GACfC,EAAa,CACxB,CAAE,MAAO,kBAAmB,IAAK,oBAAmB,EACpD,CAAE,MAAO,8BAA+B,IAAK,oBAAmB,CAClE,EAEaC,EAAa,CACxB,CACE,KAAM,OACN,MAAO,aACP,WAAY,CACV,WACA,YACA,WACA,kBACA,YACA,4BACA,SACF,EACA,YAAa,CAAC,UAAgB,CAChC,EACA,CACE,KAAM,QACN,MAAO,cACP,WAAY,CAAC,WAAkB,YAAmB,WAAkB,iBAAuB,EAC3F,YAAa,CAAC,gBAAuB,UAAgB,CACvD,EACA,CACE,KAAM,OACN,MAAO,aACP,WAAY,CAAC,WAAkB,YAAmB,UAAgB,EAClE,YAAa,CAAC,gBAAuB,UAAgB,CACvD,EACA,CACE,KAAM,cACN,MAAO,oBACP,WAAY,CAAC,WAAkB,YAAmB,UAAgB,EAClE,YAAa,CAAC,UAAgB,CAChC,EACA,CACE,KAAM,aACN,MAAO,mBACP,WAAY,CACV,WACA,YACA,WACA,kBACA,YACA,4BACA,SACF,EACA,YAAa,CAAC,UAAgB,CAChC,EACA,CACE,KAAM,MACN,MAAO,YACP,WAAY,CAAC,WAAkB,YAAmB,UAAgB,EAClE,YAAa,CAAC,WAAkB,UAAgB,CAClD,EACA,CACE,KAAM,MACN,MAAO,YACP,WAAY,CAAC,WAAkB,YAAmB,UAAgB,EAClE,YAAa,CAAC,WAAkB,UAAgB,CAClD,EACA,CACE,KAAM,OACN,MAAO,aACP,WAAY,CAAC,WAAkB,YAAmB,UAAgB,EAClE,YAAa,CAAC,WAAkB,UAAgB,CAClD,EACA,CACE,KAAM,QACN,MAAO,cACP,WAAY,CAAC,WAAkB,YAAmB,WAAkB,SAAe,EACnF,YAAa,CAAC,WAAkB,UAAgB,CAClD,EACA,CACE,KAAM,MACN,MAAO,YACP,WAAY,CAAC,WAAkB,YAAmB,WAAkB,iBAAuB,EAC3F,YAAa,CAAC,WAAkB,UAAgB,CAClD,EACA,CACE,KAAM,SACN,MAAO,eACP,WAAY,CAAC,WAAkB,YAAmB,UAAgB,EAClE,YAAa,CAAC,WAAkB,UAAgB,CAClD,EACA,CACE,KAAM,aACN,MAAO,mBACP,WAAY,CAAC,SAAe,EAC5B,YAAa,CAAC,UAAgB,CAChC,EACA,CACE,KAAM,cACN,MAAO,oBACP,WAAY,CAAC,SAAe,EAC5B,YAAa,CAAC,UAAgB,CAChC,EACA,CACE,KAAM,gBACN,MAAO,sBACP,WAAY,CAAC,SAAe,EAC5B,YAAa,CAAC,UAAgB,CAChC,EACA,CACE,KAAM,gBACN,MAAO,sBACP,WAAY,CAAC,iBAAuB,EACpC,YAAa,CAAC,WAAkB,UAAgB,CAClD,EACA,CACE,KAAM,gBACN,MAAO,sBACP,WAAY,CAAC,iBAAuB,EACpC,YAAa,CAAC,WAAkB,UAAgB,CAClD,EACA,CACE,KAAM,gBACN,MAAO,sBACP,WAAY,CAAC,iBAAuB,EACpC,YAAa,CAAC,WAAkB,UAAgB,CAClD,EACA,CACE,KAAM,gBACN,MAAO,sBACP,WAAY,CAAC,iBAAuB,EACpC,YAAa,CAAC,WAAkB,UAAgB,CAClD,EACA,CACE,KAAM,iBACN,MAAO,uBACP,WAAY,CAAC,WAAkB,YAAmB,UAAgB,EAClE,YAAa,CAAC,WAAkB,UAAgB,CAClD,CACF,EAEaC,EAAe,CAC1B,CACE,KAAM,OACN,MAAO,cACP,WAAY,CACV,WACA,YACA,WACA,kBACA,UACA,WACF,EACA,YAAa,CAAC,WAAkB,WAAkB,gBAAuB,4BAAkC,CAC7G,EACA,CACE,KAAM,OACN,MAAO,cACP,WAAY,CAAC,WAAkB,YAAmB,WAAkB,iBAAuB,EAC3F,YAAa,CAAC,WAAkB,WAAkB,eAAqB,CACzE,EACA,CACE,KAAM,MACN,MAAO,aACP,WAAY,CAAC,WAAkB,YAAmB,UAAgB,EAClE,YAAa,CAAC,WAAkB,WAAkB,gBAAuB,4BAAkC,CAC7G,EACA,CACE,KAAM,MACN,MAAO,aACP,WAAY,CAAC,WAAkB,YAAmB,UAAgB,EAClE,YAAa,CAAC,WAAkB,WAAkB,gBAAuB,4BAAkC,CAC7G,EACA,CACE,KAAM,MACN,MAAO,aACP,WAAY,CAAC,WAAkB,YAAmB,WAAkB,iBAAuB,EAC3F,YAAa,CAAC,WAAkB,WAAkB,gBAAuB,4BAAkC,CAC7G,EACA,CACE,KAAM,YACN,MAAO,gBACP,WAAY,CAAC,WAAkB,YAAmB,WAAkB,iBAAuB,EAC3F,YAAa,CAAC,WAAkB,WAAkB,gBAAuB,4BAAkC,CAC7G,EACA,CACE,KAAM,QACN,MAAO,eACP,WAAY,CACV,WACA,YACA,WACA,kBACA,UACA,WACF,EACA,YAAa,CAAC,WAAkB,WAAkB,eAAqB,CACzE,EACA,CACE,KAAM,aACN,MAAO,oBACP,WAAY,CAAC,SAAe,EAC5B,YAAa,CAAC,WAAkB,UAAgB,CAClD,EACA,CACE,KAAM,cACN,MAAO,qBACP,WAAY,CAAC,SAAe,EAC5B,YAAa,CAAC,WAAkB,UAAgB,CAClD,EACA,CACE,KAAM,kBACN,MAAO,uBACP,WAAY,CAAC,WAAkB,YAAmB,WAAkB,iBAAuB,EAC3F,YAAa,CAAC,WAAkB,WAAkB,eAAqB,CACzE,EACA,CACE,KAAM,kBACN,MAAO,uBACP,WAAY,CAAC,WAAkB,YAAmB,WAAkB,iBAAuB,EAC3F,YAAa,CAAC,WAAkB,WAAkB,eAAqB,CACzE,EACA,CACE,KAAM,kBACN,MAAO,uBACP,WAAY,CAAC,WAAkB,YAAmB,WAAkB,iBAAuB,EAC3F,YAAa,CAAC,WAAkB,WAAkB,eAAqB,CACzE,EACA,CACE,KAAM,iBACN,MAAO,uBACP,WAAY,CAAC,WAAkB,YAAmB,WAAkB,iBAAuB,EAC3F,YAAa,CAAC,WAAkB,WAAkB,eAAqB,CACzE,CACF,EAQaC,EAAoC,CAC/C,CAAE,KAAM,eAAgB,MAAO,cAAe,EAC9C,CAAE,KAAM,mBAAoB,MAAO,mBAAoB,OAAQ,EAAK,EACpE,CAAE,KAAM,wBAAyB,MAAO,uBAAwB,EAChE,CAAE,KAAM,KAAM,MAAO,MAAO,EAC5B,CAAE,KAAM,KAAM,MAAO,OAAQ,EAC7B,CAAE,KAAM,KAAM,MAAO,OAAQ,EAC7B,CAAE,KAAM,MAAO,MAAO,OAAQ,EAC9B,CAAE,KAAM,MAAO,MAAO,QAAS,EAC/B,CAAE,KAAM,KAAM,MAAO,QAAS,EAC9B,CAAE,KAAM,KAAM,MAAO,QAAS,EAC9B,CAAE,KAAM,KAAM,MAAO,SAAU,EAC/B,CAAE,KAAM,KAAM,MAAO,SAAU,EAC/B,CAAE,KAAM,KAAM,MAAO,UAAW,EAChC,CAAE,KAAM,KAAM,MAAO,UAAW,CAClC,EAEaC,EAAgC,CAC3C,CAAE,KAAM,OAAQ,MAAO,MAAO,EAC9B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,MAAO,MAAO,KAAM,EAC5B,CAAE,KAAM,MAAO,MAAO,KAAM,EAC5B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,CAC5B,EAIaC,EAAmC,CAC9C,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,MAAO,MAAO,KAAM,EAC5B,CAAE,KAAM,MAAO,MAAO,KAAM,EAC5B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,KAAM,MAAO,IAAK,EAC1B,CAAE,KAAM,MAAO,MAAO,KAAM,EAC5B,CAAE,KAAM,MAAO,MAAO,KAAM,CAC9B,EAEaC,EAAgB,CAC3B,uCACA,8BACA,gCACA,+BACA,wCACA,mCACA,sCACA,mDACA,mDACA,wCACF,EAEaC,EAA8B,uBAE9BC,EAAY,CACvB,CAAE,MAAO,YAAa,MAAO,mBAAoB,EACjD,CAAE,MAAO,iBAAkB,MAAO,uBAAwB,EAC1D,CAAE,MAAO,6BAA8B,MAAO,4BAA6B,EAC3E,CAAE,MAAO,gBAAiB,MAAOD,CAA4B,CAC/D,EAEaE,EAAc,CACzB,CAAE,MAAO,UAAW,MAAO,qBAA2B,EACtD,CAAE,MAAO,MAAO,MAAO,sBAA4B,EACnD,CAAE,MAAO,iCAAkC,MAAO,QAAc,CAClE,C,wNChTO,MAAMC,EAAwC1C,MACnD,UAAOA,EAAmB,SAAS,EAExB2C,EAA0B,CAAC3C,EAAuCK,IAC7EL,EAAkB,OAAQoB,GAAwBA,EAAE,UAAYf,CAAO,EAE5DuC,EAAiB,CAC5B5C,EACAc,EACA+B,EACAC,IACG,CACH,MAAMC,EAAcJ,EAAwB3C,EAAmB8C,CAAe,EAAE,IAAK1B,IAAO,CAC1F,MAAOA,EAAE,KACT,KAAMA,EAAE,WACV,EAAE,EACI4B,EAAyBD,EAAY,KACxC3B,GAAuCA,EAAE,QAAUyB,CACtD,EACMI,EAAsBF,EAAY,OAASA,EAAY,CAAC,EAAE,MAAQ,GAExE,MAAO,CACL,YAAAA,EACA,mBAHyBC,EAAyBlC,EAAamC,CAIjE,CACF,EAEaC,EAA8B,CACzCC,EACAzK,EACAe,KAEIA,GAAgBA,IAAiB,YACnCf,EAAa,YAGPyK,EAEJ,YAAmBC,GAEfA,EAAE,WAAW,QAAQD,CAA6B,IAAM,IACxDC,EAAE,YAAY,QAAQ1K,CAAwB,IAAM,EAEvD,EAND,CAAC,GASM2K,EAAgC,CAAC5K,EAAuBC,IAC3DA,EAEJ,YAAqB0K,GACZA,EAAE,WAAW,QAAQ3K,CAAS,IAAM,IAAM2K,EAAE,YAAY,QAAQ1K,CAAU,IAAM,EACxF,EAHD,CAAC,EAMM4K,EAAe,MAC1B9J,EACA+J,EACAzF,IACG,CACH,MAAMhF,EAAQ,uBACRoC,EAAS,MAAM1B,EAAW,UAAU+J,EAAoBzK,EAAOgF,CAAW,EAChF,MAAO,CAAC,GAAG,OAAO,KAAK5C,CAAM,EAAG,GAAG,IAAa,CAClD,EAEasI,EAAyB,CACpC/K,EAAgC,YAChCC,EAAiC,WACjCsB,EAAuC,gBACvCP,IACG,CACH,MAAMsH,KAA2B,KAAe,EAC1C9G,EAAeiJ,EAA4BzK,EAAWC,EAAYe,CAAY,EAAE,IAAKgK,IAAY,CACrG,GAAGA,EACH,MAAOA,EAAO,IAChB,EAAE,EACF,OAAKxJ,EAAa,KAAMK,GAAyBA,EAAE,QAAUyG,EAAY,QAAQ/G,CAAgB,CAAC,IAChGA,EAAmBC,EAAa,OAAS,EAAIA,EAAa,CAAC,EAAE,MAAQ,iBAEhE,CAAE,aAAAA,EAAc,iBAAAD,CAAiB,CAC1C,EAEa0J,EAA0BvJ,GAAuB,CAC5D,MAAMwJ,EAASxJ,EAAS,OAAO,CAACyJ,EAAUC,IAAiB,CACzD,MAAMC,EAAMD,EAAK,MAAM,GAAG,EAAE,IAAI,WAAS,EACnCE,GAASD,EAAI,SAAW,EAAIA,KAAM,WAAQA,CAAG,GAAG,KAAK,GAAG,EACxDL,EAAS,CACb,MAAOI,EACP,MAAOA,CACT,EACA,OAAID,EAAIG,CAAK,EACXH,EAAIG,CAAK,EAAI,CAAC,GAAGH,EAAIG,CAAK,EAAGN,CAAM,EAEnCG,EAAIG,CAAK,EAAI,CAACN,CAAM,EAEfG,CACT,EAAG,CAAC,CAAC,EACL,OAAO,OAAO,QAAQD,CAAM,EAAE,IAAI,CAAC,CAAClC,EAAOpH,CAAO,KAAO,CAAE,MAAAoH,EAAO,QAAApH,EAAS,SAAU,EAAK,GAAI,CAAC,CAAC,CAClG,EAEa2J,EAAwB7I,MACnC,SAAMA,EAAa,CAAC,EAAE,IAAI,CAAC,CAACP,EAAKC,EAAUtC,EAAOuC,EAAY,KAAK,KAAO,CACxE,IAAAF,EACA,SAAAC,EACA,MAAAtC,EACA,UAAAuC,CACF,EAAE,EAESmJ,EAAuB,CAAC1K,EAAgCC,IAA0C,CAC7G,KAAM,CAAE,iBAAAQ,EAAkB,gBAAAkK,CAAgB,EAAI3K,EAC9C,GAAI,CAAC2K,GAAmB,CAAClK,EACvB,MAAO,GAGT,MAAMmK,EAAY,UAAiB3G,GAAOA,EAAG,QAAUhE,EAAW,YAAY,QAAQQ,CAAgB,CAAC,EACjGoK,EAAU,SAASF,EAAiB,EAAE,EAE5C,MAAO,GADK,eAAuBE,CAAO,eACfD,GAAW,MAAQ,KAChD,EAEaE,EAAiB/K,GAA2B,CACvD,MAAMgL,EAAgBhL,GAAO,SAAS,UAAWiL,GAAMA,IAAM,aAAa,EAG1E,OADmBjL,GAAO,UAAUgL,EAAgB,CAAC,GAChC,EACvB,EAEaE,EAAgB,CAAClL,EAAuBwH,IAAuB,CAC1E,GAAI,CAACxH,EAAM,QACT,OAAAA,EAAM,QAAU,CAAC,cAAe,IAAKwH,CAAU,EACxCxH,EAET,MAAMgL,EAAgBhL,GAAO,SAAS,UAAWiL,GAAMA,IAAM,aAAa,EAC1E,OAAID,IAAkB,GACpBhL,EAAM,QAAQ,KAAK,cAAe,IAAKwH,CAAU,EAGjDxH,EAAM,QAASgL,EAAgB,CAAC,EAAIxD,EAE/BxH,CACT,C,6GCzJO,MAAMmL,EAA4C,CACvD,CAAE,MAAO,kBAAmB,MAAO,oBAAmB,EACtD,CAAE,MAAO,8BAA+B,MAAO,oBAAmB,CACpE,EAEO,IAAKC,GAAAA,IACVA,EAAA,SAAW,WACXA,EAAA,SAAW,WACXA,EAAA,eAAiB,iBACjBA,EAAA,YAAc,cACdA,EAAA,UAAY,YACZA,EAAA,YAAc,cACdA,EAAA,cAAgB,gBAChBA,EAAA,aAAe,eACfA,EAAA,SAAW,WACXA,EAAA,iBAAmB,mBACnBA,EAAA,UAAY,YACZA,EAAA,YAAc,cACdA,EAAA,IAAM,MAbIA,IAAAA,GAAA,IAgDAC,GAAAA,IACVA,EAAA,iBAAmB,iBACnBA,EAAA,kBAAoB,kBACpBA,EAAA,IAAM,MACNA,EAAA,WAAa,aAJHA,IAAAA,GAAA,IAOAC,GAAAA,IACVA,EAAA,KAAO,OACPA,EAAA,KAAO,OACPA,EAAA,MAAQ,QAHEA,IAAAA,GAAA,IAMAC,GAAAA,IACVA,EAAA,wBAA0B,0BAC1BA,EAAA,MAAQ,QACRA,EAAA,MAAQ,QACRA,EAAA,WAAa,aAJHA,IAAAA,GAAA,IAOAC,GAAAA,IACVA,EAAA,uBAAyB,yBACzBA,EAAA,KAAO,OACPA,EAAA,MAAQ,QACRA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,aAAe,eACfA,EAAA,MAAQ,QAPEA,IAAAA,GAAA,IAUAC,GAAAA,IACVA,EAAA,YAAc,cACdA,EAAA,WAAa,aACbA,EAAA,kBAAoB,oBACpBA,EAAA,iBAAmB,mBACnBA,EAAA,UAAY,YACZA,EAAA,UAAY,YACZA,EAAA,WAAa,aACbA,EAAA,YAAc,cACdA,EAAA,UAAY,YACZA,EAAA,aAAe,eACfA,EAAA,iBAAmB,mBACnBA,EAAA,kBAAoB,oBACpBA,EAAA,oBAAsB,sBACtBA,EAAA,oBAAsB,sBACtBA,EAAA,oBAAsB,sBACtBA,EAAA,oBAAsB,sBACtBA,EAAA,oBAAsB,sBACtBA,EAAA,qBAAuB,uBACvBA,EAAA,WAAa,aAnBHA,IAAAA,GAAA,G,wBCtFZ,EAA2C,CAAC,MAAM,EAAE,EAAG,IAAI,EAAE,EAAQ,KAAe,EAAEC,EAAE,EAAQ,KAAa,EAAErM,EAAE,EAAQ,KAAO,EAAEsM,EAAE,EAAQ,KAAQ,EAAE,SAASC,EAAE/L,EAAE,CAAC,OAAOA,GAAa,OAAOA,GAAjB,UAAoB,YAAYA,EAAEA,EAAE,CAAC,QAAQA,CAAC,CAAC,CAAC,IAAI,EAAE+L,EAAEvM,CAAC,EAAEwM,EAAE,UAAU,CAAC,OAAOA,EAAE,OAAO,QAAQ,SAAShM,EAAE,CAAC,QAAQ6L,EAAErM,EAAE,EAAEsM,EAAE,UAAU,OAAOtM,EAAEsM,EAAEtM,IAAI,QAAQuM,KAAKF,EAAE,UAAUrM,CAAC,EAAE,OAAO,UAAU,eAAe,KAAKqM,EAAEE,CAAC,IAAI/L,EAAE+L,CAAC,EAAEF,EAAEE,CAAC,GAAG,OAAO/L,CAAC,EAAEgM,EAAE,MAAM,KAAK,SAAS,CAAC,EACvb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gFAagF,SAAS/B,EAAEjK,EAAE6L,EAAE,CAAC,IAAIrM,EAAc,OAAO,QAAnB,YAA2BQ,EAAE,OAAO,QAAQ,EAAE,GAAG,CAACR,EAAE,OAAOQ,EAAE,IAAI8L,EAAEC,EAAE5K,EAAE3B,EAAE,KAAKQ,CAAC,EAAEgM,EAAE,CAAC,EAAE,GAAG,CAAC,MAAeH,IAAT,QAAYA,KAAK,IAAI,EAAEC,EAAE3K,EAAE,KAAK,GAAG,MAAM6K,EAAE,KAAKF,EAAE,KAAK,CAAC,OAAO9L,EAAN,CAAS+L,EAAE,CAAC,MAAM/L,CAAC,CAAC,QAAC,CAAQ,GAAG,CAAC8L,GAAG,CAACA,EAAE,OAAOtM,EAAE2B,EAAE,SAAS3B,EAAE,KAAK2B,CAAC,CAAC,QAAC,CAAQ,GAAG4K,EAAE,MAAMA,EAAE,KAAK,CAAC,CAAC,OAAOC,CAAC,CAAC,IAAIC,EAAEC,EAAE,yBAAyBC,EAAE,0BAA0Bf,EAAE,0BAA0B3L,EAAE,mBAAmB2M,EAAE,mBAAmBnE,EAAE,WAAWoE,EAAE,aAAaC,EAAE,aAAa,EAAE,CAAC,cAAc,YAAY,eAAe,YAAY,EAAEC,EAAE,SAASvM,EAAE,CAAC,IAAI8L,EAAE9L,EAAE,SAAS+L,EAAE9B,EAAEzK,EAAE,SAAS,EAAE,CAAC,EAAEwM,EAAED,EAAE,CAAC,EAAEE,EAAEF,EAAE,CAAC,EAAEG,EAAEjC,EAAEzK,EAAE,SAAS,IAAI,EAAE,CAAC,EAAE4M,EAAEF,EAAE,CAAC,EAAEjE,EAAEiE,EAAE,CAAC,EAAEG,EAAER,EAAE,UAAU,EAAES,EAAE9M,EAAE,YAAa,SAASQ,EAAE,CAACiM,EAAE,IAAI,EAAEhE,EAAE,EAAE,CAAC,EAAG,CAACA,CAAC,CAAC,EAAEpF,EAAErD,EAAE,YAAa,SAASQ,EAAE,CAACiI,EAAE,IAAI,EAAEgE,EAAE,IAAI,CAAC,EAAG,CAAChE,CAAC,CAAC,EAAEsE,EAAE/M,EAAE,YAAa,SAASQ,EAAE,CAAC,GAAQA,EAAE,KAAK,IAAZ,GAAc,CAAC,IAAI6L,EAAE,OAAO,GAAG,CAACA,EAAE,KAAK,MAAM7L,CAAC,CAAC,MAAC,CAASiM,EAAE,mBAAmB,CAAC,CAAC,IAAIzM,EAAEgN,EAAEX,CAAC,EAAErM,EAAE,QAAQsM,EAAE,CAAC,WAAWD,EAAE,YAAY,SAASA,EAAE,UAAU,YAAYA,EAAE,aAAa,UAAUA,EAAE,UAAU,CAAC,EAAEI,EAAEzM,EAAE,KAAK,CAAC,CAAC,EAAG,CAACyM,EAAEH,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,cAAc,EAAE,QAAQ,SAAS,KAAK,EAAE,QAAQ,cAAcD,EAAE,MAAM,CAAC,MAAM,YAAY,QAAQ,QAAQG,CAAC,EAAE,YAAYI,EAAE,wBAAwB,mCAAmC,MAAMJ,CAAC,EAAE,EAAE,QAAQ,cAAc,EAAE,QAAQ,SAAS,KAAUI,IAAL,IAAQ,EAAE,QAAQ,cAAc,MAAM,CAAC,cAAcD,CAAC,EAAE,EAAE,QAAQ,cAAcN,EAAE,aAAa,CAAC,QAAQ,CAAC,SAAS,GAAG,OAAO,kBAAkB,EAAE,OAAO,aAAa,OAAO,SAAS7L,EAAE,CAACuM,EAAEvM,CAAC,EAAEiI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,cAAc,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,GAAGoE,EAAE,WAAW,GAAG,SAAS,UAAU,QAAQ,CAAC,EAAE,gCAAgC,EAAE,QAAQ,cAAc,KAAK,IAAI,EAAE,EAAE,QAAQ,cAAc,KAAK,IAAI,EAAE,EAAE,QAAQ,cAAcR,EAAE,OAAO,CAAC,KAAK,SAAS,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAAEO,GAAG,EAAE,QAAQ,cAAcP,EAAE,SAAS,CAAC,cAAcT,EAAE,UAAU,GAAG,QAAQ,QAAQY,CAAC,EAAE,YAAY,8BAA8B,OAAO,SAAShM,EAAE,CAAC,OAAOuM,EAAEvM,EAAE,cAAc,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAACoM,GAAG,EAAE,QAAQ,cAAcP,EAAE,MAAM,KAAK,EAAE,QAAQ,cAAcA,EAAE,OAAO,CAAC,cAAcpM,EAAE,KAAK,SAAS,KAAK,UAAU,MAAM,CAAC,MAAM,GAAG4M,EAAE,OAAO,QAAQ,IAAI,EAAE,QAAQC,CAAC,EAAE,iBAAiB,CAAC,EAAEF,GAAGJ,GAAG,EAAE,QAAQ,cAAcH,EAAE,MAAM,KAAK,EAAE,QAAQ,cAAcA,EAAE,OAAO,CAAC,KAAK,SAAS,KAAK,UAAU,MAAM,CAAC,MAAM,GAAGQ,EAAE,OAAO,QAAQ,IAAI,EAAE,QAAQxJ,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE2J,EAAE,SAASxM,EAAE,CAAC,GAAG,CAAC8L,EAAE,SAAS9L,CAAC,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,mBAAmB,EAAE,IAAI6L,EAAE,EAAE,OAAQ,SAASA,EAAE,CAAC,MAAM,CAAC7L,EAAE6L,CAAC,CAAC,CAAE,EAAE,OAAOA,EAAE,OAAO,EAAE,CAAC,QAAQ,GAAG,MAAM,iBAAiBA,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAEY,EAAE,SAASzM,EAAE,CAAC,IAAIR,EAAEQ,EAAE,QAAQ8L,EAAE9L,EAAE,QAAQ+L,EAAE/L,EAAE,SAAS,OAAO,EAAE,QAAQ,cAAc,MAAM,CAAC,cAAciI,CAAC,EAAE,EAAE,QAAQ,cAAc4D,EAAE,MAAM,CAAC,MAAM,YAAY,EAAE,EAAE,QAAQ,cAAcA,EAAE,MAAM,CAAC,GAAG,iBAAiB,MAAM,GAAG,MAAMrM,EAAE,gBAAgB,GAAG,SAASuM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,cAAcF,EAAE,MAAM,CAAC,MAAM,cAAc,EAAE,EAAE,QAAQ,cAAcA,EAAE,MAAM,CAAC,MAAM,GAAG,GAAG,cAAc,MAAMrM,EAAE,aAAa,GAAG,SAASuM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,cAAcF,EAAE,MAAM,CAAC,MAAM,WAAW,EAAE,EAAE,QAAQ,cAAcA,EAAE,MAAM,CAAC,MAAM,GAAG,GAAG,WAAW,MAAMrM,EAAE,UAAU,GAAG,SAASuM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,cAAcF,EAAE,MAAM,CAAC,MAAM,cAAc,SAAS,EAAE,EAAE,EAAE,QAAQ,cAAcA,EAAE,MAAM,CAAC,MAAM,GAAG,GAAG,aAAa,SAAS,GAAG,YAAY,yBAAyB,WAAW,EAAE,QAAQ,cAAcA,EAAE,QAAQ,CAAC,QAAQ,4DAA4D,EAAE,EAAE,QAAQ,cAAcA,EAAE,OAAO,CAAC,cAAcO,EAAE,KAAK,OAAO,KAAK,KAAK,QAAQ,UAAU,CAAC,OAAON,EAAE,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEY,EAAQ,eAAe,QAAQT,EAAES,EAAQ,iBAAiBA,EAAQ,eAAe,CAAC,IAAI,IAAI,MAAMT,EAAE,IAAI,MAAM,IAAIU,EAAE,CAAC,CAAC,MAAM,kBAAkB,MAAMD,EAAQ,eAAe,IAAI,UAAUL,CAAC,EAAE,CAAC,MAAM,8BAA8B,MAAMK,EAAQ,eAAe,IAAI,UAAUJ,CAAC,CAAC,EAAEI,EAAQ,iBAAiB,SAASlN,EAAE,CAAC,IAAIsM,EAAEtM,EAAE,QAAQuM,EAAEvM,EAAE,gBAAgByK,EAAE6B,EAAE,SAASG,EAAEH,EAAE,iBAAiBK,EAAEL,EAAE,eAAe7B,EAAE,qBAAqBA,EAAE,mBAAmByC,EAAQ,eAAe,KAAK,IAAItB,EAAEnB,EAAE,qBAAqByC,EAAQ,eAAe,KAAczC,EAAE,qBAAX,OAA8BxK,EAAE,QAAQwM,GAAGA,EAAE,YAAYhC,EAAE,aAAaA,EAAE,gBAAgBA,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,cAAc,EAAE,QAAQ,SAAS,KAAK,EAAE,QAAQ,cAAc4B,EAAE,SAAS,CAAC,MAAM,gBAAgB,EAAE,EAAE,QAAQ,cAAcA,EAAE,MAAM,CAAC,MAAM,qBAAqB,EAAE,EAAE,QAAQ,cAAcA,EAAE,iBAAiB,CAAC,QAAQc,EAAE,MAAM1C,EAAE,oBAAoByC,EAAQ,eAAe,IAAI,SAAS,SAAS1M,EAAE,CAAC+L,EAAEC,EAAEA,EAAE,CAAC,EAAEF,CAAC,EAAE,CAAC,SAASE,EAAEA,EAAE,CAAC,EAAEF,EAAE,QAAQ,EAAE,CAAC,mBAAmB9L,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEoL,GAAG,EAAE,QAAQ,cAAcS,EAAE,SAAS,CAAC,MAAM,iBAAiB,EAAEpM,EAAE,EAAE,QAAQ,cAAcgN,EAAE,CAAC,QAAQX,EAAE,SAAS,QAAQ,SAAS9L,EAAE,CAAC,IAAI6L,EAAEG,EAAE,CAAC,EAAEG,CAAC,EAAE3M,EAAEQ,EAAEgM,EAAEA,EAAE,CAAC,EAAEF,EAAE,QAAQ,EAAE9L,CAAC,EAAEgM,EAAE,CAAC,EAAEF,EAAE,QAAQ,EAAE,OAAOtM,EAAE,YAAY,OAAOA,EAAE,eAAe,OAAOA,EAAE,SAAS,OAAOqM,EAAE,WAAWE,EAAEC,EAAEA,EAAE,CAAC,EAAEF,CAAC,EAAE,CAAC,eAAeD,EAAE,SAASrM,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,SAASqM,EAAE,CAAC,OAAO,EAAE,iCAAiCrM,EAAEqM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,cAAcU,EAAE,CAAC,SAAS,SAASvM,EAAE,CAAC+L,EAAEC,EAAEA,EAAE,CAAC,EAAEF,CAAC,EAAE,CAAC,iBAAiBE,EAAEA,EAAE,CAAC,EAAEC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,eAAeD,EAAEA,EAAE,CAAC,EAAEG,CAAC,EAAE,CAAC,WAAWnM,EAAE,UAAU,CAAC,EAAE,SAASgM,EAAEA,EAAE,CAAC,EAAE/B,CAAC,EAAE,CAAC,YAAYjK,EAAE,YAAY,eAAeA,EAAE,UAAU,SAASA,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,cAAc,MAAM,CAAC,UAAU,mBAAmB,MAAM,CAAC,UAAU,MAAM,EAAE,cAAckM,CAAC,EAAE,EAAE,QAAQ,cAAc,IAAI,KAAK,+FAA0F,IAAI,EAAE,QAAQ,cAAc,IAAI,CAAC,UAAU,gBAAgB,OAAO,SAAS,IAAI,sBAAsB,KAAK,oGAAoG,EAAE,uBAAuB,CAAC,CAAC,EAAE,CAACd,GAAG,EAAE,QAAQ,cAAcS,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,4DAA4D,CAAC,CAAC,C,+BCXttLe,EAAO,QAAU,EAAjB,M","sources":["webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Aggregation.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/AliasBy.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Alignment.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/AlignmentFunction.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/GroupBy.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/LabelFilter.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/MQLQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/GraphPeriod.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/PeriodSelect.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Preprocessor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Project.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/QueryHeader.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/QueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/LookbackPeriodSelect.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/SLO.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Selector.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Service.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/SLOQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/VisualMetricQueryEditor.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/AnnotationsHelp.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/components/Fields.tsx","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/constants.ts","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/functions.ts","webpack://grafana/./public/app/plugins/datasource/cloud-monitoring/types.ts","webpack://grafana/../../opt/drone/yarncache/@grafana-google-sdk-npm-0.0.4-b5e2659701-f8a1abfba7.zip/node_modules/@grafana/google-sdk/dist/index.production.js","webpack://grafana/../../opt/drone/yarncache/@grafana-google-sdk-npm-0.0.4-b5e2659701-f8a1abfba7.zip/node_modules/@grafana/google-sdk/index.js"],"sourcesContent":["import React, { FC, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField } from '@grafana/experimental';\nimport { Select } from '@grafana/ui';\n\nimport { getAggregationOptionsByMetric } from '../functions';\nimport { MetricDescriptor, MetricKind, ValueTypes } from '../types';\n\nexport interface Props {\n refId: string;\n onChange: (metricDescriptor: string) => void;\n metricDescriptor?: MetricDescriptor;\n crossSeriesReducer: string;\n groupBys: string[];\n templateVariableOptions: Array>;\n}\n\nexport const Aggregation: FC = (props) => {\n const aggOptions = useAggregationOptionsByMetric(props);\n const selected = useSelectedFromOptions(aggOptions, props);\n\n return (\n \n props.onChange(value!)}\n value={selected}\n options={[\n {\n label: 'Template Variables',\n options: props.templateVariableOptions,\n },\n {\n label: 'Aggregations',\n expanded: true,\n options: aggOptions,\n },\n ]}\n placeholder=\"Select Reducer\"\n inputId={`${props.refId}-group-by-function`}\n menuPlacement=\"top\"\n />\n \n );\n};\n\nconst useAggregationOptionsByMetric = ({ metricDescriptor }: Props): Array> => {\n const valueType = metricDescriptor?.valueType;\n const metricKind = metricDescriptor?.metricKind;\n\n return useMemo(() => {\n if (!valueType || !metricKind) {\n return [];\n }\n\n return getAggregationOptionsByMetric(valueType as ValueTypes, metricKind as MetricKind).map((a) => ({\n ...a,\n label: a.text,\n }));\n }, [valueType, metricKind]);\n};\n\nconst useSelectedFromOptions = (aggOptions: Array>, props: Props) => {\n return useMemo(() => {\n const allOptions = [...aggOptions, ...props.templateVariableOptions];\n return allOptions.find((s) => s.value === props.crossSeriesReducer);\n }, [aggOptions, props.crossSeriesReducer, props.templateVariableOptions]);\n};\n","import { debounce } from 'lodash';\nimport React, { FunctionComponent, useState } from 'react';\n\nimport { EditorField } from '@grafana/experimental';\nimport { Input } from '@grafana/ui';\n\nexport interface Props {\n refId: string;\n onChange: (alias: any) => void;\n value?: string;\n}\n\nexport const AliasBy: FunctionComponent = ({ refId, value = '', onChange }) => {\n const [alias, setAlias] = useState(value ?? '');\n\n const propagateOnChange = debounce(onChange, 1000);\n\n onChange = (e: any) => {\n setAlias(e.target.value);\n propagateOnChange(e.target.value);\n };\n\n return (\n \n \n \n );\n};\n","import React, { FC, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField, EditorFieldGroup } from '@grafana/experimental';\n\nimport { ALIGNMENT_PERIODS } from '../constants';\nimport CloudMonitoringDatasource from '../datasource';\nimport { alignmentPeriodLabel } from '../functions';\nimport { CustomMetaData, MetricDescriptor, PreprocessorType, TimeSeriesList } from '../types';\n\nimport { AlignmentFunction } from './AlignmentFunction';\nimport { PeriodSelect } from './PeriodSelect';\n\nexport interface Props {\n refId: string;\n onChange: (query: TimeSeriesList) => void;\n query: TimeSeriesList;\n templateVariableOptions: Array>;\n customMetaData: CustomMetaData;\n datasource: CloudMonitoringDatasource;\n metricDescriptor?: MetricDescriptor;\n preprocessor?: PreprocessorType;\n}\n\nexport const Alignment: FC = ({\n refId,\n templateVariableOptions,\n onChange,\n query,\n customMetaData,\n datasource,\n metricDescriptor,\n preprocessor,\n}) => {\n const alignmentLabel = useMemo(() => alignmentPeriodLabel(customMetaData, datasource), [customMetaData, datasource]);\n return (\n \n \n onChange({ ...query, ...q })}\n metricDescriptor={metricDescriptor}\n preprocessor={preprocessor}\n />\n \n \n onChange({ ...query, alignmentPeriod: period })}\n aligmentPeriods={ALIGNMENT_PERIODS}\n />\n \n \n );\n};\n","import React, { FC, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { getAlignmentPickerData } from '../functions';\nimport { MetricDescriptor, PreprocessorType, SLOQuery, TimeSeriesList } from '../types';\n\nexport interface Props {\n inputId: string;\n onChange: (query: TimeSeriesList | SLOQuery) => void;\n query: TimeSeriesList | SLOQuery;\n templateVariableOptions: Array>;\n metricDescriptor?: MetricDescriptor;\n preprocessor?: PreprocessorType;\n}\n\nexport const AlignmentFunction: FC = ({\n inputId,\n query,\n templateVariableOptions,\n onChange,\n metricDescriptor,\n preprocessor,\n}) => {\n const { perSeriesAligner: psa } = query;\n let { valueType, metricKind } = metricDescriptor || {};\n\n const { perSeriesAligner, alignOptions } = useMemo(\n () => getAlignmentPickerData(valueType, metricKind, psa, preprocessor),\n [valueType, metricKind, psa, preprocessor]\n );\n\n return (\n onChange({ ...query, perSeriesAligner: value! })}\n value={[...alignOptions, ...templateVariableOptions].find((s) => s.value === perSeriesAligner)}\n options={[\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n {\n label: 'Alignment options',\n expanded: true,\n options: alignOptions,\n },\n ]}\n placeholder=\"Select Alignment\"\n inputId={inputId}\n menuPlacement=\"top\"\n />\n );\n};\n","import React, { FunctionComponent, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField, EditorFieldGroup } from '@grafana/experimental';\nimport { MultiSelect } from '@grafana/ui';\n\nimport { SYSTEM_LABELS } from '../constants';\nimport { labelsToGroupedOptions } from '../functions';\nimport { MetricDescriptor, TimeSeriesList } from '../types';\n\nimport { Aggregation } from './Aggregation';\n\nexport interface Props {\n refId: string;\n variableOptionGroup: SelectableValue;\n labels: string[];\n metricDescriptor?: MetricDescriptor;\n onChange: (query: TimeSeriesList) => void;\n query: TimeSeriesList;\n}\n\nexport const GroupBy: FunctionComponent = ({\n refId,\n labels: groupBys = [],\n query,\n onChange,\n variableOptionGroup,\n metricDescriptor,\n}) => {\n const options = useMemo(\n () => [variableOptionGroup, ...labelsToGroupedOptions([...groupBys, ...SYSTEM_LABELS])],\n [groupBys, variableOptionGroup]\n );\n\n return (\n \n \n {\n onChange({ ...query, groupBys: options.map((o) => o.value!) });\n }}\n menuPlacement=\"top\"\n />\n \n onChange({ ...query, crossSeriesReducer })}\n refId={refId}\n />\n \n );\n};\n","import React, { FunctionComponent, useMemo } from 'react';\n\nimport { SelectableValue, toOption } from '@grafana/data';\nimport { AccessoryButton, EditorField, EditorList, EditorRow } from '@grafana/experimental';\nimport { HorizontalGroup, Select } from '@grafana/ui';\n\nimport { labelsToGroupedOptions, stringArrayToFilters } from '../functions';\n\nexport interface Props {\n labels: { [key: string]: string[] };\n filters: string[];\n onChange: (filters: string[]) => void;\n variableOptionGroup: SelectableValue;\n}\n\ninterface Filter {\n key: string;\n operator: string;\n value: string;\n condition: string;\n}\n\nconst DEFAULT_OPERATOR = '=';\nconst DEFAULT_CONDITION = 'AND';\n\nconst filtersToStringArray = (filters: Filter[]) =>\n filters.flatMap(({ key, operator, value, condition }) => [key, operator, value, condition]).slice(0, -1);\n\nconst operators = ['=', '!=', '=~', '!=~'].map(toOption);\n\n// These keys are not editable as labels but they have its own selector.\n// For example the 'metric.type' is set with the metric name selector.\nconst protectedFilterKeys = ['metric.type'];\n\nexport const LabelFilter: FunctionComponent = ({\n labels = {},\n filters: filterArray,\n onChange: _onChange,\n variableOptionGroup,\n}) => {\n const rawFilters: Filter[] = stringArrayToFilters(filterArray);\n const filters = rawFilters.filter(({ key }) => !protectedFilterKeys.includes(key));\n const protectedFilters = rawFilters.filter(({ key }) => protectedFilterKeys.includes(key));\n\n const options = useMemo(\n () => [variableOptionGroup, ...labelsToGroupedOptions(Object.keys(labels))],\n [labels, variableOptionGroup]\n );\n\n const getOptions = ({ key = '', value = '' }: Partial) => {\n // Add the current key and value as options if they are manually entered\n const keyPresent = options.some((op) => {\n if (op.options) {\n return options.some((opp) => opp.label === key);\n }\n return op.label === key;\n });\n if (!keyPresent) {\n options.push({ label: key, value: key });\n }\n\n const valueOptions = labels.hasOwnProperty(key)\n ? [variableOptionGroup, ...labels[key].map(toOption)]\n : [variableOptionGroup];\n const valuePresent = valueOptions.some((op) => op.label === value);\n if (!valuePresent) {\n valueOptions.push({ label: value, value });\n }\n\n return { options, valueOptions };\n };\n\n const onChange = (items: Array>) => {\n const filters = items.concat(protectedFilters).map(({ key, operator, value, condition }) => ({\n key: key || '',\n operator: operator || DEFAULT_OPERATOR,\n value: value || '',\n condition: condition || DEFAULT_CONDITION,\n }));\n _onChange(filtersToStringArray(filters));\n };\n\n const renderItem = (item: Partial, onChangeItem: (item: Filter) => void, onDeleteItem: () => void) => {\n const { key = '', operator = DEFAULT_OPERATOR, value = '', condition = DEFAULT_CONDITION } = item;\n const { options, valueOptions } = getOptions(item);\n\n return (\n \n `Use label key: ${v}`}\n allowCustomValue\n value={key}\n options={options}\n onChange={({ value: key = '' }) => onChangeItem({ key, operator, value, condition })}\n />\n onChangeItem({ key, operator, value, condition })}\n />\n `Use label value: ${v}`}\n allowCustomValue\n value={value}\n options={valueOptions}\n onChange={({ value = '' }) => onChangeItem({ key, operator, value, condition })}\n />\n \n \n );\n };\n\n return (\n \n \n \n \n \n );\n};\n","import React from 'react';\n\nimport { TextArea } from '@grafana/ui';\n\nexport interface Props {\n onChange: (query: string) => void;\n onRunQuery: () => void;\n query: string;\n}\n\nexport function MQLQueryEditor({ query, onChange, onRunQuery }: React.PropsWithChildren) {\n const onKeyDown = (event: any) => {\n if (event.key === 'Enter' && (event.shiftKey || event.ctrlKey)) {\n event.preventDefault();\n onRunQuery();\n }\n };\n\n return (\n <>\n onChange(e.currentTarget.value)}\n onKeyDown={onKeyDown}\n />\n \n );\n}\n","import React, { FunctionComponent } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField, EditorRow } from '@grafana/experimental';\nimport { HorizontalGroup, Switch } from '@grafana/ui';\n\nimport { GRAPH_PERIODS } from '../constants';\n\nimport { PeriodSelect } from './index';\n\nexport interface Props {\n refId: string;\n onChange: (period: string) => void;\n variableOptionGroup: SelectableValue;\n graphPeriod?: string;\n}\n\nexport const GraphPeriod: FunctionComponent = ({ refId, onChange, graphPeriod, variableOptionGroup }) => {\n return (\n \n \n Set graph_period which forces a preferred period between points. Automatically set to the\n current interval if left blank.\n \n }\n >\n \n onChange(e.currentTarget.checked ? '' : 'disabled')}\n />\n \n \n \n \n );\n};\n","import React, { useCallback, useEffect } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorRows } from '@grafana/experimental';\n\nimport CloudMonitoringDatasource from '../datasource';\nimport {\n AlignmentTypes,\n CloudMonitoringQuery,\n CustomMetaData,\n QueryType,\n TimeSeriesList,\n TimeSeriesQuery,\n} from '../types';\n\nimport { GraphPeriod } from './GraphPeriod';\nimport { MQLQueryEditor } from './MQLQueryEditor';\nimport { VisualMetricQueryEditor } from './VisualMetricQueryEditor';\n\nexport interface Props {\n refId: string;\n customMetaData: CustomMetaData;\n variableOptionGroup: SelectableValue;\n onChange: (query: CloudMonitoringQuery) => void;\n onRunQuery: () => void;\n query: CloudMonitoringQuery;\n datasource: CloudMonitoringDatasource;\n}\n\nexport const defaultTimeSeriesList: (dataSource: CloudMonitoringDatasource) => TimeSeriesList = (dataSource) => ({\n projectName: dataSource.getDefaultProject(),\n crossSeriesReducer: 'REDUCE_NONE',\n alignmentPeriod: 'cloud-monitoring-auto',\n perSeriesAligner: AlignmentTypes.ALIGN_MEAN,\n groupBys: [],\n filters: [],\n});\n\nexport const defaultTimeSeriesQuery: (dataSource: CloudMonitoringDatasource) => TimeSeriesQuery = (dataSource) => ({\n projectName: dataSource.getDefaultProject(),\n query: '',\n});\n\nfunction Editor({\n refId,\n query,\n datasource,\n onChange: onQueryChange,\n onRunQuery,\n customMetaData,\n variableOptionGroup,\n}: React.PropsWithChildren) {\n const onChangeTimeSeriesList = useCallback(\n (timeSeriesList: TimeSeriesList) => {\n onQueryChange({ ...query, timeSeriesList });\n onRunQuery();\n },\n [onQueryChange, onRunQuery, query]\n );\n\n const onChangeTimeSeriesQuery = useCallback(\n (timeSeriesQuery: TimeSeriesQuery) => {\n onQueryChange({ ...query, timeSeriesQuery });\n onRunQuery();\n },\n [onQueryChange, onRunQuery, query]\n );\n\n useEffect(() => {\n if (query.queryType === QueryType.TIME_SERIES_LIST && !query.timeSeriesList) {\n onChangeTimeSeriesList(defaultTimeSeriesList(datasource));\n }\n if (query.queryType === QueryType.TIME_SERIES_QUERY && !query.timeSeriesQuery) {\n onChangeTimeSeriesQuery(defaultTimeSeriesQuery(datasource));\n }\n }, [\n onChangeTimeSeriesList,\n onChangeTimeSeriesQuery,\n query.queryType,\n query.timeSeriesList,\n query.timeSeriesQuery,\n datasource,\n ]);\n\n return (\n \n {[QueryType.TIME_SERIES_LIST, QueryType.ANNOTATION].includes(query.queryType) && query.timeSeriesList && (\n onQueryChange({ ...query, aliasBy })}\n />\n )}\n\n {query.queryType === QueryType.TIME_SERIES_QUERY && query.timeSeriesQuery && (\n <>\n onChangeTimeSeriesQuery({ ...query.timeSeriesQuery!, query: q })}\n onRunQuery={onRunQuery}\n query={query.timeSeriesQuery.query}\n >\n onChangeTimeSeriesQuery({ ...query.timeSeriesQuery!, graphPeriod })}\n graphPeriod={query.timeSeriesQuery.graphPeriod}\n refId={refId}\n variableOptionGroup={variableOptionGroup}\n />\n \n )}\n \n );\n}\n\nexport const MetricQueryEditor = React.memo(Editor);\n","import React, { useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { periodOption } from '../constants';\n\nexport interface Props {\n inputId: string;\n onChange: (period: string) => void;\n templateVariableOptions: Array>;\n aligmentPeriods: periodOption[];\n selectWidth?: number;\n category?: string;\n disabled?: boolean;\n current?: string;\n}\n\nexport function PeriodSelect({\n inputId,\n templateVariableOptions,\n onChange,\n current,\n disabled,\n aligmentPeriods,\n}: Props) {\n const options = useMemo(\n () =>\n aligmentPeriods.map((ap) => ({\n ...ap,\n label: ap.text,\n })),\n [aligmentPeriods]\n );\n const visibleOptions = useMemo(() => options.filter((ap) => !ap.hidden), [options]);\n\n return (\n onChange(value!)}\n value={[...options, ...templateVariableOptions].find((s) => s.value === current)}\n options={[\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n {\n label: 'Aggregations',\n expanded: true,\n options: visibleOptions,\n },\n ]}\n placeholder=\"Select Period\"\n inputId={inputId}\n disabled={disabled}\n allowCustomValue\n menuPlacement=\"top\"\n />\n );\n}\n","import React, { FunctionComponent, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField } from '@grafana/experimental';\nimport { RadioButtonGroup } from '@grafana/ui';\n\nimport { getAlignmentPickerData } from '../functions';\nimport { MetricDescriptor, MetricKind, PreprocessorType, TimeSeriesList, ValueTypes } from '../types';\n\nconst NONE_OPTION = { label: 'None', value: PreprocessorType.None };\n\nexport interface Props {\n metricDescriptor?: MetricDescriptor;\n onChange: (query: TimeSeriesList) => void;\n query: TimeSeriesList;\n}\n\nexport const Preprocessor: FunctionComponent = ({ query, metricDescriptor, onChange }) => {\n const options = useOptions(metricDescriptor);\n\n return (\n \n {\n const { perSeriesAligner: psa } = query;\n const { valueType, metricKind } = metricDescriptor ?? {};\n const { perSeriesAligner } = getAlignmentPickerData(valueType, metricKind, psa, value);\n onChange({ ...query, preprocessor: value, perSeriesAligner });\n }}\n value={query.preprocessor ?? PreprocessorType.None}\n options={options}\n />\n \n );\n};\n\nconst useOptions = (metricDescriptor?: MetricDescriptor): Array> => {\n const metricKind = metricDescriptor?.metricKind;\n const valueType = metricDescriptor?.valueType;\n\n return useMemo(() => {\n if (!metricKind || metricKind === MetricKind.GAUGE || valueType === ValueTypes.DISTRIBUTION) {\n return [NONE_OPTION];\n }\n\n const options = [\n NONE_OPTION,\n {\n label: 'Rate',\n value: PreprocessorType.Rate,\n description: 'Data points are aligned and converted to a rate per time series',\n },\n ];\n\n return metricKind === MetricKind.CUMULATIVE\n ? [\n ...options,\n {\n label: 'Delta',\n value: PreprocessorType.Delta,\n description: 'Data points are aligned by their delta (difference) per time series',\n },\n ]\n : options;\n }, [metricKind, valueType]);\n};\n","import React, { useEffect, useMemo, useState } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField } from '@grafana/experimental';\nimport { Select } from '@grafana/ui';\n\nimport CloudMonitoringDatasource from '../datasource';\n\nexport interface Props {\n refId: string;\n datasource: CloudMonitoringDatasource;\n onChange: (projectName: string) => void;\n templateVariableOptions: Array>;\n projectName: string;\n}\n\nexport function Project({ refId, projectName, datasource, onChange, templateVariableOptions }: Props) {\n const [projects, setProjects] = useState>>([]);\n useEffect(() => {\n datasource.getProjects().then((projects) => setProjects(projects));\n }, [datasource]);\n\n const projectsWithTemplateVariables = useMemo(\n () => [\n projects,\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n ...projects,\n ],\n [projects, templateVariableOptions]\n );\n\n return (\n \n `Use project: ${v}`}\n onChange={({ value }) => onChange(value!)}\n options={projectsWithTemplateVariables}\n value={{ value: projectName, label: projectName }}\n placeholder=\"Select Project\"\n inputId={`${refId}-project`}\n />\n \n );\n}\n","import React from 'react';\n\nimport { EditorHeader, FlexItem, InlineSelect } from '@grafana/experimental';\n\nimport { QUERY_TYPES } from '../constants';\nimport { CloudMonitoringQuery } from '../types';\n\nexport interface QueryEditorHeaderProps {\n query: CloudMonitoringQuery;\n onChange: (value: CloudMonitoringQuery) => void;\n onRunQuery: () => void;\n}\n\nexport const QueryHeader = (props: QueryEditorHeaderProps) => {\n const { query, onChange, onRunQuery } = props;\n const { queryType } = query;\n\n return (\n \n {\n onChange({ ...query, queryType: value! });\n onRunQuery();\n }}\n />\n \n \n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\n\nimport { QueryEditorProps, toOption } from '@grafana/data';\nimport { EditorRows } from '@grafana/experimental';\n\nimport CloudMonitoringDatasource from '../datasource';\nimport { CloudMonitoringQuery, QueryType, SLOQuery, CloudMonitoringOptions } from '../types';\n\nimport { QueryHeader } from './QueryHeader';\nimport { defaultQuery as defaultSLOQuery } from './SLOQueryEditor';\n\nimport { MetricQueryEditor, SLOQueryEditor } from './';\n\nexport type Props = QueryEditorProps;\n\nexport const QueryEditor = (props: Props) => {\n const { datasource, query: oldQ, onRunQuery, onChange } = props;\n // Migrate query if needed\n const [migrated, setMigrated] = useState(false);\n const query = useMemo(() => {\n if (!migrated) {\n setMigrated(true);\n return datasource.migrateQuery(oldQ);\n }\n return oldQ;\n }, [oldQ, datasource, migrated]);\n\n const sloQuery = { ...defaultSLOQuery(datasource), ...query.sloQuery };\n const onSLOQueryChange = (q: SLOQuery) => {\n onChange({ ...query, sloQuery: q });\n onRunQuery();\n };\n\n const meta = props.data?.series.length ? props.data?.series[0].meta : {};\n const customMetaData = meta?.custom ?? {};\n const variableOptionGroup = {\n label: 'Template Variables',\n expanded: false,\n options: datasource.getVariables().map(toOption),\n };\n\n // Use a known query type\n useEffect(() => {\n if (!Object.values(QueryType).includes(query.queryType)) {\n onChange({ ...query, queryType: QueryType.TIME_SERIES_LIST });\n }\n });\n const queryType = query.queryType;\n\n return (\n \n \n {queryType !== QueryType.SLO && (\n \n )}\n\n {queryType === QueryType.SLO && (\n onChange({ ...query, aliasBy })}\n />\n )}\n \n );\n};\n","import React from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField } from '@grafana/experimental';\nimport { Select } from '@grafana/ui';\n\nimport { LOOKBACK_PERIODS } from '../constants';\n\nexport interface Props {\n refId: string;\n onChange: (lookbackPeriod: string) => void;\n templateVariableOptions: Array>;\n current?: string;\n}\n\nexport const LookbackPeriodSelect = ({ refId, current, templateVariableOptions, onChange }: Props) => {\n const options = LOOKBACK_PERIODS.map((lp) => ({\n ...lp,\n label: lp.text,\n }));\n if (current && !options.find((op) => op.value === current)) {\n options.push({ label: current, text: current, value: current, hidden: false });\n }\n const visibleOptions = options.filter((lp) => !lp.hidden);\n\n return (\n \n s.value === current)}\n options={[\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n {\n label: 'Predefined periods',\n expanded: true,\n options: visibleOptions,\n },\n ]}\n onChange={({ value }) => onChange(value!)}\n />\n \n );\n};\n","import React, { useEffect, useState } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField } from '@grafana/experimental';\nimport { Select } from '@grafana/ui';\n\nimport CloudMonitoringDatasource from '../datasource';\nimport { SLOQuery } from '../types';\n\nexport interface Props {\n refId: string;\n onChange: (query: SLOQuery) => void;\n query: SLOQuery;\n templateVariableOptions: Array>;\n datasource: CloudMonitoringDatasource;\n}\n\nexport const SLO = ({ refId, query, templateVariableOptions, onChange, datasource }: Props) => {\n const [slos, setSLOs] = useState>>([]);\n const { projectName, serviceId } = query;\n\n useEffect(() => {\n if (!projectName || !serviceId) {\n return;\n }\n\n datasource.getServiceLevelObjectives(projectName, serviceId).then((sloIds: Array>) => {\n setSLOs([\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n ...sloIds,\n ]);\n });\n }, [datasource, projectName, serviceId, templateVariableOptions]);\n\n return (\n \n {\n const slos = await datasource.getServiceLevelObjectives(projectName, serviceId);\n const slo = slos.find(({ value }) => value === datasource.templateSrv.replace(sloId));\n onChange({ ...query, sloId, sloName, goal: slo?.goal });\n }}\n />\n \n );\n};\n","import React from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField } from '@grafana/experimental';\nimport { Select } from '@grafana/ui';\n\nimport { SELECTORS } from '../constants';\nimport CloudMonitoringDatasource from '../datasource';\nimport { SLOQuery } from '../types';\n\nexport interface Props {\n refId: string;\n onChange: (query: SLOQuery) => void;\n query: SLOQuery;\n templateVariableOptions: Array>;\n datasource: CloudMonitoringDatasource;\n}\n\nexport const Selector = ({ refId, query, templateVariableOptions, onChange, datasource }: Props) => {\n return (\n \n s.value === query?.selectorName ?? '')}\n options={[\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n ...SELECTORS,\n ]}\n onChange={({ value: selectorName }) => onChange({ ...query, selectorName: selectorName ?? '' })}\n />\n \n );\n};\n","import React, { useEffect, useState } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField } from '@grafana/experimental';\nimport { Select } from '@grafana/ui';\n\nimport CloudMonitoringDatasource from '../datasource';\nimport { SLOQuery } from '../types';\n\nexport interface Props {\n refId: string;\n onChange: (query: SLOQuery) => void;\n query: SLOQuery;\n templateVariableOptions: Array>;\n datasource: CloudMonitoringDatasource;\n}\n\nexport const Service = ({ refId, query, templateVariableOptions, onChange, datasource }: Props) => {\n const [services, setServices] = useState>>([]);\n const { projectName } = query;\n\n useEffect(() => {\n if (!projectName) {\n return;\n }\n\n datasource.getSLOServices(projectName).then((services: Array>) => {\n setServices([\n {\n label: 'Template Variables',\n options: templateVariableOptions,\n },\n ...services,\n ]);\n });\n }, [datasource, projectName, templateVariableOptions]);\n\n return (\n \n \n onChange({ ...query, serviceId, serviceName, sloId: '' })\n }\n />\n \n );\n};\n","import React, { useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { EditorField, EditorFieldGroup, EditorRow } from '@grafana/experimental';\n\nimport { ALIGNMENT_PERIODS, SLO_BURN_RATE_SELECTOR_NAME } from '../constants';\nimport CloudMonitoringDatasource from '../datasource';\nimport { alignmentPeriodLabel } from '../functions';\nimport { AlignmentTypes, CustomMetaData, SLOQuery } from '../types';\n\nimport { AliasBy } from './AliasBy';\nimport { LookbackPeriodSelect } from './LookbackPeriodSelect';\nimport { PeriodSelect } from './PeriodSelect';\nimport { Project } from './Project';\nimport { SLO } from './SLO';\nimport { Selector } from './Selector';\nimport { Service } from './Service';\n\nexport interface Props {\n refId: string;\n customMetaData: CustomMetaData;\n variableOptionGroup: SelectableValue;\n onChange: (query: SLOQuery) => void;\n onRunQuery: () => void;\n query: SLOQuery;\n datasource: CloudMonitoringDatasource;\n aliasBy?: string;\n onChangeAliasBy: (aliasBy: string) => void;\n}\n\nexport const defaultQuery: (dataSource: CloudMonitoringDatasource) => SLOQuery = (dataSource) => ({\n projectName: dataSource.getDefaultProject(),\n alignmentPeriod: 'cloud-monitoring-auto',\n perSeriesAligner: AlignmentTypes.ALIGN_MEAN,\n aliasBy: '',\n selectorName: 'select_slo_health',\n serviceId: '',\n serviceName: '',\n sloId: '',\n sloName: '',\n lookbackPeriod: '',\n});\n\nexport function SLOQueryEditor({\n refId,\n query,\n datasource,\n onChange,\n variableOptionGroup,\n customMetaData,\n aliasBy,\n onChangeAliasBy,\n}: React.PropsWithChildren) {\n const alignmentLabel = useMemo(() => alignmentPeriodLabel(customMetaData, datasource), [customMetaData, datasource]);\n return (\n <>\n \n onChange({ ...query, projectName })}\n />\n \n \n \n {query.selectorName === SLO_BURN_RATE_SELECTOR_NAME && (\n onChange({ ...query, lookbackPeriod: lookbackPeriod })}\n current={query.lookbackPeriod}\n templateVariableOptions={variableOptionGroup.options}\n />\n )}\n\n \n \n onChange({ ...query, alignmentPeriod: period })}\n aligmentPeriods={ALIGNMENT_PERIODS}\n />\n \n \n\n \n \n \n );\n}\n","import { css } from '@emotion/css';\nimport { startCase, uniqBy } from 'lodash';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { GrafanaTheme2, SelectableValue, TimeRange } from '@grafana/data';\nimport { EditorField, EditorFieldGroup, EditorRow } from '@grafana/experimental';\nimport { getSelectStyles, Select, useStyles2, useTheme2 } from '@grafana/ui';\n\nimport CloudMonitoringDatasource from '../datasource';\nimport { getAlignmentPickerData, getMetricType, setMetricType } from '../functions';\nimport { CustomMetaData, MetricDescriptor, MetricKind, PreprocessorType, TimeSeriesList, ValueTypes } from '../types';\n\nimport { AliasBy } from './AliasBy';\nimport { Alignment } from './Alignment';\nimport { GroupBy } from './GroupBy';\nimport { LabelFilter } from './LabelFilter';\nimport { defaultTimeSeriesList } from './MetricQueryEditor';\nimport { Preprocessor } from './Preprocessor';\nimport { Project } from './Project';\n\nexport interface Props {\n refId: string;\n customMetaData: CustomMetaData;\n onChange: (query: TimeSeriesList) => void;\n datasource: CloudMonitoringDatasource;\n query: TimeSeriesList;\n variableOptionGroup: SelectableValue;\n aliasBy?: string;\n onChangeAliasBy: (aliasBy: string) => void;\n}\n\nexport function Editor({\n refId,\n onChange,\n datasource,\n query,\n variableOptionGroup,\n customMetaData,\n aliasBy,\n onChangeAliasBy,\n}: React.PropsWithChildren) {\n const [labels, setLabels] = useState<{ [k: string]: any }>({});\n const [metricDescriptors, setMetricDescriptors] = useState([]);\n const [metricDescriptor, setMetricDescriptor] = useState();\n const [metrics, setMetrics] = useState>>([]);\n const [services, setServices] = useState>>([]);\n const [service, setService] = useState('');\n const [timeRange, setTimeRange] = useState({ ...datasource.timeSrv.timeRange() });\n\n const useTime = (time: TimeRange) => {\n if (timeRange !== null && (timeRange.raw.from !== time.raw.from || timeRange.raw.to !== time.raw.to)) {\n setTimeRange({ ...time });\n }\n };\n\n useTime(datasource.timeSrv.timeRange());\n\n const theme = useTheme2();\n const selectStyles = getSelectStyles(theme);\n\n const customStyle = useStyles2(getStyles);\n\n const { projectName, groupBys, crossSeriesReducer } = query;\n const metricType = getMetricType(query);\n const { templateSrv } = datasource;\n\n const getSelectedMetricDescriptor = useCallback(\n (metricDescriptors: MetricDescriptor[], metricType: string) => {\n return metricDescriptors.find((md) => md.type === templateSrv.replace(metricType))!;\n },\n [templateSrv]\n );\n\n useEffect(() => {\n if (projectName && metricType) {\n datasource\n .getLabels(metricType, refId, projectName, { groupBys, crossSeriesReducer }, timeRange)\n .then((labels) => setLabels(labels));\n }\n }, [datasource, groupBys, metricType, projectName, refId, crossSeriesReducer, timeRange]);\n\n useEffect(() => {\n const loadMetricDescriptors = async () => {\n if (projectName) {\n const metricDescriptors = await datasource.getMetricTypes(projectName);\n const services = getServicesList(metricDescriptors);\n setMetricDescriptors(metricDescriptors);\n setServices(services);\n }\n };\n loadMetricDescriptors();\n }, [datasource, projectName, customStyle, selectStyles.optionDescription]);\n\n useEffect(() => {\n const getMetricsList = (metricDescriptors: MetricDescriptor[]) => {\n const selectedMetricDescriptor = getSelectedMetricDescriptor(metricDescriptors, metricType);\n if (!selectedMetricDescriptor) {\n return [];\n }\n\n const metricsByService = metricDescriptors\n .filter((m) => m.service === selectedMetricDescriptor.service)\n .map((m) => ({\n service: m.service,\n value: m.type,\n label: m.displayName,\n component: function optionComponent() {\n return (\n
\n
{m.type}
\n
{m.description}
\n
\n );\n },\n }));\n return metricsByService;\n };\n\n const metrics = getMetricsList(metricDescriptors);\n const service = metrics.length > 0 ? metrics[0].service : '';\n const metricDescriptor = getSelectedMetricDescriptor(metricDescriptors, metricType);\n setMetricDescriptor(metricDescriptor);\n setMetrics(metrics);\n setService(service);\n }, [metricDescriptors, getSelectedMetricDescriptor, metricType, customStyle, selectStyles.optionDescription]);\n\n const onServiceChange = ({ value: service }: SelectableValue) => {\n const metrics = metricDescriptors\n .filter((m: MetricDescriptor) => m.service === templateSrv.replace(service))\n .map((m: MetricDescriptor) => ({\n service: m.service,\n value: m.type,\n label: m.displayName,\n description: m.description,\n }));\n // On service change reset all query values except the project name\n query.filters = [];\n\n if (metrics.length > 0 && !metrics.some((m) => m.value === templateSrv.replace(metricType))) {\n onMetricTypeChange(metrics[0]);\n setService(service!);\n setMetrics(metrics);\n } else {\n setService(service!);\n setMetrics(metrics);\n }\n };\n\n const getServicesList = (metricDescriptors: MetricDescriptor[]) => {\n const services = metricDescriptors.map((m) => ({\n value: m.service,\n label: startCase(m.serviceShortName),\n }));\n\n return services.length > 0 ? uniqBy(services, (s) => s.value) : [];\n };\n\n const onMetricTypeChange = ({ value }: SelectableValue) => {\n const metricDescriptor = getSelectedMetricDescriptor(metricDescriptors, value!);\n setMetricDescriptor(metricDescriptor);\n const { metricKind, valueType } = metricDescriptor;\n const preprocessor =\n metricKind === MetricKind.GAUGE || valueType === ValueTypes.DISTRIBUTION\n ? PreprocessorType.None\n : PreprocessorType.Rate;\n const { perSeriesAligner } = getAlignmentPickerData(valueType, metricKind, query.perSeriesAligner, preprocessor);\n\n // On metric name change reset query to defaults except project name and filters\n Object.assign(query, {\n ...defaultTimeSeriesList(datasource),\n projectName: query.projectName,\n filters: query.filters,\n });\n onChange({\n ...setMetricType(\n {\n ...query,\n perSeriesAligner,\n },\n value!\n ),\n preprocessor,\n });\n };\n\n return (\n <>\n \n \n {\n onChange({ ...query, projectName });\n }}\n />\n\n \n s.value === service)}\n options={[\n {\n label: 'Template Variables',\n options: variableOptionGroup.options,\n },\n ...services,\n ]}\n placeholder=\"Select Services\"\n inputId={`${refId}-service`}\n />\n \n \n s.value === metricType)}\n options={[\n {\n label: 'Template Variables',\n options: variableOptionGroup.options,\n },\n ...metrics,\n ]}\n placeholder=\"Select Metric\"\n inputId={`${refId}-select-metric`}\n />\n \n \n \n\n <>\n onChange({ ...query, filters })}\n variableOptionGroup={variableOptionGroup}\n />\n \n \n \n \n \n \n \n \n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => css`\n label: grafana-select-option-description;\n font-weight: normal;\n font-style: italic;\n color: ${theme.colors.text.secondary};\n`;\n\nexport const VisualMetricQueryEditor = React.memo(Editor);\n","import React from 'react';\n\nexport const AnnotationsHelp = () => {\n return (\n
\n
\n
Annotation Query Format
\n

\n An annotation is an event that is overlaid on top of graphs. Annotation rendering is expensive so it is\n important to limit the number of rows returned.{' '}\n

\n

\n The Title and Text fields support templating and can use data returned from the query. For example, the Title\n field could have the following text:\n

\n \n {`${'{{metric.type}}'}`} has value: {`${'{{metric.value}}'}`}\n \n

\n Example Result: monitoring.googleapis.com/uptime_check/http_status has this value: 502\n

\n Patterns:\n

\n {`${'{{metric.value}}'}`} = value of the metric/point\n

\n

\n {`${'{{metric.type}}'}`} = metric type e.g. compute.googleapis.com/instance/cpu/usage_time\n

\n

\n {`${'{{metric.name}}'}`} = name part of metric e.g. instance/cpu/usage_time\n

\n

\n {`${'{{metric.service}}'}`} = service part of metric e.g. compute\n

\n

\n {`${'{{metric.label.label_name}}'}`} = Metric label metadata e.g. metric.label.instance_name\n

\n

\n {`${'{{resource.label.label_name}}'}`} = Resource label metadata e.g. resource.label.zone\n

\n
\n
\n );\n};\n","import React, { FC } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { InlineField, Select } from '@grafana/ui';\n\ninterface VariableQueryFieldProps {\n onChange: (value: string) => void;\n options: SelectableValue[];\n value: string;\n label: string;\n allowCustomValue?: boolean;\n}\n\nexport const VariableQueryField: FC = ({\n label,\n onChange,\n value,\n options,\n allowCustomValue = false,\n}) => {\n return (\n \n onChange(value!)}\n options={options}\n />\n \n );\n};\n","import { GoogleAuthType } from '@grafana/google-sdk';\n\nimport { MetricKind, QueryType, ValueTypes } from './types';\n\n// not super excited about using uneven numbers, but this makes it align perfectly with rows that has two fields\nexport const INPUT_WIDTH = 71;\nexport const LABEL_WIDTH = 19;\nexport const INNER_LABEL_WIDTH = 14;\nexport const SELECT_WIDTH = 28;\nexport const AUTH_TYPES = [\n { value: 'Google JWT File', key: GoogleAuthType.JWT },\n { value: 'GCE Default Service Account', key: GoogleAuthType.GCE },\n];\n\nexport const ALIGNMENTS = [\n {\n text: 'none',\n value: 'ALIGN_NONE',\n valueTypes: [\n ValueTypes.INT64,\n ValueTypes.DOUBLE,\n ValueTypes.MONEY,\n ValueTypes.DISTRIBUTION,\n ValueTypes.STRING,\n ValueTypes.VALUE_TYPE_UNSPECIFIED,\n ValueTypes.BOOL,\n ],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'delta',\n value: 'ALIGN_DELTA',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.CUMULATIVE, MetricKind.DELTA],\n },\n {\n text: 'rate',\n value: 'ALIGN_RATE',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.CUMULATIVE, MetricKind.DELTA],\n },\n {\n text: 'interpolate',\n value: 'ALIGN_INTERPOLATE',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'next older',\n value: 'ALIGN_NEXT_OLDER',\n valueTypes: [\n ValueTypes.INT64,\n ValueTypes.DOUBLE,\n ValueTypes.MONEY,\n ValueTypes.DISTRIBUTION,\n ValueTypes.STRING,\n ValueTypes.VALUE_TYPE_UNSPECIFIED,\n ValueTypes.BOOL,\n ],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'min',\n value: 'ALIGN_MIN',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'max',\n value: 'ALIGN_MAX',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'mean',\n value: 'ALIGN_MEAN',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'count',\n value: 'ALIGN_COUNT',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'sum',\n value: 'ALIGN_SUM',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'stddev',\n value: 'ALIGN_STDDEV',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'count true',\n value: 'ALIGN_COUNT_TRUE',\n valueTypes: [ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'count false',\n value: 'ALIGN_COUNT_FALSE',\n valueTypes: [ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'fraction true',\n value: 'ALIGN_FRACTION_TRUE',\n valueTypes: [ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE],\n },\n {\n text: 'percentile 99',\n value: 'ALIGN_PERCENTILE_99',\n valueTypes: [ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'percentile 95',\n value: 'ALIGN_PERCENTILE_95',\n valueTypes: [ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'percentile 50',\n value: 'ALIGN_PERCENTILE_50',\n valueTypes: [ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'percentile 05',\n value: 'ALIGN_PERCENTILE_05',\n valueTypes: [ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'percent change',\n value: 'ALIGN_PERCENT_CHANGE',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n];\n\nexport const AGGREGATIONS = [\n {\n text: 'none',\n value: 'REDUCE_NONE',\n valueTypes: [\n ValueTypes.INT64,\n ValueTypes.DOUBLE,\n ValueTypes.MONEY,\n ValueTypes.DISTRIBUTION,\n ValueTypes.BOOL,\n ValueTypes.STRING,\n ],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED],\n },\n {\n text: 'mean',\n value: 'REDUCE_MEAN',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n {\n text: 'min',\n value: 'REDUCE_MIN',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED],\n },\n {\n text: 'max',\n value: 'REDUCE_MAX',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED],\n },\n {\n text: 'sum',\n value: 'REDUCE_SUM',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED],\n },\n {\n text: 'std. dev.',\n value: 'REDUCE_STDDEV',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED],\n },\n {\n text: 'count',\n value: 'REDUCE_COUNT',\n valueTypes: [\n ValueTypes.INT64,\n ValueTypes.DOUBLE,\n ValueTypes.MONEY,\n ValueTypes.DISTRIBUTION,\n ValueTypes.BOOL,\n ValueTypes.STRING,\n ],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n {\n text: 'count true',\n value: 'REDUCE_COUNT_TRUE',\n valueTypes: [ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: 'count false',\n value: 'REDUCE_COUNT_FALSE',\n valueTypes: [ValueTypes.BOOL],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA],\n },\n {\n text: '99th percentile',\n value: 'REDUCE_PERCENTILE_99',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n {\n text: '95th percentile',\n value: 'REDUCE_PERCENTILE_95',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n {\n text: '50th percentile',\n value: 'REDUCE_PERCENTILE_50',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n {\n text: '5th percentile',\n value: 'REDUCE_PERCENTILE_05',\n valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION],\n metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE],\n },\n];\n\nexport type periodOption = {\n text: string;\n value: string;\n hidden?: boolean;\n};\n\nexport const ALIGNMENT_PERIODS: periodOption[] = [\n { text: 'grafana auto', value: 'grafana-auto' },\n { text: 'stackdriver auto', value: 'stackdriver-auto', hidden: true },\n { text: 'cloud monitoring auto', value: 'cloud-monitoring-auto' },\n { text: '1m', value: '+60s' },\n { text: '2m', value: '+120s' },\n { text: '5m', value: '+300s' },\n { text: '10m', value: '+600s' },\n { text: '30m', value: '+1800s' },\n { text: '1h', value: '+3600s' },\n { text: '3h', value: '+7200s' },\n { text: '6h', value: '+21600s' },\n { text: '1d', value: '+86400s' },\n { text: '3d', value: '+259200s' },\n { text: '1w', value: '+604800s' },\n];\n\nexport const GRAPH_PERIODS: periodOption[] = [\n { text: 'auto', value: 'auto' },\n { text: '1m', value: '1m' },\n { text: '2m', value: '2m' },\n { text: '5m', value: '5m' },\n { text: '10m', value: '10m' },\n { text: '30m', value: '30m' },\n { text: '1h', value: '1h' },\n { text: '3h', value: '3h' },\n { text: '6h', value: '6h' },\n { text: '1d', value: '1d' },\n { text: '3d', value: '3d' },\n { text: '1w', value: '1w' },\n];\n\n// Usable units: ns, us, ms, s, m, h\n// ref. https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/timeseries-selectors#tss-names-args\nexport const LOOKBACK_PERIODS: periodOption[] = [\n { text: '1m', value: '1m' },\n { text: '2m', value: '2m' },\n { text: '5m', value: '5m' },\n { text: '10m', value: '10m' },\n { text: '30m', value: '30m' },\n { text: '1h', value: '1h' },\n { text: '3h', value: '3h' },\n { text: '6h', value: '6h' },\n { text: '24h', value: '24h' },\n { text: '72h', value: '72h' },\n];\n\nexport const SYSTEM_LABELS = [\n 'metadata.system_labels.cloud_account',\n 'metadata.system_labels.name',\n 'metadata.system_labels.region',\n 'metadata.system_labels.state',\n 'metadata.system_labels.instance_group',\n 'metadata.system_labels.node_name',\n 'metadata.system_labels.service_name',\n 'metadata.system_labels.top_level_controller_type',\n 'metadata.system_labels.top_level_controller_name',\n 'metadata.system_labels.container_image',\n];\n\nexport const SLO_BURN_RATE_SELECTOR_NAME = 'select_slo_burn_rate';\n\nexport const SELECTORS = [\n { label: 'SLI Value', value: 'select_slo_health' },\n { label: 'SLO Compliance', value: 'select_slo_compliance' },\n { label: 'SLO Error Budget Remaining', value: 'select_slo_budget_fraction' },\n { label: 'SLO Burn Rate', value: SLO_BURN_RATE_SELECTOR_NAME },\n];\n\nexport const QUERY_TYPES = [\n { label: 'Builder', value: QueryType.TIME_SERIES_LIST },\n { label: 'MQL', value: QueryType.TIME_SERIES_QUERY },\n { label: 'Service Level Objectives (SLO)', value: QueryType.SLO },\n];\n","import { chunk, initial, startCase, uniqBy } from 'lodash';\n\nimport { rangeUtil } from '@grafana/data';\nimport { getTemplateSrv, TemplateSrv } from '@grafana/runtime';\n\nimport { AGGREGATIONS, ALIGNMENTS, SYSTEM_LABELS } from './constants';\nimport CloudMonitoringDatasource from './datasource';\nimport {\n AlignmentTypes,\n CustomMetaData,\n MetricDescriptor,\n MetricKind,\n PreprocessorType,\n TimeSeriesList,\n ValueTypes,\n} from './types';\n\nexport const extractServicesFromMetricDescriptors = (metricDescriptors: MetricDescriptor[]) =>\n uniqBy(metricDescriptors, 'service');\n\nexport const getMetricTypesByService = (metricDescriptors: MetricDescriptor[], service: string) =>\n metricDescriptors.filter((m: MetricDescriptor) => m.service === service);\n\nexport const getMetricTypes = (\n metricDescriptors: MetricDescriptor[],\n metricType: string,\n interpolatedMetricType: string,\n selectedService: string\n) => {\n const metricTypes = getMetricTypesByService(metricDescriptors, selectedService).map((m) => ({\n value: m.type,\n name: m.displayName,\n }));\n const metricTypeExistInArray = metricTypes.some(\n (m: { value: string; name: string }) => m.value === interpolatedMetricType\n );\n const metricTypeByService = metricTypes.length ? metricTypes[0].value : '';\n const selectedMetricType = metricTypeExistInArray ? metricType : metricTypeByService;\n return {\n metricTypes,\n selectedMetricType,\n };\n};\n\nexport const getAlignmentOptionsByMetric = (\n metricValueType?: string,\n metricKind?: string,\n preprocessor?: PreprocessorType\n) => {\n if (preprocessor && preprocessor === PreprocessorType.Rate) {\n metricKind = MetricKind.GAUGE;\n }\n\n return !metricValueType\n ? []\n : ALIGNMENTS.filter((i) => {\n return (\n i.valueTypes.indexOf(metricValueType as ValueTypes) !== -1 &&\n i.metricKinds.indexOf(metricKind as MetricKind) !== -1\n );\n });\n};\n\nexport const getAggregationOptionsByMetric = (valueType: ValueTypes, metricKind: MetricKind) => {\n return !metricKind\n ? []\n : AGGREGATIONS.filter((i) => {\n return i.valueTypes.indexOf(valueType) !== -1 && i.metricKinds.indexOf(metricKind) !== -1;\n });\n};\n\nexport const getLabelKeys = async (\n datasource: CloudMonitoringDatasource,\n selectedMetricType: string,\n projectName: string\n) => {\n const refId = 'handleLabelKeysQuery';\n const labels = await datasource.getLabels(selectedMetricType, refId, projectName);\n return [...Object.keys(labels), ...SYSTEM_LABELS];\n};\n\nexport const getAlignmentPickerData = (\n valueType: string | undefined = ValueTypes.DOUBLE,\n metricKind: string | undefined = MetricKind.GAUGE,\n perSeriesAligner: string | undefined = AlignmentTypes.ALIGN_MEAN,\n preprocessor?: PreprocessorType\n) => {\n const templateSrv: TemplateSrv = getTemplateSrv();\n const alignOptions = getAlignmentOptionsByMetric(valueType, metricKind, preprocessor).map((option) => ({\n ...option,\n label: option.text,\n }));\n if (!alignOptions.some((o: { value: string }) => o.value === templateSrv.replace(perSeriesAligner))) {\n perSeriesAligner = alignOptions.length > 0 ? alignOptions[0].value : AlignmentTypes.ALIGN_MEAN;\n }\n return { alignOptions, perSeriesAligner };\n};\n\nexport const labelsToGroupedOptions = (groupBys: string[]) => {\n const groups = groupBys.reduce((acc: any, curr: string) => {\n const arr = curr.split('.').map(startCase);\n const group = (arr.length === 2 ? arr : initial(arr)).join(' ');\n const option = {\n value: curr,\n label: curr,\n };\n if (acc[group]) {\n acc[group] = [...acc[group], option];\n } else {\n acc[group] = [option];\n }\n return acc;\n }, {});\n return Object.entries(groups).map(([label, options]) => ({ label, options, expanded: true }), []);\n};\n\nexport const stringArrayToFilters = (filterArray: string[]) =>\n chunk(filterArray, 4).map(([key, operator, value, condition = 'AND']) => ({\n key,\n operator,\n value,\n condition,\n }));\n\nexport const alignmentPeriodLabel = (customMetaData: CustomMetaData, datasource: CloudMonitoringDatasource) => {\n const { perSeriesAligner, alignmentPeriod } = customMetaData;\n if (!alignmentPeriod || !perSeriesAligner) {\n return '';\n }\n\n const alignment = ALIGNMENTS.find((ap) => ap.value === datasource.templateSrv.replace(perSeriesAligner));\n const seconds = parseInt(alignmentPeriod, 10);\n const hms = rangeUtil.secondsToHms(seconds);\n return `${hms} interval (${alignment?.text ?? ''})`;\n};\n\nexport const getMetricType = (query?: TimeSeriesList) => {\n const metricTypeKey = query?.filters?.findIndex((f) => f === 'metric.type')!;\n // filters are in the format [key, operator, value] so we need to add 2 to get the value\n const metricType = query?.filters?.[metricTypeKey + 2];\n return metricType || '';\n};\n\nexport const setMetricType = (query: TimeSeriesList, metricType: string) => {\n if (!query.filters) {\n query.filters = ['metric.type', '=', metricType];\n return query;\n }\n const metricTypeKey = query?.filters?.findIndex((f) => f === 'metric.type')!;\n if (metricTypeKey === -1) {\n query.filters.push('metric.type', '=', metricType);\n } else {\n // filters are in the format [key, operator, value] so we need to add 2 to get the value\n query.filters![metricTypeKey + 2] = metricType;\n }\n return query;\n};\n","import { DataQuery, DataSourceJsonData, SelectableValue } from '@grafana/data';\nimport { GoogleAuthType } from '@grafana/google-sdk';\n\nexport const authTypes: Array> = [\n { label: 'Google JWT File', value: GoogleAuthType.JWT },\n { label: 'GCE Default Service Account', value: GoogleAuthType.GCE },\n];\n\nexport enum MetricFindQueryTypes {\n Projects = 'projects',\n Services = 'services',\n DefaultProject = 'defaultProject',\n MetricTypes = 'metricTypes',\n LabelKeys = 'labelKeys',\n LabelValues = 'labelValues',\n ResourceTypes = 'resourceTypes',\n Aggregations = 'aggregations',\n Aligners = 'aligners',\n AlignmentPeriods = 'alignmentPeriods',\n Selectors = 'selectors',\n SLOServices = 'sloServices',\n SLO = 'slo',\n}\n\nexport interface CloudMonitoringVariableQuery extends DataQuery {\n selectedQueryType: string;\n selectedService: string;\n selectedMetricType: string;\n selectedSLOService: string;\n labelKey: string;\n projects: SelectableValue[];\n sloServices: SelectableValue[];\n projectName: string;\n}\n\nexport interface VariableQueryData {\n selectedQueryType: string;\n metricDescriptors: MetricDescriptor[];\n selectedService: string;\n selectedMetricType: string;\n selectedSLOService: string;\n labels: string[];\n labelKey: string;\n metricTypes: Array<{ value: string; name: string }>;\n services: SelectableValue[];\n projects: SelectableValue[];\n sloServices: SelectableValue[];\n projectName: string;\n loading: boolean;\n}\n\nexport interface Aggregation {\n crossSeriesReducer?: string;\n groupBys?: string[];\n}\n\nexport enum QueryType {\n TIME_SERIES_LIST = 'timeSeriesList',\n TIME_SERIES_QUERY = 'timeSeriesQuery',\n SLO = 'slo',\n ANNOTATION = 'annotation',\n}\n\nexport enum PreprocessorType {\n None = 'none',\n Rate = 'rate',\n Delta = 'delta',\n}\n\nexport enum MetricKind {\n METRIC_KIND_UNSPECIFIED = 'METRIC_KIND_UNSPECIFIED',\n GAUGE = 'GAUGE',\n DELTA = 'DELTA',\n CUMULATIVE = 'CUMULATIVE',\n}\n\nexport enum ValueTypes {\n VALUE_TYPE_UNSPECIFIED = 'VALUE_TYPE_UNSPECIFIED',\n BOOL = 'BOOL',\n INT64 = 'INT64',\n DOUBLE = 'DOUBLE',\n STRING = 'STRING',\n DISTRIBUTION = 'DISTRIBUTION',\n MONEY = 'MONEY',\n}\n\nexport enum AlignmentTypes {\n ALIGN_DELTA = 'ALIGN_DELTA',\n ALIGN_RATE = 'ALIGN_RATE',\n ALIGN_INTERPOLATE = 'ALIGN_INTERPOLATE',\n ALIGN_NEXT_OLDER = 'ALIGN_NEXT_OLDER',\n ALIGN_MIN = 'ALIGN_MIN',\n ALIGN_MAX = 'ALIGN_MAX',\n ALIGN_MEAN = 'ALIGN_MEAN',\n ALIGN_COUNT = 'ALIGN_COUNT',\n ALIGN_SUM = 'ALIGN_SUM',\n ALIGN_STDDEV = 'ALIGN_STDDEV',\n ALIGN_COUNT_TRUE = 'ALIGN_COUNT_TRUE',\n ALIGN_COUNT_FALSE = 'ALIGN_COUNT_FALSE',\n ALIGN_FRACTION_TRUE = 'ALIGN_FRACTION_TRUE',\n ALIGN_PERCENTILE_99 = 'ALIGN_PERCENTILE_99',\n ALIGN_PERCENTILE_95 = 'ALIGN_PERCENTILE_95',\n ALIGN_PERCENTILE_50 = 'ALIGN_PERCENTILE_50',\n ALIGN_PERCENTILE_05 = 'ALIGN_PERCENTILE_05',\n ALIGN_PERCENT_CHANGE = 'ALIGN_PERCENT_CHANGE',\n ALIGN_NONE = 'ALIGN_NONE',\n}\n\n// deprecated: use TimeSeriesList instead\n// left here for migration purposes\nexport interface MetricQuery {\n projectName: string;\n perSeriesAligner?: string;\n alignmentPeriod?: string;\n aliasBy?: string;\n editorMode: string;\n metricType: string;\n crossSeriesReducer: string;\n groupBys?: string[];\n filters?: string[];\n metricKind?: MetricKind;\n valueType?: string;\n view?: string;\n query: string;\n preprocessor?: PreprocessorType;\n // To disable the graphPeriod, it should explictly be set to 'disabled'\n graphPeriod?: 'disabled' | string;\n}\n\nexport interface TimeSeriesList {\n projectName: string;\n crossSeriesReducer: string;\n alignmentPeriod?: string;\n perSeriesAligner?: string;\n groupBys?: string[];\n filters?: string[];\n view?: string;\n secondaryCrossSeriesReducer?: string;\n secondaryAlignmentPeriod?: string;\n secondaryPerSeriesAligner?: string;\n secondaryGroupBys?: string[];\n // preprocessor is not part of the API, but is used to store the preprocessor\n // and not affect the UI for the rest of parameters\n preprocessor?: PreprocessorType;\n}\n\nexport interface TimeSeriesQuery {\n projectName: string;\n query: string;\n // To disable the graphPeriod, it should explictly be set to 'disabled'\n graphPeriod?: 'disabled' | string;\n}\n\nexport interface AnnotationQuery extends TimeSeriesList {\n title?: string;\n text?: string;\n}\n\nexport interface SLOQuery {\n projectName: string;\n perSeriesAligner?: string;\n alignmentPeriod?: string;\n selectorName: string;\n serviceId: string;\n serviceName: string;\n sloId: string;\n sloName: string;\n goal?: number;\n lookbackPeriod?: string;\n}\n\nexport interface CloudMonitoringQuery extends DataQuery {\n aliasBy?: string;\n datasourceId?: number; // Should not be necessary anymore\n queryType: QueryType;\n timeSeriesList?: TimeSeriesList | AnnotationQuery;\n timeSeriesQuery?: TimeSeriesQuery;\n sloQuery?: SLOQuery;\n intervalMs: number;\n}\n\nexport interface CloudMonitoringOptions extends DataSourceJsonData {\n defaultProject?: string;\n gceDefaultProject?: string;\n authenticationType: GoogleAuthType;\n clientEmail?: string;\n tokenUri?: string;\n}\n\nexport interface CloudMonitoringSecureJsonData {\n privateKey?: string;\n}\n\nexport interface LegacyCloudMonitoringAnnotationQuery {\n projectName: string;\n metricType: string;\n refId: string;\n filters: string[];\n metricKind: MetricKind;\n valueType: string;\n title: string;\n text: string;\n}\n\nexport interface QueryMeta {\n alignmentPeriod: string;\n rawQuery: string;\n rawQueryString: string;\n metricLabels: { [key: string]: string[] };\n resourceLabels: { [key: string]: string[] };\n resourceTypes: string[];\n}\n\nexport interface MetricDescriptor {\n valueType: string;\n metricKind: MetricKind;\n type: string;\n unit: string;\n service: string;\n serviceShortName: string;\n displayName: string;\n description: string;\n}\n\nexport interface Segment {\n type: string;\n value: string;\n}\n\nexport interface Filter {\n key: string;\n operator: string;\n value: string;\n condition?: string;\n}\n\nexport interface CustomMetaData {\n perSeriesAligner?: string;\n alignmentPeriod?: string;\n}\n\nexport interface PostResponse {\n results: Record;\n}\n","Object.defineProperty(exports,\"__esModule\",{value:!0});var e=require(\"@grafana/data\"),t=require(\"@grafana/ui\"),a=require(\"react\"),n=require(\"lodash\");function l(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var o=l(a),r=function(){return r=Object.assign||function(e){for(var t,a=1,n=arguments.length;a0)&&!(n=o.next()).done;)r.push(n.value)}catch(e){l={error:e}}finally{try{n&&!n.done&&(a=o.return)&&a.call(o)}finally{if(l)throw l.error}}return r}var u,c=\"Configuration help box\",d=\"Configuration drop zone\",f=\"Configuration text area\",s=\"Paste JWT button\",p=\"Reset JWT button\",m=\"JWT form\",y=\"JWT button\",h=\"GCE button\",v=[\"private_key\",\"token_uri\",\"client_email\",\"project_id\"],g=function(e){var n=e.onChange,l=i(a.useState(),2),r=l[0],u=l[1],c=i(a.useState(null),2),p=c[0],m=c[1],y=t.useTheme2(),h=a.useCallback((function(e){u(null),m(!0)}),[m]),v=a.useCallback((function(e){m(null),u(null)}),[m]),g=a.useCallback((function(e){if(\"\"!==e.trim()){var t=void 0;try{t=JSON.parse(e)}catch(e){u(\"Invalid JWT token\")}var a=E(t);a.isValid?n({privateKey:t.private_key,tokenUri:t.token_uri,clientEmail:t.client_email,projectId:t.project_id}):u(a.error)}}),[u,n]);return o.default.createElement(o.default.Fragment,null,o.default.createElement(t.Field,{label:\"JWT token\",invalid:Boolean(r),description:p?\"Paste JWT token below\":\"Upload or paste Google JWT token\",error:r},o.default.createElement(o.default.Fragment,null,!0!==p&&o.default.createElement(\"div\",{\"data-testid\":d},o.default.createElement(t.FileDropzone,{options:{multiple:!1,accept:\"application/json\"},readAs:\"readAsText\",onLoad:function(e){g(e),m(!1)}},o.default.createElement(\"p\",{style:{margin:0,fontSize:\"\"+y.typography.h4.fontSize,textAlign:\"center\"}},\"Drop the Google JWT file here\",o.default.createElement(\"br\",null),o.default.createElement(\"br\",null),o.default.createElement(t.Button,{fill:\"outline\"},\"Click to browse files\")))),p&&o.default.createElement(t.TextArea,{\"data-testid\":f,autoFocus:!0,invalid:Boolean(r),placeholder:\"Paste Google JWT token here\",onBlur:function(e){return g(e.currentTarget.value)},rows:12}))),!p&&o.default.createElement(t.Field,null,o.default.createElement(t.Button,{\"data-testid\":s,type:\"button\",fill:\"outline\",style:{color:\"\"+y.colors.primary.text},onClick:h},\"Paste JWT Token\")),p&&r&&o.default.createElement(t.Field,null,o.default.createElement(t.Button,{type:\"button\",fill:\"outline\",style:{color:\"\"+y.colors.primary.text},onClick:v},\"Upload JWT Token\")))},E=function(e){if(!n.isObject(e))return{isValid:!1,error:\"Invalid JWT token\"};var t=v.filter((function(t){return!e[t]}));return t.length>0?{isValid:!1,error:\"Missing keys: \"+t.join(\", \")}:{isValid:!0}},T=function(e){var a=e.options,n=e.onReset,l=e.onChange;return o.default.createElement(\"div\",{\"data-testid\":m},o.default.createElement(t.Field,{label:\"Project ID\"},o.default.createElement(t.Input,{id:\"defaultProject\",width:60,value:a.defaultProject||\"\",onChange:l(\"defaultProject\")})),o.default.createElement(t.Field,{label:\"Client email\"},o.default.createElement(t.Input,{width:60,id:\"clientEmail\",value:a.clientEmail||\"\",onChange:l(\"clientEmail\")})),o.default.createElement(t.Field,{label:\"Token URI\"},o.default.createElement(t.Input,{width:60,id:\"tokenUri\",value:a.tokenUri||\"\",onChange:l(\"tokenUri\")})),o.default.createElement(t.Field,{label:\"Private key\",disabled:!0},o.default.createElement(t.Input,{width:60,id:\"privateKey\",readOnly:!0,placeholder:\"Private key configured\",addonAfter:o.default.createElement(t.Tooltip,{content:\"Click to clear the uploaded JWT token and upload a new one\"},o.default.createElement(t.Button,{\"data-testid\":p,icon:\"sync\",size:\"xs\",onClick:function(){return n(null)},fill:\"outline\"},\"Reset token\"))})))};exports.GoogleAuthType=void 0,(u=exports.GoogleAuthType||(exports.GoogleAuthType={})).JWT=\"jwt\",u.GCE=\"gce\";var k=[{label:\"Google JWT File\",value:exports.GoogleAuthType.JWT,ariaLabel:y},{label:\"GCE Default Service Account\",value:exports.GoogleAuthType.GCE,ariaLabel:h}];exports.ConnectionConfig=function(a){var n=a.options,l=a.onOptionsChange,i=n.jsonData,u=n.secureJsonFields,d=n.secureJsonData;i.authenticationType||(i.authenticationType=exports.GoogleAuthType.JWT);var f=i.authenticationType===exports.GoogleAuthType.JWT||void 0===i.authenticationType,s=Boolean(u&&u.privateKey&&i.clientEmail&&i.defaultProject&&i.tokenUri);return o.default.createElement(o.default.Fragment,null,o.default.createElement(t.FieldSet,{label:\"Authentication\"},o.default.createElement(t.Field,{label:\"Authentication type\"},o.default.createElement(t.RadioButtonGroup,{options:k,value:i.authenticationType||exports.GoogleAuthType.JWT,onChange:function(e){l(r(r({},n),{jsonData:r(r({},n.jsonData),{authenticationType:e})}))}}))),f&&o.default.createElement(t.FieldSet,{label:\"JWT Key Details\"},s?o.default.createElement(T,{options:n.jsonData,onReset:function(e){var t=r({},d),a=e?r(r({},n.jsonData),e):r({},n.jsonData);delete a.clientEmail,delete a.defaultProject,delete a.tokenUri,delete t.privateKey,l(r(r({},n),{secureJsonData:t,jsonData:a}))},onChange:function(t){return e.onUpdateDatasourceJsonDataOption(a,t)}}):o.default.createElement(g,{onChange:function(e){l(r(r({},n),{secureJsonFields:r(r({},u),{privateKey:!0}),secureJsonData:r(r({},d),{privateKey:e.privateKey}),jsonData:r(r({},i),{clientEmail:e.clientEmail,defaultProject:e.projectId,tokenUri:e.tokenUri})}))}}),\" \"),o.default.createElement(\"div\",{className:\"grafana-info-box\",style:{marginTop:\"16px\"},\"data-testid\":c},o.default.createElement(\"p\",null,\"Don’t know how to get a service account key file or create a service account? Read more\",\" \",o.default.createElement(\"a\",{className:\"external-link\",target:\"_blank\",rel:\"noopener noreferrer\",href:\"https://grafana.com/docs/grafana/latest/datasources/google-cloud-monitoring/google-authentication/\"},\"in the documentation.\"))),!f&&o.default.createElement(t.Alert,{title:\"\",severity:\"info\"},\"Verify GCE default service account by clicking Save & Test\"))};\n//# sourceMappingURL=index.production.js.map\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./dist/index.production.js');\n} else {\n module.exports = require('./dist/index.development.js');\n}\n"],"names":["Aggregation","props","aggOptions","useAggregationOptionsByMetric","selected","useSelectedFromOptions","value","metricDescriptor","valueType","metricKind","a","s","AliasBy","refId","onChange","alias","setAlias","propagateOnChange","e","Alignment","templateVariableOptions","query","customMetaData","datasource","preprocessor","alignmentLabel","q","period","AlignmentFunction","inputId","psa","perSeriesAligner","alignOptions","GroupBy","groupBys","variableOptionGroup","options","o","crossSeriesReducer","DEFAULT_OPERATOR","DEFAULT_CONDITION","filtersToStringArray","filters","key","operator","condition","operators","protectedFilterKeys","LabelFilter","labels","filterArray","_onChange","rawFilters","protectedFilters","getOptions","op","opp","valueOptions","items","renderItem","item","onChangeItem","onDeleteItem","v","MQLQueryEditor","onRunQuery","onKeyDown","event","GraphPeriod","graphPeriod","Switch","defaultTimeSeriesList","dataSource","defaultTimeSeriesQuery","Editor","onQueryChange","onChangeTimeSeriesList","timeSeriesList","onChangeTimeSeriesQuery","timeSeriesQuery","VisualMetricQueryEditor","aliasBy","MetricQueryEditor","PeriodSelect","current","disabled","aligmentPeriods","ap","visibleOptions","NONE_OPTION","Preprocessor","useOptions","Project","projectName","projects","setProjects","projectsWithTemplateVariables","QueryHeader","queryType","QueryEditor","oldQ","migrated","setMigrated","sloQuery","onSLOQueryChange","LookbackPeriodSelect","lp","Select","SLO","slos","setSLOs","serviceId","sloIds","sloId","sloName","slo","Selector","selectorName","Service","services","setServices","serviceName","defaultQuery","SLOQueryEditor","onChangeAliasBy","lookbackPeriod","setLabels","metricDescriptors","setMetricDescriptors","setMetricDescriptor","metrics","setMetrics","service","setService","timeRange","setTimeRange","time","theme","selectStyles","customStyle","getStyles","metricType","templateSrv","getSelectedMetricDescriptor","md","getServicesList","selectedMetricDescriptor","m","onServiceChange","onMetricTypeChange","AnnotationsHelp","VariableQueryField","label","allowCustomValue","InlineField","INPUT_WIDTH","LABEL_WIDTH","INNER_LABEL_WIDTH","SELECT_WIDTH","AUTH_TYPES","ALIGNMENTS","AGGREGATIONS","ALIGNMENT_PERIODS","GRAPH_PERIODS","LOOKBACK_PERIODS","SYSTEM_LABELS","SLO_BURN_RATE_SELECTOR_NAME","SELECTORS","QUERY_TYPES","extractServicesFromMetricDescriptors","getMetricTypesByService","getMetricTypes","interpolatedMetricType","selectedService","metricTypes","metricTypeExistInArray","metricTypeByService","getAlignmentOptionsByMetric","metricValueType","i","getAggregationOptionsByMetric","getLabelKeys","selectedMetricType","getAlignmentPickerData","option","labelsToGroupedOptions","groups","acc","curr","arr","group","stringArrayToFilters","alignmentPeriodLabel","alignmentPeriod","alignment","seconds","getMetricType","metricTypeKey","f","setMetricType","authTypes","MetricFindQueryTypes","QueryType","PreprocessorType","MetricKind","ValueTypes","AlignmentTypes","t","n","l","r","u","c","d","p","y","h","g","E","T","exports","k","module"],"sourceRoot":""}