cosmosc2-tool-cmdsender 5.0.2.pre.beta2 → 5.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/tools/cmdsender/js/133.js +4 -0
- data/tools/cmdsender/js/133.js.map +1 -0
- data/tools/cmdsender/js/93.js +1 -1
- data/tools/cmdsender/js/93.js.map +1 -1
- data/tools/cmdsender/js/app.js +1 -1
- data/tools/cmdsender/js/app.js.map +1 -1
- metadata +7 -7
- data/tools/cmdsender/js/803.js +0 -2
- data/tools/cmdsender/js/803.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js/93.js","mappings":"iq4EAgOA,0BACEA,WAAY,CACVC,cAAJA,iFAAAA,EACIC,wBAAJA,2FAAAA,EACIC,uBAAJA,0EAAAA,EACIC,OAAJA,0EAAAA,GAEEC,KAPF,WAOA,WACI,OADJ,gDACW,CACLC,MAAO,iBACPC,OAAQ,GACRC,QAAS,CACf,CAAQ,KAARC,OAAQ,MAARC,kBACA,CAAQ,KAARD,iBAAQ,MAARC,kBACA,CAAQ,KAARD,QAAQ,MAARC,SACA,CAAQ,KAARD,cAAQ,MAARC,gBAEMC,WAAY,GACZC,YAAa,GACbC,mBAAmB,EACnBC,aAAa,EACbC,mBAAmB,EACnBC,QAAQ,EACRC,cAAe,GACfC,KAAM,GACNC,WAAY,GACZC,kBAAmB,GACnBC,WAAY,KACZC,OAAQ,GACRC,QAAS,GACTC,sBAAsB,EACtBC,oBAAoB,EACpBC,gBAAgB,EAChBC,cAAc,EACdC,IAAK,KACLC,aAAa,EACbC,kBAAkB,EAClBC,cAAe,GACfC,kBAAmB,GACnBC,EAAG,EACHC,EAAG,EACHC,mBAAoB,CAC1B,CACQ,MAAR7B,UACQ,OAAR8B,WAAU,iBAAV,OAAU,iBAAV,OACU,EAAV,oBADU,iBAAV,OAEU,EAAV,kBAIMC,MAAO,CAaP,CACE,MAARC,OACQ,MAARC,CACA,CACU,MAAVD,sBACU,UAAVE,EACU,QAAVC,WAAY,iBAAZ,OAAY,iBAAZ,OACY,EAAZ,yCAGA,CACU,MAAVH,8BACU,UAAVE,EACU,QAAVC,WAAY,iBAAZ,OAAY,iBAAZ,OACY,EAAZ,6BAGA,CACU,MAAVH,0BACU,UAAVE,EACU,QAAVC,WAAY,iBAAZ,OAAY,iBAAZ,OACY,EAAZ,uCADY,iBAAZ,OAIY,EAAZ,oBAGA,CACU,MAAVH,gCACU,UAAVE,EACU,QAAVC,WAAY,iBAAZ,OAAY,iBAAZ,OACY,EAAZ,wBAQEC,QAtGF,WAsGA,2DACIC,qEAAAA,EAAAA,IAAQ,gDAADA,MAAAA,SAAAA,GAAX,gDACM,EAAN,4BAFA,yBAIIC,KAAKhB,IAAM,IAAI,8EAJnB,yBAMA,kKACMgB,KAAKC,eAAe,CAClBlC,WAAYiC,KAAKE,OAAOC,OAAOC,OAAOC,cACtCC,WAAYN,KAAKE,OAAOC,OAAOI,OAAOF,iBAH9C,4BAOEG,QAAS,CACPC,mBADJ,WAEM,OADN,iDACaT,KAAKU,SAASC,MAAMC,YAAYC,SAASC,SAElDC,aAJJ,SAIAC,GAAA,iDAEMA,EAAMC,iBACN,IAAN,4DACA,8CAEA,qDAEA,6DACA,2CAEM,GAXN,yBAWsB,KAAZpB,EACF,OADR,oFAKM,IAAN,4CACA,gDAjBA,yBAkBMA,EAAUA,EAAQqB,OAAOC,EAAa,EAAGC,EAAYD,EAAa,GAlBxE,yBAmBMnB,KAAKqB,QAAQxB,IAGfyB,gBA1BJ,SA0BAC,EAAAC,GAAA,6DACMD,EAAEN,iBADR,yBAEMjB,KAAKb,cAAgBqC,EAAIC,KAAKC,eAFpC,yBAGM1B,KAAKd,kBAAmB,EAH9B,yBAIMc,KAAKX,EAAIkC,EAAEI,QAJjB,yBAKM3B,KAAKV,EAAIiC,EAAEK,QALjB,yBAMM5B,KAAK6B,WAAU,WAArB,kDACQ,EAAR,wBAIIC,QArCJ,SAqCAC,GAEM,OAFN,kDAEU,wBAAwBC,KAAKD,IAAvC,qDACe,IADf,2BAFA,yBAMU,mDAAmDC,KAAKD,IAAlE,qDACe,IADf,2BANA,0BASa,KAGTE,MAjDJ,SAiDAF,GAEM,OAFN,kDAEU,mBAAmBC,KAAKD,IAAlC,qDACe,IADf,2BAFA,yBAOU,iCAAiCC,KAAKD,IAAhD,qDACe,IADf,2BAPA,0BAUa,KAGTG,QA9DJ,SA8DAH,GAEM,OAFN,kDAEU,iBAAiBC,KAAKD,IAAhC,qDACe,IADf,2BAFA,0BAKa,IAGTI,aAtEJ,SAsEAJ,GAEM,GAFN,kDAEUA,EAAIK,OAAS,EACf,OADR,oDACeL,EADf,2BAGM,IAAIM,GAAV,sCACM,GANN,yBAMA,yEACQ,OADR,oDACeN,EADf,2BAGM,IAAIO,GAAV,+CACM,OAVN,yBAUUD,GAAaC,GAAvB,qDACeP,IADf,4BAVA,yBAaaA,EAAIQ,MAAM,GAAI,KAGvBC,eAtFJ,wBAsFAC,OACM,GADN,kDAC6C,iBAA5BA,MAAMC,eAAeC,IAC9B,OADR,qDACeF,MAAMC,eAAeC,IADpC,4BAIM,IAAIZ,KAAV,mDACUa,gBAAV,iDACM,GAPN,yBAOUb,KAAOa,eAAgB,CAAjC,4BACQ,IAAIC,WAAZ,4CAEQ,GAHR,yBAIA,mIACAA,UAAAA,WAAAA,OAaU,OADV,qDAC2B,YAAbA,WAAd,qDACmBC,EAAAA,IACnB,mIACA,MACA,4HACA,MACA,6HACA,kBACA,2HACA,gBACA,6HACA,YACA,qDACA,UAzBA,4BACU,IAAIC,QAAd,6CADA,yBAEcA,OAAOX,OAAS,GAAK,GAAnC,qDACYW,OAAS,IAAMA,QAD3B,4BAGU,IAAIC,MAAd,0BAAAC,WAAAA,SAAAC,IAAAA,KALA,yBAMU,IAAK,IAAIC,GAAnB,kDACY,IAAIC,QAAhB,8DADA,yBAEYJ,KAAKE,IAAIG,KAAKC,SAASF,OAAQ,KAEjC,OAVV,yBAUiBJ,KAmBT,OADR,qDACeJ,gBAIXW,gBApIJ,SAoIAzF,GAAA,yBACM,IAAIqF,GAAV,4BACUK,GAAV,6BACM,GAHN,yBAGiE,UAAvDC,OAAOC,UAAUC,SAASC,KAAK9F,GAAOyE,MAAM,GAAI,GAAgB,CAA1E,4BACQ,IAAIsB,GAAZ,mCAEQ,IAHR,yBAEQL,EAAe,KAFvB,yBAGaL,EAAI,EAAGA,EAAIU,EAAaV,IAArC,yBAEAM,WAAAA,OAAAA,UAAAA,SAAAA,KAAAA,EAAAA,IAAAA,MAAAA,GAAAA,IACA,qDACYD,GAAgB,IAAM1F,EAAMqF,GAAK,MAC7C,qDACYK,GAAgB1F,EAAMqF,IANlC,yBAQcA,GAAKU,EAAc,GAAjC,qDACYL,GAAgB,MAD5B,4BAXA,yBAeQA,GAAgB,UACxB,wDACAC,WAAAA,OAAAA,UAAAA,SAAAA,KAAAA,GAAAA,MAAAA,GAAAA,GAEA,GADA,qDACA,wFAGA,IAHA,qDAEAD,EAAAA,KAFA,0BAGA,wBACA,sEADA,0BAEA,kEACAJ,EAAAA,IAAAA,GADA,4BAFA,0BAKAI,GAAAA,OAEA,oMACAA,EAAAA,EAAAA,MACA,sDAEAA,EAAAA,OAAAA,SAEA,sDACAA,EAAAA,OAAAA,GAEM,OAzCN,0BAyCaA,GAGTvD,eAhLJ,SAgLAe,GAAA,mDAEA,yFACA,kCACA,sDACQhB,KAAKjC,WAAaiD,EAAMjD,WADhC,0BAEQiC,KAAKhC,YAAcgD,EAAMV,WAFjC,2BAIkC,IAAtBN,KAAKjB,cAAjB,sDACUiB,KAAK8D,mBADf,4BAJA,0BAOQ9D,KAAK+D,QACbC,QAAA,CACU,KAAVC,gBACU,OAAV9D,CACY,OAAZC,KAAAA,WACY,OAAZG,KAAAA,eAIA2D,OAAA,YAAU,iBAAV,YAnBA,6BAuBIJ,gBAxMJ,WAwMA,8DACM9D,KAAKjB,cAAe,EAD1B,0BAEMiB,KAAK3B,cAAgB,GAF3B,0BAGM2B,KAAK1B,KAAO,GAHlB,0BAIM0B,KAAKhB,IACXmF,WAAA,iBACAC,MACA,YAEQ,OAFA,iBAAR,QAAQ,iBAAR,SACQ,EAAR,mCADQ,iBAAR,SAEA,iDAEA,YAAQ,iBAAR,QAAQ,iBAAR,SACQ,EAAR,gDAGAA,MACA,YAAQ,iBAAR,QAAQ,iBAAR,SACQ,EAARvE,MAAAA,SAAAA,SAAAA,GACU,GADA,iBAAV,QAAU,iBAAV,SACA,qCAAY,wBAAZ,gBAAY,iBAAZ,SACU,GADE,iBAAZ,WADU,iBAAV,SAGA,4FACA,qBACA,CAAY,iBAAZ,WACY,IAAZ,wCADY,iBAAZ,SAEA,YAAc,iBAAd,WAAc,iBAAd,SACc,EAAd8C,IADc,iBAAd,WAFY,iBAAZ,SAKA,iBAAc,iBAAd,WAAc,iBAAd,SACc,EAAdA,QAAAA,EAAAA,cAAAA,EAAAA,UADc,iBAAd,WALY,iBAAZ,SAQY,EAAZ,WACc,eAAdjB,EAAAA,KACc,eAAdgB,CACgB,IAAhBC,EACgB,OAAhB0B,EAAAA,OACgB,eAAhBC,KACgB,qBAAhBC,GACgB,aAAhBC,MAEc,YAAdC,EAAAA,YACc,MAAdC,EAAAA,MACc,KAAdC,EAAAA,iBAtBY,iBAAZ,cAHQ,iBAAR,SA6BQ,EAAR,gBA7BQ,iBAAR,SA8BQ,EAAR,aAEA,YAAQ,iBAAR,QAAQ,iBAAR,SACQ,EAAR,iDAKIC,aA9PJ,SA8PA5D,GAAA,mDACMhB,KAAKtB,OAASsC,EAAMtC,QAGtBmG,gBAlQJ,WAkQA,yBACM,IAAN,iCADA,0BAEM,IAAK,IAAI1B,GAAf,8EACQ2B,EAAU9E,KAAK1B,KAAK6E,GAAGzB,gBAAkB1B,KAAKwC,eACtD,cAGM,OAPN,0BAOasC,GAGTC,SA5QJ,WA4QA,mDACM/E,KAAKqB,QAAQrB,KAAKjC,WAAYiC,KAAKhC,YAAagC,KAAK6E,oBAOvDxD,QApRJ,SAoRAtD,EAAAC,EAAA8G,GAAA,8DACM9E,KAAKjB,cAAe,EACpB,IAAN,iCACA,0BAHA,0BAIMiB,KAAKhB,IAAIgG,kBAAkBjH,EAAYC,EAAa8G,GAAWV,MACrE,YAMU,IAAV,GANQ,iBAAR,QAAQ,iBAAR,SACQ,EAARa,EADQ,iBAAR,SAGA,IAAU,iBAAV,WAAU,iBAAV,SACU,EAAV,0BACU,iBAAV,WAAU,iBAAV,SAEA,UAAY,iBAAZ,WAAY,iBAAZ,SACA,qBAAc,iBAAd,WAAc,iBAAd,SACAC,yBADc,iBAAd,SAEc,EAAdC,EAAAA,IAAAA,uBACApH,EACAC,EACA8G,KAEc,iBAAd,WAAc,iBAAd,SACAI,UADc,iBAAd,SAEc,EAAdC,EAAAA,IAAAA,QAAAA,EAAAA,EAAAA,MAEY,iBAAZ,WAAY,iBAAZ,SACA,qBAAc,iBAAd,WAAc,iBAAd,SACAD,qBADc,iBAAd,SAEc,EAAdC,EAAAA,IAAAA,mBACApH,EACAC,EACA8G,KAEc,iBAAd,WAAc,iBAAd,SACAI,MADc,iBAAd,SAEc,EAAdC,EAAAA,IAAAA,IAAAA,EAAAA,EAAAA,KAxBU,iBAAV,SA4BU,EAAVA,MACA,YAAY,iBAAZ,QAAY,iBAAZ,SACY,EAAZ,4BAEA,YAAY,iBAAZ,QAAY,iBAAZ,SACY,EAAZ,gCAKA,YAAQ,iBAAR,QAAQ,iBAAR,SACQ,EAAR,6BAKIC,iBA1UJ,WA0UA,8DACMpF,KAAKpB,sBAAuB,EAC5B,IAAIkG,GAAV,kDAEA,iCACA,0BALA,0BAMU9E,KAAK5B,QAAf,sDACY4B,KAAK/B,mBAAjB,sDACgB,gBADhB,0BAEUkH,EAAMnF,KAAKhB,IAAIqG,kBACzB,gBACA,iBACAP,KAEA,sDACgB,yBADhB,0BAEUK,EAAMnF,KAAKhB,IAAIsG,2BACzB,gBACA,iBACAR,MAGA,sDACY9E,KAAK/B,mBAAjB,sDACgB,gBADhB,0BAEUkH,EAAMnF,KAAKhB,IAAIuG,cACzB,gBACA,iBACAT,KAEA,sDACgB,yBADhB,0BAEUK,EAAMnF,KAAKhB,IAAIwG,uBACzB,gBACA,iBACAV,KAnCA,0BAwCMK,EAAIf,MACV,YAAQ,iBAAR,QAAQ,iBAAR,SACQ,EAAR,4BAEA,YAAQ,iBAAR,QAAQ,iBAAR,SACQ,EAAR,6BAKIqB,mBA5XJ,WA4XA,mDACMzF,KAAKpB,sBAAuB,EADlC,0BAEMoB,KAAKtB,OAAS,6BAFpB,0BAGMsB,KAAKjB,cAAe,GAGtB2G,mBAlYJ,SAkYAC,EAAAC,GAAA,yBACM,IAAIC,GAAV,8BACM,GAFN,0BAEUF,EAAU,CAApB,sDACQE,EAAM,QAAUD,EAAS,GAAK,IAAMA,EAAS,GAC7C,IAAIE,GAAZ,6CACQ,GAHR,0BAGYA,EAAK1D,OAAS,EAAG,CAA7B,sDACUyD,GAAO,SADjB,0BAEU,IAAK,IAAI1C,GAAnB,6CACY,IAAI4C,GAAhB,gCADA,0BAEYF,GAAOE,EAAM,IAAM/F,KAAKuD,gBAAgBqC,EAAS,GAAGG,IAFhE,0BAGgB5C,EAAI2C,EAAK1D,OAAS,GAAlC,sDACcyD,GAAO,MADrB,kCALA,4BAgBQ,GAnBR,0BAaQA,GAAO,KAbf,0BAca7F,KAAKrB,QAAQqH,SAASH,GAAnC,mFACU7F,KAAKrB,SAAWkH,EAAM,MAfhC,0BAiBQA,GAAO,SAjBf,0BAmBY7F,KAAKtB,OAAOsH,SAASH,GAAM,CAAvC,4BACU,IAAV,yDACU,GAFV,0BAEcI,EAAM,GAAGD,SAAS,KAAM,CAAtC,4BACY,IAAZ,2EADA,0BAEYH,EAAMI,EAAM,GAAK,WAAaC,EAAM,GAAK,SACrD,sDACYL,GAAO,YANnB,4BAnBA,0BA4BQ7F,KAAKtB,OAASmH,MACtB,6BACQ,IAAIM,GAAZ,2EADA,0BAEQnG,KAAKoG,aAAaD,EAASP,GAAU,GAjC7C,0BAmCM5F,KAAKjB,cAAe,GAGtBqH,aAxaJ,SAwaAD,EAAAE,GAAA,iJACMrG,KAAKtB,OAAS,SAApB,oCADA,0BAEA,0IACQsB,KAAKtB,QAAU,KADvB,0BAEQsB,KAAKtB,QAAU2H,EAAMC,SAF7B,4BAFA,0BAMUC,GAAV,sDACQvG,KAAKnB,oBAAqB,GADlC,6BAKI2H,YAnbJ,WAmbA,8DACMxG,KAAKhB,IAAIyH,sBAAsBrC,MACrC,YAAQ,iBAAR,QACQ,IAAR,iCADQ,iBAAR,SAEQ,IAAR,mDAAU,iBAAV,SACU,EAAV7F,KAAAA,CAAY,MAAZmB,EAAAA,GAAY,MAAZ5B,EAAAA,KAHQ,iBAAR,SAKQ,EAAR,aALQ,iBAAR,SAMQ,EAAR,6BANQ,iBAAR,SAOQ,EAAR,qBAEA,YAAQ,iBAAR,QAAQ,iBAAR,SACQ,EAAR,kBADQ,iBAAR,SAEQ,EAAR,iDAKI4I,iBArcJ,SAqcA1F,GAAA,mDACMhB,KAAKvB,WAAauC,EAAMZ,OAAOuG,MAAM,IAGvCC,OAzcJ,SAycA5F,GAAA,oCACM,IAAI6F,GAAV,2DACU7D,GAAV,2BAAAC,WAAAA,SAAAC,IAAAA,KAFA,0BAGM,IAAK,IAAIC,GAAf,sEACQH,EAAKE,IAAIG,KAAKwD,EAAQ1D,IAJ9B,0BAOMnD,KAAKhB,IAAI8H,SAAS9G,KAAKxB,kBAAmBwE,GAAMoB,MACtD,WAAQ,iBAAR,QAAQ,iBAAR,SACQ,EAAR,kBADQ,iBAAR,SAEQ,EAAR,OACA,QACAyC,EAAAA,OACA,uBACA,uBAEA,YAAQ,iBAAR,QAAQ,iBAAR,SACQ,EAAR,kBADQ,iBAAR,SAEQ,EAAR,0CAKIE,WAheJ,WAgeA,yBACM,IAAIC,GAAV,gCACUC,GAAV,0CAFA,0BAGMA,EAAOC,OAAS,SAAU3F,GAAhC,mDACQyF,EAAKJ,OAAOrF,IAJpB,0BAMM0F,EAAOE,QAAU,SAAU5F,GAAjC,mDACQyF,EAAKlI,gBAAiB,EACtB,IAAIsB,GAAZ,oCAFA,0BAGQ4G,EAAKZ,aAAa,mBAAoBhG,EAAOiG,OAAO,IAT5D,0BAkBMY,EAAOG,kBAAkBpH,KAAKvB,aAGhC4I,aArfJ,WAqfA,mDACMrH,KAAKlB,gBAAiB,EAD5B,0BAEMkB,KAAKtB,OAAS,2B,8ECrzBd4I,EAAO,kDAAG,WACdC,EACAC,GAFc,uJAGoD,GAAhE/J,EAHY,EAGZA,KAHY,IAGN0C,OAAAA,OAHM,MAGG,GAHH,EAGOvC,EAHP,EAGOA,QAHP,IAGgB6J,OAAAA,OAHhB,aAGgCC,QAAAA,OAHhC,SAKTD,EALS,0CAOJE,WAAWC,YAAYD,WAAWE,oBAP9B,0DASVF,WAAWG,QATD,QAWZlK,EAAQ,iBAAmBmK,aAAaC,YAX5B,eAaTN,GAAYvH,EAAO,WACtBA,EAAO,SAAW4H,aAAaE,OAdnB,mBAgBPC,EAAAA,EAAAA,GAAM,CACXX,OAAAA,EACAC,IAAAA,EACA/J,KAAAA,EACA0C,OAAAA,EACAvC,QAAAA,KArBY,yDAAH,wDAyBPuK,EAA2B,CAC/BC,OAAQ,oBAGJC,GAAqB,kBACtBF,GADmB,IAEtB,eAAgB,qBAGlB,QACEG,IAAK,SACHC,GAEA,6DADkE,GAAhEpI,EACF,EADEA,OACF,IADUvC,QAAAA,OACV,MADoBuK,EACpB,EAD8CT,EAC9C,EAD8CA,QAASD,EACvD,EADuDA,OAEvD,OAAOH,EAAQ,MAAOiB,EAAM,CAAEpI,OAAAA,EAAQvC,QAAAA,EAAS8J,QAAAA,EAASD,OAAAA,KAG1De,IAAK,SACHD,GAEA,6DADkE,GAAhE9K,EACF,EADEA,KAAM0C,EACR,EADQA,OACR,IADgBvC,QAAAA,OAChB,MAD0ByK,EAC1B,EAD8CX,EAC9C,EAD8CA,QAASD,EACvD,EADuDA,OAEvD,OAAOH,EAAQ,MAAOiB,EAAM,CAAE9K,KAAAA,EAAM0C,OAAAA,EAAQvC,QAAAA,EAAS8J,QAAAA,EAASD,OAAAA,KAGhEgB,KAAM,SACJF,GAEA,6DADkE,GAAhE9K,EACF,EADEA,KAAM0C,EACR,EADQA,OACR,IADgBvC,QAAAA,OAChB,MAD0ByK,EAC1B,EAD8CX,EAC9C,EAD8CA,QAASD,EACvD,EADuDA,OAEvD,OAAOH,EAAQ,OAAQiB,EAAM,CAAE9K,KAAAA,EAAM0C,OAAAA,EAAQvC,QAAAA,EAAS8J,QAAAA,EAASD,OAAAA,KAGjEiB,OAAQ,SACNH,GAEA,6DADkE,GAAhEpI,EACF,EADEA,OACF,IADUvC,QAAAA,OACV,MADoBuK,EACpB,EAD8CT,EAC9C,EAD8CA,QAASD,EACvD,EADuDA,OAEvD,OAAOH,EAAQ,SAAUiB,EAAM,CAAEpI,OAAAA,EAAQvC,QAAAA,EAAS8J,QAAAA,EAASD,OAAAA,O,mEC3DzDkB,EAAc,IAAIC,EAAAA,WAElBC,EAAgBX,IAAAA,OAAa,CACjCY,QAASC,SAASC,OAClBC,QAAS,IACT9I,OAAQ,KAGV0I,EAAcK,aAAatD,SAASuD,KAClC,SAACvD,GAAD,OAAcA,KACd,SAACS,GACC,GAA8B,MAA1BA,EAAMT,SAASlH,cACVqJ,aAAaC,YACpBL,WAAWG,MAAMiB,SAASK,UACrB,mBACDC,EAAO,QAAH,OAAWhD,EAAMT,SAASlH,OAA1B,OACR,aAAI2H,EAAMT,gBAAV,iBAAI,EAAgBnI,YAApB,OAAI,EAAsB6I,QACxB+C,GAAQ,GAAJ,OAAOhD,EAAMT,SAASnI,KAAK6I,cAC1B,aAAID,EAAMT,gBAAV,iBAAI,EAAgBnI,YAApB,OAAI,EAAsB6L,UAC/BD,GAAQ,GAAJ,OAAOhD,EAAMT,SAASnI,KAAK6L,gBAC1B,aAAIjD,EAAMT,gBAAV,iBAAI,EAAgBnI,YAApB,iBAAI,EAAsB4I,aAA1B,OAAI,EAA6BC,QAClCD,EAAMT,SAASnI,KAAK4I,MAAMkD,QAC5BF,GAAQ,GAAJ,OAAOhD,EAAMT,SAASnI,KAAK4I,MAAMkD,MAAjC,MAENF,GAAQ,GAAJ,OAAOhD,EAAMT,SAASnI,KAAK4I,MAAMC,aAChC,OACL+C,GAAQ,GAAJ,iBAAOhD,EAAMT,gBAAb,aAAO,EAAgBnI,MAE7BkL,EAAYa,QAAQC,QAAQ,CAC1B/L,MAAO,gBACP2L,KAAAA,IAGJ,MAAMhD,KAIV,U,6KCtCaqD,EAAb,WAGE,cAAc,iCAFT,GADP,qFAME,WAAWnC,EAAQpH,GAAnB,8GAA2BwJ,EAA3B,+BAAsC,GAAtC,kBAEUhC,WAAWC,YAAYD,WAAWE,oBAF5C,yDAIIF,WAAWG,QAJf,cAME9H,KAAK4J,GAAK5J,KAAK4J,GAAK,EANtB,UAQID,EAAS,SAAW5B,aAAaE,MARrC,UAS2BC,EAAAA,EAAAA,KACrB,kBACA,CACE2B,QAAS,MACTtC,OAAQA,EACRpH,OAAQA,EACRyJ,GAAI5J,KAAK4J,GACTE,eAAgBH,GAElB,CACE/L,QAAS,CACPmM,cAAehC,aAAaC,YAC5B,eAAgB,0BArB1B,eASUpC,EATV,yBAiCWA,EAASnI,KAAKuM,QAjCzB,4CAmCQC,EAAM,IAAIC,MACV,KAAMtE,UAGRqE,EAAIhG,KAAO,KAAM2B,SAASnI,KAAK4I,MAAM5I,KAAK8L,MAC1CU,EAAI3D,QAAU,KAAMV,SAASnI,KAAK4I,MAAM5I,KAAK6I,SACpC,KAAMgB,SAIf2C,EAAIhG,KAAO,gBACXgG,EAAI3D,QAAU,uCAGd2D,EAAIhG,KAAO,gBAGPgG,EApDV,iEANF,4FA8DE,SAAmBtH,GACjB,GAAY,OAARA,GAA+B,YAAf,OAAOA,IACH,SAAlBA,EAAIM,YAAyBN,EAAIO,IAAK,CACxC,GAAe,OAAXP,EAAIO,IACN,OAAOiH,IACF,GAAe,YAAXxH,EAAIO,IACb,OAAOJ,EAAAA,EACF,GAAe,aAAXH,EAAIO,IACb,OAAQJ,EAAAA,EAId,OAAO,OA1EX,gCA6EE,SAAmBH,GACjB,OAAIyH,OAAOC,MAAM1H,GACR,CAAEM,WAAY,QAASC,IAAK,OAC1BP,GAAOyH,OAAOE,kBAChB,CAAErH,WAAY,QAASC,IAAK,YAC1BP,GAAOyH,OAAOG,kBAChB,CAAEtH,WAAY,QAASC,IAAK,aAE9B,OArFX,oCA2FE,WACE,OAAOlD,KAAKwK,KAAK,yBAA0B,MA5F/C,+BA+FE,SAAkBC,GAChB,OAAOzK,KAAKwK,KAAK,oBAAqB,CAACC,MAhG3C,kCAmGE,SAAqBA,GACnB,OAAOzK,KAAKwK,KAAK,uBAAwB,CAACC,MApG9C,iCAuGE,WACE,OAAOzK,KAAKwK,KAAK,sBAAuB,MAxG5C,4BA2GE,SAAeE,GACb,OAAO1K,KAAKwK,KAAK,iBAAkB,CAACE,MA5GxC,+BA+GE,SAAkBA,GAChB,OAAO1K,KAAKwK,KAAK,oBAAqB,CAACE,MAhH3C,iCAmHE,WACE,OAAO1K,KAAKwK,KAAK,sBAAuB,MApH5C,8BAuHE,WACE,OAAOxK,KAAKwK,KAAK,mBAAoB,MAxHzC,8BA2HE,WACE,OAAOxK,KAAKwK,KAAK,mBAAoB,MA5HzC,sBA+HE,SAASpK,EAAQG,EAAQkB,GACvB,OAAOzB,KAAKwK,KAAK,WAAY,CAACpK,EAAQG,EAAQkB,MAhIlD,2BAmIE,SAAcrB,EAAQG,EAAQkB,GAC5B,OAAOzB,KAAKwK,KAAK,gBAAiB,CAACpK,EAAQG,EAAQkB,MApIvD,wCAuIE,WACE,OAAOzB,KAAKwK,KAAK,6BAA8B,MAxInD,2BA2IE,WACE,OAAOxK,KAAKwK,KAAK,gBAAiB,MA5ItC,0BA+IE,WACE,OAAOxK,KAAKwK,KAAK,eAAgB,MAhJrC,2BAmJE,SAAcG,GACZ,OAAO3K,KAAKwK,KAAK,gBAAiB,CAACG,MApJvC,2BAuJE,SAAcA,GACZ,OAAO3K,KAAKwK,KAAK,gBAAiB,CAACG,MAxJvC,0BA2JE,SAAaA,GACX,OAAO3K,KAAKwK,KAAK,eAAgB,CAACG,MA5JtC,0BA+JE,SAAaA,GACX,OAAO3K,KAAKwK,KAAK,eAAgB,CAACG,MAhKtC,+BAmKE,WACE,OAAO3K,KAAKwK,KAAK,oBAAqB,MApK1C,6BAuKE,WACE,OAAOxK,KAAKwK,KAAK,kBAAmB,MAxKxC,4BA2KE,WACE,OAAOxK,KAAKwK,KAAK,iBAAkB,MA5KvC,4BA+KE,SAAeI,GACb,OAAO5K,KAAKwK,KAAK,iBAAkB,CAACI,MAhLxC,kCAmLE,WACE,OAAO5K,KAAKwK,KAAK,uBAAwB,MApL7C,mCAuLE,SAAsBvG,GACpB,OAAOjE,KAAKwK,KAAK,wBAAyB,CAACvG,MAxL/C,kCA2LE,SAAqBA,GACnB,OAAOjE,KAAKwK,KAAK,uBAAwB,CAACvG,MA5L9C,gCAmME,WACE,OAAOjE,KAAKwK,KAAK,qBAAsB,MApM3C,wBAuME,SAAWK,GACT,OAAO7K,KAAKwK,KAAK,aAAc,CAACK,MAxMpC,6BA2ME,WACE,OAAO7K,KAAKwK,KAAK,kBAAmB,MA5MxC,2BA+ME,SAAcK,EAAaC,GACzB,OAAO9K,KAAKwK,KAAK,gBAAiB,CAACK,EAAaC,MAhNpD,+BAmNE,SAAkBD,GAChB,OAAO7K,KAAKwK,KAAK,oBAAqB,CAACK,MApN3C,8EAwNE,WAAqBA,EAAaC,EAAaC,GAA/C,6GACqB/K,KAAKwK,KAAK,iBAAkB,CAACK,EAAaC,GAAc,CACzEnG,KAAMoG,IAFV,OAKE,GAJMtN,EADR,OAKc,MAARA,EAGF,IAFIuN,EAAMvN,EAAK2E,OACX6I,EAAY,KACP9H,EAAI,EAAGA,EAAI6H,EAAK7H,IACvB8H,EAAYjL,KAAKkL,mBAAmBzN,EAAK0F,GAAG,IAC1B,OAAd8H,IACFxN,EAAK0F,GAAG,GAAK8H,GAXrB,yBAeSxN,GAfT,gDAxNF,oGA2OE,SAAyBoN,EAAaC,GACpC,OAAO9K,KAAKwK,KAAK,2BAA4B,CAACK,EAAaC,MA5O/D,4BAgPE,SAAeD,EAAaC,GAC1B,OAAO9K,KAAKwK,KAAK,iBAAkB,CAACK,EAAaC,MAjPrD,8EAqPE,WAAqBnL,GAArB,6GACqBK,KAAKwK,KAAK,iBAAkB,CAAC7K,IADlD,OAIE,IAHMlC,EADR,OAEMuN,EAAMvN,EAAK,GAAG2E,OACd6I,EAAY,KACP9H,EAAI,EAAGA,EAAI6H,EAAK7H,IACvB8H,EAAYjL,KAAKkL,mBAAmBzN,EAAK,GAAG0F,IAC1B,OAAd8H,IACFxN,EAAK,GAAG0F,GAAK8H,GAPnB,yBAUSxN,GAVT,gDArPF,kFAmQE,SAAWoN,EAAaC,EAAaK,GACnC,OAAOnL,KAAKwK,KAAK,aAAc,CAACK,EAAaC,EAAaK,MApQ9D,mEAwQE,WAAUN,EAAaC,EAAaK,GAApC,yGACqBnL,KAAKwK,KAAK,MAAO,CAACK,EAAaC,EAAaK,IADjE,cACQ1N,EADR,OAEMwN,EAAYjL,KAAKkL,mBAAmBzN,GACtB,OAAdwN,IACF,eAJJ,kBAMSxN,GANT,gDAxQF,4FAiRE,SAAiBoN,GACf,OAAO7K,KAAKwK,KAAK,mBAAoB,CAACK,MAlR1C,yBAqRE,SAAYA,EAAaO,GACvB,OAAOpL,KAAKwK,KAAK,cAAe,CAACK,EAAaO,MAtRlD,2BAyRE,SACEP,EACAC,EACApJ,GAEA,IADAqJ,EACA,uDADa,YAEb,OAAO/K,KAAKwK,KAAK,gBAAiB,CAChCK,EACAC,EACApJ,EACAqJ,MAnSN,4BAwSE,SAAeF,EAAaC,GAC1B,OAAO9K,KAAKwK,KAAK,iBAAkB,CAACK,EAAaC,MAzSrD,kBA6SE,SAAKvD,EAAQsD,EAAaO,EAAcC,GACtC,IAAIJ,EAAY,KAChB,IAAK,IAAIlF,KAAOsF,EACV5H,OAAOC,UAAU4H,eAAe1H,KAAKyH,EAAYtF,KACnDkF,EAAYjL,KAAKuL,mBAAmBF,EAAWtF,IAC7B,OAAdkF,IACFI,EAAWtF,GAAOkF,IAIxB,OAAOjL,KAAKwK,KAAKjD,EAAQ,CAACsD,EAAaO,EAAcC,MAvTzD,+BA2TE,SAAkBR,EAAaO,EAAcC,GAC3C,YAAqBG,IAAjBJ,EACKpL,KAAKwK,KAAK,oBAAqBK,GAE/B7K,KAAKyL,KACV,oBACAZ,EACAO,EACAC,KAnUR,iBAyUE,SAAIR,EAAaO,EAAcC,GAC7B,YAAqBG,IAAjBJ,EACKpL,KAAKwK,KAAK,MAAOK,GAEjB7K,KAAKyL,KAAK,MAAOZ,EAAaO,EAAcC,KA7UzD,gCAkVE,SAAmBR,EAAaO,EAAcC,GAC5C,YAAqBG,IAAjBJ,EACKpL,KAAKwK,KAAK,qBAAsBK,GAEhC7K,KAAKyL,KACV,qBACAZ,EACAO,EACAC,KA1VR,qBAgWE,SAAQR,EAAaO,EAAcC,GACjC,YAAqBG,IAAjBJ,EACKpL,KAAKwK,KAAK,UAAWK,GAErB7K,KAAKyL,KAAK,UAAWZ,EAAaO,EAAcC,KApW7D,oCAyWE,SAAuBR,EAAaO,EAAcC,GAChD,YAAqBG,IAAjBJ,EACKpL,KAAKwK,KAAK,yBAA0BK,GAEpC7K,KAAKyL,KACV,yBACAZ,EACAO,EACAC,KAjXR,oCAuXE,SAAuBR,EAAaO,EAAcC,GAChD,YAAqBG,IAAjBJ,EACKpL,KAAKwK,KAAK,yBAA0BK,GAEpC7K,KAAKyL,KACV,yBACAZ,EACAO,EACAC,KA/XR,2BAqYE,SAAcR,EAAaO,EAAcC,GACvC,YAAqBG,IAAjBJ,EACKpL,KAAKwK,KAAK,gBAAiBK,GAE3B7K,KAAKyL,KAAK,gBAAiBZ,EAAaO,EAAcC,KAzYnE,wCA8YE,SAA2BR,EAAaO,EAAcC,GACpD,YAAqBG,IAAjBJ,EACKpL,KAAKwK,KAAK,6BAA8BK,GAExC7K,KAAKyL,KACV,6BACAZ,EACAO,EACAC,KAtZR,+BA4ZE,SAAkBR,EAAaO,EAAcC,GAC3C,YAAqBG,IAAjBJ,EACKpL,KAAKwK,KAAK,oBAAqBK,GAE/B7K,KAAKyL,KACV,oBACAZ,EACAO,EACAC,KApaR,iCA0aE,WACE,OAAOrL,KAAKwK,KAAK,sBAAuB,MA3a5C,sBA+aE,SAASC,EAAgBhN,GACvB,OAAOuC,KAAKwK,KAAK,WAAY,CAACC,EAAgBhN,MAhblD,0BAmbE,SAAaiO,GACX,OAAO1L,KAAKwK,KAAK,eAAgB,CAACkB,MApbtC,yBAubE,SAAYA,EAAMzH,GAChB,OAAOjE,KAAKwK,KAAK,cAAe,CAACkB,EAAMzH,MAxb3C,yBA2bE,SAAYyH,EAAMzH,EAAMxG,GACtB,OAAOuC,KAAKwK,KAAK,cAAe,CAACkB,EAAMzH,EAAMxG,MA5bjD,2BA+bE,SAAciO,EAAMzH,GAClB,OAAOjE,KAAKwK,KAAK,gBAAiB,CAACkB,EAAMzH,MAhc7C,+BAmcE,WACE,OAAOjE,KAAKwK,KAAK,oBAAqB,MApc1C,sCAucE,SAAyBmB,GACvB,OAAO3L,KAAKwK,KAAK,2BAA4B,CAACmB,MAxclD,2BA2cE,WACE,OAAO3L,KAAKwK,KAAK,gBAAiB,MA5ctC,8BA+cE,WACE,OAAOxK,KAAKwK,KAAK,mBAAoB,MAhdzC,yBAmdE,SAAYvG,GACV,OAAOjE,KAAKwK,KAAK,cAAe,CAACvG,MApdrC,0BAudE,SAAa2H,GACX,OAAO5L,KAAKwK,KAAK,eAAgBoB,KAxdrC,0BA2dE,SAAa3H,EAAMxG,GACjB,OAAOuC,KAAKwK,KAAK,eAAgB,CAACvG,EAAMxG,QA5d5C,M,iECrBA,IAAIoO,EAAS,WAAa,IAAIC,EAAI9L,KAAS+L,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAiB,OAAfH,EAAIzH,OAAiB4H,EAAG,eAAe,CAACE,MAAM,CAAC,MAAQL,EAAIhO,MAAM6E,IAAI,eAAe,GAAG,MAAQ,GAAG,YAAY,mBAAmByJ,GAAG,CAAC,OAASN,EAAIO,gBAAgBJ,EAAG,cAAc,CAACA,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACA,EAAG,iBAAiB,CAACK,YAAY,OAAOC,YAAY,GAAGJ,MAAM,CAAC,MAAQL,EAAIzH,OAAO,YAAY,QAAQ,aAAa,QAAQ,MAAQ,QAAQ,eAAe,GAAG,MAAQ,GAAG,YAAY,oBAAoB+H,GAAG,CAAC,OAASN,EAAIU,mBAAmBC,MAAM,CAAC3O,MAAOgO,EAAIhO,MAAoB,eAAE4O,SAAS,SAAUC,GAAMb,EAAIc,KAAKd,EAAIhO,MAAO,iBAAkB6O,IAAME,WAAW,2BAA2B,GAAGZ,EAAG,QAAQ,CAACA,EAAG,eAAe,CAACE,MAAM,CAAC,MAAQL,EAAIgB,WAAW,eAAe,GAAG,MAAQ,GAAG,YAAY,mBAAmBV,GAAG,CAAC,OAASN,EAAIO,iBAAiB,IAAI,IAAI,IAAI,IACr3BU,EAAkB,G,yhVC4DtB,OACEN,MAAO,CACLO,KAAM,eACNhM,MAAO,SAETiM,MAAO,CACL/O,YAAa,CACXyG,KAAMuI,QACNC,SAAS,GAEXC,aAAc,CACZzI,KAAMlB,OACN0J,QAAS,WAAf,8BACAxK,IAAAA,GACA0B,OAAAA,KACAC,eAAAA,KACAC,qBAAAA,GACAC,aAAAA,SAIE/G,KArBF,WAsBI,OADJ,sBACW,CACLK,MAAOkC,KAAKoN,eAGhBC,SAAU,CACRP,WADJ,WAEM,OADN,sBACU9M,KAAK9B,aAAf,yBACe,KAAO8B,KAAKlC,MAAM6E,IAAIgB,SAAS,MAC9C,yBACe3D,KAAKlC,MAAM6E,MAGtB0B,OARJ,WASM,GADN,sBAC+B,MAArBrE,KAAKlC,MAAMuG,OAAgB,CAArC,cACQ,IAAIiJ,GAAZ,eACQ,IAAK,IAAIvH,KAFjB,WAEwB/F,KAAKlC,MAAMuG,OAAnC,WACcZ,OAAOC,UAAU4H,eAAe1H,KAAK5D,KAAKlC,MAAMuG,OAAQ0B,IAAtE,yBACYuH,EAAWjK,KAAK,CAA5B3D,MAAAA,EAAA5B,MAAAA,KAAAA,MAAAA,OAAAA,GAAAA,SADA,cAUQ,OAbR,YAOQwP,EAAWjK,KAAK,CACd3D,MAAO,mBACP5B,MAAO,qBATjB,YAaewP,EAEP,OADR,0BACe,OAIb9M,QAAS,CACP6L,aADJ,SACAvO,GAGM,GAHN,uBACMkC,KAAKlC,MAAM6E,IAAM7E,EADvB,YAEMkC,KAAKlC,MAAM0G,aAAe1G,EAFhC,YAGUkC,KAAKlC,MAAMuG,OAAQ,CAA7B,cACQ,IAAIC,GAAZ,gCACYC,GAAZ,gCAFA,4BAGA,aAHA,IAGA,0CACA,GADA,YACA,iDACAD,EAAAA,SAAAA,GADA,YAEAC,EAAAA,EAAAA,MAFA,YAGA,MAHA,eAJA,0CAUQvE,KAAKlC,MAAMwG,eAAiBA,EAVpC,YAWQtE,KAAKlC,MAAMyG,qBAAuBA,OAC1C,0BACQvE,KAAKlC,MAAMwG,eAAiB,KAhBpC,YAkBMtE,KAAKuN,MAAM,QAASvN,KAAKlC,QAG3B0O,kBAtBJ,SAsBA1O,GAAA,WACM,IAAIyG,GAAV,kBACUD,GAAV,kBAFA,YAGM,IAAK,IAAIkJ,GAAf,yCACQ,GADR,YACY1P,GAASkC,KAAKqE,OAAOmJ,GAAO1P,MAAO,CAA/C,0BACUyG,EAAuBvE,KAAKqE,OAAOmJ,GAAO9N,MADpD,YAEU4E,EAAiBxG,EAF3B,YAGU,MAHV,cAJA,YAUMkC,KAAKlC,MAAMyG,qBAAuBA,EAVxC,YAWkC,oBAAxBA,GAAV,0BACQvE,KAAKlC,MAAM6E,IAAM3C,KAAKlC,MAAM0G,eAIpC,0BACQxE,KAAKlC,MAAM6E,IAAM2B,EADzB,YAEQtE,KAAKuN,MAAM,QAASvN,KAAKlC,WC3JgX,I,oBCQ7Y2P,GAAY,OACd,EACA5B,EACAkB,GACA,EACA,KACA,WACA,MAIF,EAAeU,EAAiB,S,+ECnBhC,IAAI5B,EAAS,WAAa,IAAIC,EAAI9L,KAAS+L,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,UAAU,CAACE,MAAM,CAAC,MAAQL,EAAIrM,MAAM,MAAQqM,EAAIpO,SAASuO,EAAG,6BAA6B,CAACE,MAAM,CAAC,sBAAsBnM,KAAKE,OAAOC,OAAOC,OAAO,sBAAsBJ,KAAKE,OAAOC,OAAOI,OAAO,SAAWuL,EAAI/M,aAAa,cAAc,OAAO,KAAO,OAAOqN,GAAG,CAAC,SAAS,SAASsB,GAAQ,OAAO5B,EAAI7L,eAAeyN,IAAS,MAAQ,SAASA,GAAQ,OAAO5B,EAAI/G,SAAS2I,OAAgC,GAAnB5B,EAAIxN,KAAK8D,OAAa6J,EAAG,SAAS,CAACA,EAAG,eAAe,CAACH,EAAI6B,GAAG,gBAAgB1B,EAAG,YAAYA,EAAG,eAAe,CAACE,MAAM,CAAC,cAAc,cAAc,MAAQ,SAAS,cAAc,GAAG,eAAe,IAAIM,MAAM,CAAC3O,MAAOgO,EAAU,OAAEY,SAAS,SAAUC,GAAMb,EAAInO,OAAOgP,GAAKE,WAAW,aAAa,GAAGZ,EAAG,eAAe,CAACE,MAAM,CAAC,QAAUL,EAAIlO,QAAQ,MAAQkO,EAAIxN,KAAK,OAASwN,EAAInO,OAAO,mBAAmB,GAAG,qBAAqB,GAAG,sBAAsB,GAAG,aAAa,GAAG,MAAQ,IAAIyO,GAAG,CAAC,kBAAkBN,EAAIxK,iBAAiBsM,YAAY9B,EAAI+B,GAAG,CAAC,CAAC9H,IAAI,sBAAsB+H,GAAG,SAASC,GAC3iC,IAAItM,EAAOsM,EAAItM,KACf,MAAO,CAACwK,EAAG,2BAA2B,CAACE,MAAM,CAAC,gBAAgBL,EAAI5N,aAAauO,MAAM,CAAC3O,MAAO2D,EAAmB,eAAEiL,SAAS,SAAUC,GAAMb,EAAIc,KAAKnL,EAAM,iBAAkBkL,IAAME,WAAW,6BAA6B,MAAK,EAAM,eAAe,GAAGf,EAAIkC,KAAK/B,EAAG,MAAM,CAACK,YAAY,QAAQ,CAACR,EAAI6B,GAAG,WAAW7B,EAAImC,GAAGnC,EAAIpN,WAAWuN,EAAG,MAAM,CAACK,YAAY,QAAQ,CAACR,EAAI6B,GAAG,6EAA6E1B,EAAG,aAAa,CAAC8B,IAAI,UAAU5B,MAAM,CAAC,MAAQL,EAAInN,QAAQ,KAAO,GAAG,MAAQ,GAAG,eAAe,GAAG,YAAY,iBAAiB,mBAAmBmN,EAAIrL,sBAAsB2L,GAAG,CAAC,QAAU,SAASsB,GAAQ,OAAIA,EAAO/I,KAAKuJ,QAAQ,QAAQpC,EAAIqC,GAAGT,EAAOU,QAAQ,QAAQ,GAAGV,EAAO3H,IAAI,SAAkB,KAAc+F,EAAI/K,aAAa2M,OAAYzB,EAAG,SAAS,CAACE,MAAM,CAAC,aAAaL,EAAIzM,EAAE,aAAayM,EAAIxM,EAAE,SAAW,GAAG,WAAW,IAAImN,MAAM,CAAC3O,MAAOgO,EAAoB,iBAAEY,SAAS,SAAUC,GAAMb,EAAI5M,iBAAiByN,GAAKE,WAAW,qBAAqB,CAACZ,EAAG,SAASH,EAAIuC,GAAIvC,EAAsB,oBAAE,SAASrK,EAAK+L,GAAO,OAAOvB,EAAG,cAAc,CAAClG,IAAIyH,EAAMpB,GAAG,CAAC,MAAQ,SAASsB,GAAiC,OAAzBA,EAAOY,kBAAyB7M,EAAKjC,OAAO+O,MAAM,KAAMC,cAAc,CAACvC,EAAG,oBAAoB,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGxM,EAAK/D,WAAW,MAAK,IAAI,GAAGuO,EAAG,iBAAiB,CAACE,MAAM,CAAC,cAAcL,EAAI/N,WAAW,cAAc+N,EAAI9N,YAAY,YAAY8N,EAAI3M,cAAc,KAAO,OAAOsN,MAAM,CAAC3O,MAAOgO,EAAe,YAAEY,SAAS,SAAUC,GAAMb,EAAI7M,YAAY0N,GAAKE,WAAW,iBAAiBZ,EAAG,WAAW,CAACE,MAAM,CAAC,YAAY,OAAOM,MAAM,CAAC3O,MAAOgO,EAAsB,mBAAEY,SAAS,SAAUC,GAAMb,EAAIjN,mBAAmB8N,GAAKE,WAAW,uBAAuB,CAACZ,EAAG,SAAS,CAACA,EAAG,eAAe,CAACA,EAAG,YAAYA,EAAG,OAAO,CAACH,EAAI6B,GAAG,aAAa1B,EAAG,aAAa,GAAGA,EAAG,cAAc,CAACA,EAAG,MAAM,CAACK,YAAY,QAAQ,CAACL,EAAG,QAAQ,CAACK,YAAY,QAAQ,CAACL,EAAG,cAAc,CAACA,EAAG,OAAO,CAACwC,SAAS,CAAC,YAAc3C,EAAImC,GAAGnC,EAAIpN,cAAc,GAAGuN,EAAG,QAAQ,CAACA,EAAG,YAAYA,EAAG,QAAQ,CAACE,MAAM,CAAC,MAAQ,UAAU,YAAY,mBAAmBC,GAAG,CAAC,MAAQ,SAASsB,GAAQ5B,EAAIjN,oBAAqB,KAAS,CAACiN,EAAI6B,GAAG,WAAW,IAAI,MAAM,IAAI,GAAG1B,EAAG,WAAW,CAACE,MAAM,CAAC,YAAY,OAAOM,MAAM,CAAC3O,MAAOgO,EAAwB,qBAAEY,SAAS,SAAUC,GAAMb,EAAIlN,qBAAqB+N,GAAKE,WAAW,yBAAyB,CAACZ,EAAG,SAAS,CAACA,EAAG,eAAe,CAACA,EAAG,YAAYA,EAAG,OAAO,CAACH,EAAI6B,GAAG,yBAAyB1B,EAAG,aAAa,GAAGA,EAAG,cAAc,CAACA,EAAG,MAAM,CAACK,YAAY,QAAQ,CAACL,EAAG,QAAQ,CAACK,YAAY,QAAQ,CAACL,EAAG,OAAO,CAACH,EAAI6B,GAAG,qBAAqB7B,EAAImC,GAAGnC,EAAI/N,YAAY,IAAI+N,EAAImC,GAAGnC,EAAI9N,aAAa,6BAA6BiO,EAAG,QAAQ,CAACA,EAAG,YAAYA,EAAG,QAAQ,CAACE,MAAM,CAAC,SAAW,GAAG,YAAY,qBAAqBC,GAAG,CAAC,MAAQN,EAAIrG,qBAAqB,CAACqG,EAAI6B,GAAG,UAAU1B,EAAG,QAAQ,CAACK,YAAY,eAAeH,MAAM,CAAC,YAAY,sBAAsBC,GAAG,CAAC,MAAQN,EAAI1G,mBAAmB,CAAC0G,EAAI6B,GAAG,YAAY,IAAI,MAAM,IAAI,GAAG1B,EAAG,WAAW,CAACE,MAAM,CAAC,YAAY,OAAOM,MAAM,CAAC3O,MAAOgO,EAAkB,eAAEY,SAAS,SAAUC,GAAMb,EAAIhN,eAAe6N,GAAKE,WAAW,mBAAmB,CAACZ,EAAG,SAAS,CAACA,EAAG,eAAe,CAACA,EAAG,YAAYA,EAAG,OAAO,CAACH,EAAI6B,GAAG,gBAAgB1B,EAAG,aAAa,GAAGA,EAAG,cAAc,CAACA,EAAG,MAAM,CAACK,YAAY,QAAQ,CAACL,EAAG,QAAQ,CAACK,YAAY,QAAQ,CAACL,EAAG,QAAQ,CAACH,EAAI6B,GAAG,gBAAgB1B,EAAG,QAAQ,CAACA,EAAG,WAAW,CAACE,MAAM,CAAC,KAAO,GAAG,eAAe,GAAG,MAAQ,GAAG,MAAQL,EAAIvN,WAAW,YAAY,QAAQ,aAAa,SAASkO,MAAM,CAAC3O,MAAOgO,EAAqB,kBAAEY,SAAS,SAAUC,GAAMb,EAAItN,kBAAkBmO,GAAKE,WAAW,wBAAwB,IAAI,GAAGZ,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACH,EAAI6B,GAAG,eAAe1B,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,QAAQC,GAAG,CAAC,OAAS,SAASsB,GAAQ,OAAO5B,EAAIpF,iBAAiBgH,UAAe,GAAGzB,EAAG,QAAQ,CAACA,EAAG,YAAYA,EAAG,QAAQ,CAACE,MAAM,CAAC,SAAW,GAAG,YAAY,cAAcC,GAAG,CAAC,MAAQN,EAAIzE,eAAe,CAACyE,EAAI6B,GAAG,cAAc1B,EAAG,QAAQ,CAACK,YAAY,UAAUH,MAAM,CAAC,YAAY,UAAUC,GAAG,CAAC,MAAQN,EAAI/E,aAAa,CAAC+E,EAAI6B,GAAG,WAAW,IAAI,MAAM,IAAI,IAAI,IACz5HZ,EAAkB,G,SCHkX,EAAe,EAAG,E,UCOtZU,GAAY,OACd,EACA5B,EACAkB,GACA,EACA,KACA,KACA,MAIF,EAAeU,EAAiB,S,kEClBhC,IAAI5B,EAAS,WAAa,IAAIC,EAAI9L,KAAS+L,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,WAAW,CAACE,MAAM,CAAC,MAAQ,OAAOM,MAAM,CAAC3O,MAAOgO,EAAQ,KAAEY,SAAS,SAAUC,GAAMb,EAAI4C,KAAK/B,GAAKE,WAAW,SAAS,CAACZ,EAAG,SAAS,CAACA,EAAG,eAAe,CAACA,EAAG,YAAYA,EAAG,OAAO,CAACH,EAAI6B,GAAG,eAAe1B,EAAG,aAAa,GAAGA,EAAG,eAAe,CAACH,EAAI6B,GAAG,IAAI7B,EAAImC,GAAGnC,EAAI/N,YAAY,IAAI+N,EAAImC,GAAGnC,EAAIxL,YAAY,IAAIwL,EAAImC,GAAGnC,EAAI6C,UAAU,OAAO1C,EAAG,kBAAkB,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAI8C,QAAQnK,gBAAgBwH,EAAG,cAAc,CAACA,EAAG,cAAc,CAACE,MAAM,CAAC,MAAQ,KAAK,CAAe,QAAbL,EAAInH,KAAgBsH,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,iBAAiB1B,EAAG,SAASA,EAAG,cAAc,CAACK,YAAY,YAAYH,MAAM,CAAC,MAAQ,KAAK,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,eAAe1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAI+C,cAAc,GAAG5C,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,qBAAqB1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAIgD,oBAAoB,GAAG7C,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,qBAAqB1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAIiD,oBAAoB,GAAG9C,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,sBAAsB1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAIkD,gBAAgB,IAAI,IAAI,GAAGlD,EAAIkC,KAAK/B,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,gBAAgB1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAI8C,QAAQK,gBAAgB,GAAGhD,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,cAAc1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAI8C,QAAQM,cAAc,GAAIpD,EAAI8C,QAAkB,WAAE3C,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,gBAAgB1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAI8C,QAAQO,gBAAgB,GAAGrD,EAAIkC,KAAK/B,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,eAAe1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAI8C,QAAQQ,eAAe,GAAiB,QAAbtD,EAAInH,KAAgBsH,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,aAAa1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAI8C,QAAQS,aAAa,GAAGvD,EAAIkC,KAAmB,QAAblC,EAAInH,KAAgBsH,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,aAAa1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAI8C,QAAQU,aAAa,GAAGxD,EAAIkC,KAAmB,QAAblC,EAAInH,KAAgBsH,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,aAAa1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAI8C,QAAQzB,aAAa,GAAGrB,EAAIkC,KAAK/B,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,mBAAmB1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAI8C,QAAQW,mBAAmB,GAAGtD,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,qBAAsB7B,EAAI8C,QAAuB,gBAAE3C,EAAG,QAAQ,CAACH,EAAI6B,GAAG,WAAW7B,EAAImC,GAAGnC,EAAI8C,QAAQY,gBAAgBjG,OAAO,KAAK0C,EAAG,MAAMH,EAAI6B,GAAG,YAAY7B,EAAImC,GAAGnC,EAAI8C,QAAQY,gBAAgBrP,QAAQ,OAAO8L,EAAG,UAAU,GAAGA,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,sBAAuB7B,EAAI8C,QAAwB,iBAAE3C,EAAG,QAAQ,CAACH,EAAI6B,GAAG,WAAW7B,EAAImC,GAAGnC,EAAI8C,QAAQa,iBAAiBlG,OAAO,KAAK0C,EAAG,MAAMH,EAAI6B,GAAG,YAAY7B,EAAImC,GAAGnC,EAAI8C,QAAQa,iBAAiBtP,QAAQ,OAAO8L,EAAG,UAAU,GAAGA,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,cAAc1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAI8C,QAAQc,cAAc,GAAGzD,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,gBAAgB1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAI8C,QAAQe,gBAAgB,GAAG1D,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,gBAAgB1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAI8C,QAAQlK,WAAW,GAAGuH,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,gBAAgB1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnC,EAAI8C,QAAQgB,gBAAgB,GAAI9D,EAAI8C,QAAc,OAAE3C,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,YAAY1B,EAAG,SAASA,EAAG,cAAc,CAACK,YAAY,YAAYH,MAAM,CAAC,MAAQ,KAAKL,EAAIuC,GAAIvC,EAAI8C,QAAc,QAAE,SAASiB,EAAM9J,GAAK,OAAOkG,EAAG,QAAQ,CAAClG,IAAIA,EAAIoG,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG7B,EAAImC,GAAGlI,MAAQkG,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAG4B,EAAM/R,WAAW,MAAK,IAAI,GAAGmO,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,YAAY1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG,WAAW,GAAI7B,EAAI8C,QAAc,OAAE3C,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,YAAY1B,EAAG,SAASA,EAAG,cAAc,CAACK,YAAY,YAAYH,MAAM,CAAC,MAAQ,KAAKL,EAAIuC,GAAIvC,EAAI8C,QAAc,QAAE,SAASkB,EAAM/J,GAAK,OAAOkG,EAAG,QAAQ,CAAClG,IAAIA,EAAIoG,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG7B,EAAImC,GAAGlI,MAAQ+F,EAAI6B,GAAG,IAAI7B,EAAImC,GAAGnC,EAAIiE,YAAYD,IAAQ,KAAK7D,EAAG,UAAU,MAAK,IAAI,GAAGA,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,YAAY1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG,WAAW,GAAI7B,EAAI8C,QAAY,KAAE3C,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,UAAU1B,EAAG,SAASA,EAAG,cAAc,CAACK,YAAY,YAAYH,MAAM,CAAC,MAAQ,KAAKL,EAAIuC,GAAIvC,EAAI8C,QAAY,MAAE,SAAS9Q,EAAMiI,GAAK,OAAOkG,EAAG,QAAQ,CAAClG,IAAIA,EAAIoG,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG7B,EAAImC,GAAGlI,MAAQkG,EAAG,QAAQ,CAACH,EAAI6B,GAAG7B,EAAImC,GAAGnQ,OAAW,MAAK,IAAI,GAAGmO,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACK,YAAY,QAAQH,MAAM,CAAC,KAAO,MAAM,CAACL,EAAI6B,GAAG,UAAU1B,EAAG,QAAQ,CAACH,EAAI6B,GAAG,WAAW,IAAI,IAAI,IAAI,IAAI,IACx2LZ,EAAkB,G,4BCuLtB,GACEE,MAAO,CACLtI,KAAM,CACJwI,QAAS,MACT6C,UAAW,SAAjBA,GAEQ,OAA0C,IAAnC,CAAC,MAAO,OAAO9B,QAAQpQ,KAGlCC,WAAYkS,OACZ3P,WAAY2P,OACZtB,SAAUsB,OACVnS,MAAOoP,SAETzP,KAdF,WAeI,MAAO,CACLmR,QAASnL,OACTyM,QAAS,KACTrB,SAAU,KACVC,eAAgB,KAChBC,eAAgB,KAChBC,WAAY,OAGhB3B,SAAU,CACRqB,KAAM,CACJpG,IADN,WAEQ,OAAOtI,KAAKlC,OAEdqS,IAJN,SAIArS,GACQkC,KAAKuN,MAAM,QAASzP,MAI1BgC,QAlCF,WAmCIE,KAAKhB,IAAM,IAAI,KAEjBoR,cArCF,WAsCIC,cAAcrQ,KAAKkQ,SACnBlQ,KAAKkQ,QAAU,MAEjBI,MAAO,CAILxS,MAAO,SAAXA,EAAAA,GAAA,WACUyS,GACFvQ,KAAKwQ,iBACa,QAAdxQ,KAAK2E,OACP3E,KAAKkQ,QAAUO,aAAY,WACzB,EAAZ,IACAC,eAAA,WACA,aADA,aACA,aADA,aACA,WADA,mBAEA,aAFA,aAEA,aAFA,aAEA,WAFA,yBAGA,aAHA,aAGA,aAHA,aAGA,WAHA,yBAIA,aAJA,aAIA,aAJA,aAIA,WAJA,kBAMAtM,MAAA,YACc,EAAd,iBACc,EAAd,uBACc,EAAd,uBACc,EAAd,wBAEA,QAGQiM,cAAcrQ,KAAKkQ,SACnBlQ,KAAKkQ,QAAU,QAIrB1P,QAAS,CACPgQ,eADJ,WACA,WACwB,QAAdxQ,KAAK2E,KACP3E,KAAKhB,IACb2R,SAAA,+CACAvM,MAAA,YACU,EAAV,aAGQpE,KAAKhB,IACb4R,cAAA,+CACAxM,MAAA,YACU,EAAV,cAII2L,YAhBJ,SAgBAD,GACM,OAAIA,EAAMe,UAEhB,MACAf,EAAAA,QACA,OACAA,EAAAA,WACA,OACAA,EAAAA,YACA,OACAA,EAAAA,SACA,OACAA,EAAAA,UACA,OACAA,EAAAA,WAEA,UAEA,MACAA,EAAAA,QACA,OACAA,EAAAA,WACA,OACAA,EAAAA,YACA,OACAA,EAAAA,SAGeA,KC3SgX,I,oBCQ3XrC,GAAY,OACd,EACA5B,EACAkB,GACA,EACA,KACA,WACA,MAIF,EAAeU,EAAiB,S,kECnBhC,IAAI5B,EAAS,WAAa,IAAIC,EAAI9L,KAAS+L,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,cAAc,CAACK,YAAY,kBAAkB,CAACL,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAOL,EAAIgF,QAAQ,YAAY,kBAAkB,CAAC7E,EAAG,WAAW,CAACE,MAAM,CAAC,MAAQ,gBAAgB,eAAe,GAAG,MAAQ,GAAG,MAAQL,EAAIiF,YAAY,YAAY,QAAQ,aAAa,SAAS3E,GAAG,CAAC,OAASN,EAAIkF,mBAAmBvE,MAAM,CAAC3O,MAAOgO,EAAsB,mBAAEY,SAAS,SAAUC,GAAMb,EAAImF,mBAAmBtE,GAAKE,WAAW,yBAAyB,GAAGZ,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAOL,EAAIgF,QAAQ,YAAY,kBAAkB,CAAC7E,EAAG,WAAW,CAACE,MAAM,CAAC,MAAQ,gBAAgB,eAAe,GAAG,MAAQ,GAAG,SAAWL,EAAIoF,gBAAgB,MAAQpF,EAAIqF,YAAY,YAAY,QAAQ,aAAa,SAAS/E,GAAG,CAAC,OAASN,EAAIsF,mBAAmB3E,MAAM,CAAC3O,MAAOgO,EAAsB,mBAAEY,SAAS,SAAUC,GAAMb,EAAIuF,mBAAmB1E,GAAKE,WAAW,yBAAyB,GAAIf,EAAIwF,aAAexF,EAAIyF,eAAgBtF,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAOL,EAAIgF,QAAQ,YAAY,gBAAgB,CAAC7E,EAAG,WAAW,CAACE,MAAM,CAAC,MAAQ,cAAc,eAAe,GAAG,MAAQ,GAAG,SAAWL,EAAI0F,cAAc,MAAQ1F,EAAI2F,UAAU,YAAY,QAAQ,aAAa,SAASrF,GAAG,CAAC,OAAS,SAASsB,GAAQ,OAAO5B,EAAI4F,gBAAgBhE,KAAUjB,MAAM,CAAC3O,MAAOgO,EAAoB,iBAAEY,SAAS,SAAUC,GAAMb,EAAI6F,iBAAiBhF,GAAKE,WAAW,uBAAuB,GAAGf,EAAIkC,KAAMlC,EAAc,WAAEG,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAOL,EAAIgF,UAAU,CAAC7E,EAAG,QAAQ,CAACE,MAAM,CAAC,SAAWL,EAAIyF,eAAe,MAAQ,GAAG,MAAQ,UAAU,YAAY,eAAenF,GAAG,CAAC,MAAQN,EAAI8F,gBAAgB,CAAC9F,EAAI6B,GAAG,IAAI7B,EAAImC,GAAGnC,EAAI+F,kBAAkB,QAAQ,GAAG/F,EAAIkC,MAAM,GAAG/B,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,KAAK,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAOL,EAAIgF,UAAU,CAAChF,EAAI6B,GAAG,gBAAgB7B,EAAImC,GAAGnC,EAAIrH,iBAAiB,IAAI,IAC3wDsI,EAAkB,G,mFCmFtB,GACEE,MAAO,CACL6E,SAAU,CACRnN,KAAMuI,QACNC,SAAS,GAEX4E,WAAY,CACVpN,KAAMsL,OACN9C,QAAS,MAEXmE,WAAY,CACV3M,KAAMuI,QACNC,SAAS,GAEX6E,SAAU,CACRrN,KAAMuI,QACNC,SAAS,GAEX8E,kBAAmB,CACjBtN,KAAMsL,OACN9C,QAAS,IAEX+E,kBAAmB,CACjBvN,KAAMsL,OACN9C,QAAS,IAEXgF,gBAAiB,CACfxN,KAAMsL,OACN9C,QAAS,IAEXiF,KAAM,CACJzN,KAAMsL,OACN9C,QAAS,MAET6C,UAAW,SAAjBA,GACQ,MAAO,CAAC,MAAO,OAAOhK,SAASqM,KAGnCC,QAAS,CACP3N,KAAMsL,OACN9C,QAAS,QACT6C,UAAW,SAAjBA,GACQ,MAAO,CACf,cACA,eACA,iBACA,SACAhK,SAAAqM,KAGIE,QAAS,CACP5N,KAAMuI,QACNC,SAAS,GAEXqF,SAAU,CACR7N,KAAMuI,QACNC,SAAS,IAGb1P,KA3DF,WA2DA,UACI,MAAO,CACLsT,YAAa,GACbI,YAAa,GACbM,UAAW,GACXR,mBAANA,QAAAA,EAAAA,KAAAA,yBAAAA,IAAAA,OAAAA,EAAAA,EAAAA,cACMI,mBAANA,QAAAA,EAAAA,KAAAA,yBAAAA,IAAAA,OAAAA,EAAAA,EAAAA,cACMM,iBAANA,QAAAA,EAAAA,KAAAA,uBAAAA,IAAAA,OAAAA,EAAAA,EAAAA,cACMlN,YAAa,GACbgO,kBAAkB,EAClBvB,iBAAiB,EACjBM,eAAe,EACfxS,IAAK,KACL0T,IAAK,CACHhT,MAAO,UACP5B,MAAO,MACP2G,YAAa,OAEfkO,QAAS,CACPjT,MAAO,cACP5B,MAAO,UACP2G,YAAa,aAInB3E,QApFF,WAoFA,WACIE,KAAKyS,kBAAmB,EACxBzS,KAAKhB,IAAM,IAAI,IACfgB,KAAKhB,IAAI4T,kBAAkBxO,MAAK,SAApC,GACM,EAAN,+BACQ,MAAO,CAAf1E,MAAAA,EAAA5B,MAAAA,MAEW,EAAX,qBACQ,EAAR,0CACQ,EAAR,yCAEM,EAAN,gBACU,EAAV,SACQ,EAAR,gCAIEuP,SAAU,CACRwE,iBAAkB,WAChB,MAAgC,QAA5B7R,KAAKqR,mBACA,aAEqB,QAA1BrR,KAAK2R,iBACA,aAEF3R,KAAK+R,YAEdR,eAAgB,WACd,OAAOvR,KAAKgS,UAAYhS,KAAKyS,kBAE/BI,mBAAoB,WAClB,OAAI7S,KAAKsR,YAActR,KAAK+R,WACnB,CAAfe,MAAAA,MAAAC,MAAAA,OAAA,sBAEe,CAAfD,MAAAA,MAAAC,MAAAA,SAGIC,mBAAoB,WAClB,OAAIhT,KAAKsR,YAActR,KAAK+R,WACnB,CAAfe,MAAAA,MAAAC,MAAAA,OAAA,sBAEe,CAAfD,MAAAA,MAAAC,MAAAA,UAGIjC,QAAS,WACP,QAAO9Q,KAAKwS,UAAW,KAG3BlC,MAAO,CACL8B,KAAM,SAAVA,EAAAA,GACMpS,KAAKiT,gBACLjT,KAAKyR,UAAY,IAEnBa,QAAS,SAAbA,EAAAA,GACMtS,KAAKkT,gBAGT1S,QAAS,CACPyS,cAAe,WAAnB,WACM,GAAgC,YAA5BjT,KAAKiR,mBAKP,OAJAjR,KAAKmR,YAAc,CAACnR,KAAK2S,SACzB3S,KAAKqR,mBAAqBrR,KAAKmR,YAAY,GAAGrT,MAC9CkC,KAAKoR,kBAAkBpR,KAAK2S,QAAQ7U,YACpCkC,KAAKyE,YAAc,WAGrBzE,KAAKyS,kBAAmB,EACxB,IAAN,2DACMzS,KAAKhB,IAAIkG,GAAKlF,KAAKiR,oBAAoB7M,MAAK,SAAlD,GACQ,EAAR,+BACU,MAAO,CACL1E,MAAOa,EAAOuK,YACdhN,MAAOyC,EAAOuK,YACdrG,YAAalE,EAAOkE,gBAGpB,EAAZ,UACU,EAAV,2BAEa,EAAb,qBACU,EAAV,0CACU,EAAV,yCAEQ,IAAR,kCACU,OAAOlE,EAAOzC,QAAU,EAAlC,sBAEQ,EAAR,0BACY,EAAZ,YACU,EAAV,cAEQ,EAAR,wBAIIoV,YAAa,WAAjB,WACM,GAAgC,QAA5BlT,KAAKqR,mBAAT,CAGArR,KAAKyS,kBAAmB,EACxB,IAAN,kDACMzS,KAAKhB,IAAIkG,GAAKlF,KAAKiR,mBAAoBjR,KAAKqR,oBAAoBjN,MACtE,YACQ,EAAR,mCACU,MAAV,oBACA,EACc,MAAd1E,EAAAA,KACc,MAAd5B,EAAAA,KACc,YAAd2G,EAAAA,cAGA,yBAEA0O,QAAA,cAAU,OAAV,kBACA,YACU,EAAV,yBAEA,qBACU,EAAV,uCAEQ,EAAR,uCACQ,EAAR,oBACQ,EAAR,gBACU,WAAVpV,EAAAA,mBACU,WAAVuC,EAAAA,mBACU,SAAVqO,EAAAA,iBACU,QAAV2D,EAAAA,eAMIc,iBAAkB,SAAtBA,GACM,IAAN,2BACM,OACNC,GAAAA,CAAAA,OAAAA,MAAAA,SAAAA,SAAAA,EAAAA,WAEe,CAAC,MAAO,MAAO,MAAO,UAAUC,KAAI,SAAnD,GACU,MAAO,CACL5T,MAAO,GAAnBA,OAAAA,EAAAA,KAAAA,KAAAA,OAAAA,GACY5B,MAAO,GAAnBA,OAAAA,EAAAA,KAAAA,KAAAA,OAAAA,GACY2G,YAAa,GAAzBA,OAAAA,EAAAA,KAAAA,OAAAA,EAAAA,iBAIa,IAGTuM,kBAAmB,SAAvBA,GACMhR,KAAKiR,mBAAqBnT,EAC1BkC,KAAKqR,mBAAqB,GAC1BrR,KAAK2R,iBAAmB,GACxB3R,KAAKiT,iBAGP7B,kBAAmB,SAAvBA,GACM,GAAc,QAAVtT,EACFkC,KAAKwR,eAAgB,EACrBxR,KAAKyS,kBAAmB,MAChC,CACQzS,KAAKwR,eAAgB,EACrB,IAAR,qCACU,OAAO1T,IAAUyC,EAAOzC,SAE1BkC,KAAKqR,mBAAqB9Q,EAAOzC,MACjCkC,KAAKyE,YAAclE,EAAOkE,YAExBzE,KAAKsR,YACPtR,KAAK2R,iBAAmB,GACxB3R,KAAKkT,eAELlT,KAAKuN,MAAM,SAAU,CACnBxP,WAAYiC,KAAKiR,mBACjB3Q,WAAYN,KAAKqR,mBACjBiB,QAAStS,KAAKsS,WAKpBZ,gBAAiB,SAArBA,GACM,IAAN,mCACQ,OAAO5T,IAAU2D,EAAK3D,SAExBkC,KAAK2R,iBAAmBlQ,EAAK3D,MAC7BkC,KAAKyE,YAAchD,EAAKgD,YACxBzE,KAAKuN,MAAM,SAAU,CACnBxP,WAAYiC,KAAKiR,mBACjB3Q,WAAYN,KAAKqR,mBACjB1C,SAAU3O,KAAK2R,iBACfW,QAAStS,KAAKsS,WAIlBV,cAAe,WACmB,QAA5B5R,KAAKqR,mBACPrR,KAAKuT,uBACb,8BACQvT,KAAKwT,iBACb,gBACQxT,KAAKuN,MAAM,QAAS,CAClBxP,WAAYiC,KAAKiR,mBACjB3Q,WAAYN,KAAKqR,mBACjB1C,SAAU3O,KAAK2R,iBACfW,QAAStS,KAAKsS,UAGhBtS,KAAKuN,MAAM,QAAS,CAClBxP,WAAYiC,KAAKiR,mBACjB3Q,WAAYN,KAAKqR,mBACjBiB,QAAStS,KAAKsS,WAKpBiB,qBAAsB,WAA1B,WACMvT,KAAKmR,YAAYsC,SAAQ,SAA/B,GACQ,GAAInT,IAAe,EAA3B,IAAQ,CACA,IAAR,+CACQ,EAAR,2CACA,YACU,EAAVC,MAAAA,SAAAA,SAAAA,GACY,EAAZ,eACc,WAAdxC,EAAAA,mBACc,WAAduC,EAAAA,MACc,SAAdqO,EAAAA,QACc,QAAd2D,EAAAA,qBAQIkB,eAAgB,WAApB,WACMxT,KAAKyR,UAAUgC,SAAQ,SAA7B,GACYhS,IAAS,EAArB,KACQ,EAAR,eACU1D,WAAY,EAAtBA,mBACUuC,WAAY,EAAtBA,mBACUqO,SAAUlN,EAAK3D,MACfwU,QAAS,EAAnBA,gBCvZyY,I,UCOrY7E,GAAY,OACd,EACA5B,EACAkB,GACA,EACA,KACA,KACA,MAIF,EAAeU,EAAiB,S,kEClBhC,IAAI5B,EAAS,WAAa,IAAIC,EAAI9L,KAAS+L,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,kBAAkB,CAACE,MAAM,CAAC,WAAW,eAAe,OAAS,KAAK,CAACF,EAAG,MAAM,CAACK,YAAY,sBAAsB,CAACR,EAAIuC,GAAIvC,EAAS,OAAE,SAAS4H,EAAKvQ,GAAG,OAAO8I,EAAG,SAAS,CAAClG,IAAI5C,EAAEgJ,MAAM,CAAC,WAAW,IAAIyB,YAAY9B,EAAI+B,GAAG,CAAC,CAAC9H,IAAI,YAAY+H,GAAG,SAASC,GACxV,IAAI3B,EAAK2B,EAAI3B,GACTD,EAAQ4B,EAAI5B,MAChB,MAAO,CAACF,EAAG,QAAQH,EAAI6H,GAAG7H,EAAI8H,GAAG,CAACtH,YAAY,OAAOH,MAAM,CAAC,SAAW,GAAG,YAAYL,EAAI+H,SAAU/H,EAAIpO,MAAQ,IAAOgW,EAAU,SAAM,QAAQvH,GAAM,GAAOC,GAAI,CAACH,EAAG,OAAO,CAACwC,SAAS,CAAC,YAAc3C,EAAImC,GAAGyF,EAAKhU,UAAUuM,EAAG,SAAS,CAACE,MAAM,CAAC,MAAQ,KAAK,CAACL,EAAI6B,GAAG,sBAAsB,OAAO,MAAK,IAAO,CAAC1B,EAAG,SAAS,CAACA,EAAG,gBAAgB,CAACK,YAAY,YAAYH,MAAM,CAAC,MAAQuH,EAAKI,WAAW,eAAe,GAAG,MAAQ,KAAK,CAAChI,EAAIuC,GAAIqF,EAAU,OAAE,SAASK,EAAOC,GAAG,MAAO,CAAED,EAAc,QAAE9H,EAAG,YAAY,CAAClG,IAAIiO,IAAI/H,EAAG,cAAc,CAAClG,IAAIiO,EAAE7H,MAAM,CAAC,SAAW4H,EAAO/B,SAAS,YAAYlG,EAAI+H,SAAU/H,EAAIpO,MAAQ,IAAOgW,EAAU,MAAI,IAAOK,EAAY,QAAK3H,GAAG,CAAC,MAAQ2H,EAAOlU,UAAU,CAAEkU,EAAY,MAAE9H,EAAG,qBAAqB,CAACA,EAAG,UAAU,CAACE,MAAM,CAAC,MAAQ,YAAY,MAAQ4H,EAAOrU,MAAM,MAAQqU,EAAOrU,UAAU,GAAGoM,EAAIkC,KAAM+F,EAAe,SAAE9H,EAAG,qBAAqB,CAACA,EAAG,aAAa,CAACE,MAAM,CAAC,MAAQ,YAAY,MAAQ4H,EAAOrU,MAAM,MAAQqU,EAAOrU,OAAO+M,MAAM,CAAC3O,MAAOgO,EAAW,QAAEY,SAAS,SAAUC,GAAMb,EAAImI,QAAQtH,GAAKE,WAAW,cAAc,GAAGf,EAAIkC,KAAM+F,EAAW,KAAE9H,EAAG,mBAAmB,CAACA,EAAG,SAAS,CAACE,MAAM,CAAC,SAAW4H,EAAO/B,UAAUvD,SAAS,CAAC,YAAc3C,EAAImC,GAAG8F,EAAOG,UAAU,GAAGpI,EAAIkC,KAAO+F,EAAOI,OAAUJ,EAAOnU,SAAuJkM,EAAIkC,KAAjJ/B,EAAG,oBAAoB,CAACmI,MAAO,oBAAsBL,EAAO/B,SAAW,eAAiB,IAAKvD,SAAS,CAAC,YAAc3C,EAAImC,GAAG8F,EAAOrU,WAAoB,QAAO,IAAI,IAAI,MAAKuM,EAAG,YAAYA,EAAG,kBAAkB,CAACwC,SAAS,CAAC,YAAc3C,EAAImC,GAAGnC,EAAIpO,UAAUuO,EAAG,aAAa,MAC79Cc,EAAkB,GC0FtB,G,wBAAA,CACEE,MAAO,CACLxN,MAAO,CACLkF,KAAM0P,MACNlH,QAAS,WACP,MAAO,KAGXzP,MAAO,CACLiH,KAAMsL,OACN9C,QAAS,KAGb3M,QAAS,CAEPqT,SAAU,SAAdA,GACM,OAAOS,EAAOC,WAAW,IAAK,KAAKC,kBC9G+U,I,oBCQpX/G,GAAY,OACd,EACA5B,EACAkB,GACA,EACA,KACA,WACA,MAIF,EAAeU,EAAiB,S,mFChB5BgH,EAA0B,IAA4B,KAE1DA,EAAwBpR,KAAK,CAACqR,EAAO9K,GAAI,uFAAwF,KAEjI,gB,mFCJI6K,EAA0B,IAA4B,KAE1DA,EAAwBpR,KAAK,CAACqR,EAAO9K,GAAI,qEAAsE,KAE/G,gB,mFCJI6K,EAA0B,IAA4B,KAE1DA,EAAwBpR,KAAK,CAACqR,EAAO9K,GAAI,qKAAsK,KAE/M,gB,qBCJA,IAAI+K,EAAU,EAAQ,MACnBA,EAAQC,aAAYD,EAAUA,EAAQxH,SACnB,kBAAZwH,IAAsBA,EAAU,CAAC,CAACD,EAAO9K,GAAI+K,EAAS,MAC7DA,EAAQE,SAAQH,EAAOI,QAAUH,EAAQE,QAE5C,IAAIE,EAAM,UACGA,EAAI,WAAYJ,GAAS,EAAM,CAAC,WAAY,EAAM,YAAa,K,qBCN5E,IAAIA,EAAU,EAAQ,MACnBA,EAAQC,aAAYD,EAAUA,EAAQxH,SACnB,kBAAZwH,IAAsBA,EAAU,CAAC,CAACD,EAAO9K,GAAI+K,EAAS,MAC7DA,EAAQE,SAAQH,EAAOI,QAAUH,EAAQE,QAE5C,IAAIE,EAAM,UACGA,EAAI,WAAYJ,GAAS,EAAM,CAAC,WAAY,EAAM,YAAa,K,qBCN5E,IAAIA,EAAU,EAAQ,MACnBA,EAAQC,aAAYD,EAAUA,EAAQxH,SACnB,kBAAZwH,IAAsBA,EAAU,CAAC,CAACD,EAAO9K,GAAI+K,EAAS,MAC7DA,EAAQE,SAAQH,EAAOI,QAAUH,EAAQE,QAE5C,IAAIE,EAAM,UACGA,EAAI,WAAYJ,GAAS,EAAM,CAAC,WAAY,EAAM,YAAa","sources":["webpack://@cosmosc2/tool-cmdsender/src/tools/CommandSender/CommandSender.vue","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/services/api.js","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/services/axios.js","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/services/cosmos-api.js","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?c553","webpack://@cosmosc2/tool-cmdsender/src/tools/CommandSender/CommandParameterEditor.vue","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?5284","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandSender.vue?fb31","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandSender.vue?e307","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandSender.vue","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/DetailsDialog.vue?88c8","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/DetailsDialog.vue","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/DetailsDialog.vue?7eb0","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/DetailsDialog.vue?fdbd","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TargetPacketItemChooser.vue?b5c7","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TargetPacketItemChooser.vue","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TargetPacketItemChooser.vue?44cd","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TargetPacketItemChooser.vue?b395","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TopBar.vue?228d","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TopBar.vue","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TopBar.vue?adab","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TopBar.vue?dfc0","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?8f71","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/DetailsDialog.vue?82b3","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TopBar.vue?b2db","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?1299","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/DetailsDialog.vue?dfc1","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TopBar.vue?5429"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <top-bar :menus=\"menus\" :title=\"title\" />\n\n <target-packet-item-chooser\n :initial-target-name=\"this.$route.params.target\"\n :initial-packet-name=\"this.$route.params.packet\"\n @on-set=\"commandChanged($event)\"\n @click=\"buildCmd($event)\"\n :disabled=\"sendDisabled\"\n button-text=\"Send\"\n mode=\"cmd\"\n />\n\n <v-card v-if=\"rows.length != 0\">\n <v-card-title>\n Parameters\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n append-icon=\"mdi-magnify\"\n label=\"Search\"\n single-line\n hide-details\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"rows\"\n :search=\"search\"\n calculate-widths\n disable-pagination\n hide-default-footer\n multi-sort\n dense\n @contextmenu:row=\"showContextMenu\"\n >\n <template v-slot:item.val_and_states=\"{ item }\">\n <command-parameter-editor\n v-model=\"item.val_and_states\"\n :states-in-hex=\"statesInHex\"\n />\n </template>\n </v-data-table>\n </v-card>\n <div class=\"ma-3\">Status: {{ status }}</div>\n <div class=\"mt-3\">\n Command History: (Pressing Enter on the line re-executes the command)\n </div>\n <v-textarea\n ref=\"history\"\n :value=\"history\"\n solo\n dense\n hide-details\n data-test=\"sender-history\"\n @keydown.enter=\"historyEnter($event)\"\n :background-color=\"getBackgroundColor()\"\n />\n\n <v-menu\n v-model=\"contextMenuShown\"\n :position-x=\"x\"\n :position-y=\"y\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n <details-dialog\n :target-name=\"targetName\"\n :packet-name=\"commandName\"\n :item-name=\"parameterName\"\n :type=\"'cmd'\"\n v-model=\"viewDetails\"\n />\n\n <v-dialog v-model=\"displayErrorDialog\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Error </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"mx-1\">\n <v-row class=\"my-2\">\n <v-card-text>\n <span v-text=\"status\" />\n </v-card-text>\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click=\"displayErrorDialog = false\"\n color=\"primary\"\n data-test=\"error-dialog-ok\"\n >\n Ok\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n\n <v-dialog v-model=\"displaySendHazardous\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Hazardous Warning </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"mx-1\">\n <v-row class=\"my-2\">\n <span>\n Warning: Command {{ targetName }} {{ commandName }} is\n Hazardous. Send?\n </span>\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click=\"cancelHazardousCmd\"\n outlined\n data-test=\"send-hazardous-no\"\n >\n No\n </v-btn>\n <v-btn\n @click=\"sendHazardousCmd\"\n class=\"primary mx-1\"\n data-test=\"send-hazardous-yes\"\n >\n Yes\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n\n <v-dialog v-model=\"displaySendRaw\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Send Raw </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"mx-1\">\n <v-row class=\"my-2\">\n <v-col>Interface:</v-col>\n <v-col>\n <v-select\n solo\n hide-details\n dense\n :items=\"interfaces\"\n item-text=\"label\"\n item-value=\"value\"\n v-model=\"selectedInterface\"\n />\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col>Filename:</v-col>\n <v-col>\n <input type=\"file\" @change=\"selectRawCmdFile($event)\" />\n </v-col>\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn @click=\"cancelRawCmd\" outlined data-test=\"raw-cancel\">\n Cancel\n </v-btn>\n <v-btn @click=\"sendRawCmd\" class=\"primary\" data-test=\"raw-ok\">\n Ok\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport Api from '@cosmosc2/tool-common/src/services/api'\nimport TargetPacketItemChooser from '@cosmosc2/tool-common/src/components/TargetPacketItemChooser'\nimport CommandParameterEditor from '@/tools/CommandSender/CommandParameterEditor'\nimport { CosmosApi } from '@cosmosc2/tool-common/src/services/cosmos-api'\nimport DetailsDialog from '@cosmosc2/tool-common/src/components/DetailsDialog'\nimport TopBar from '@cosmosc2/tool-common/src/components/TopBar'\nimport 'sprintf-js'\n\nexport default {\n components: {\n DetailsDialog,\n TargetPacketItemChooser,\n CommandParameterEditor,\n TopBar,\n },\n data() {\n return {\n title: 'Command Sender',\n search: '',\n headers: [\n { text: 'Name', value: 'parameter_name' },\n { text: 'Value or State', value: 'val_and_states' },\n { text: 'Units', value: 'units' },\n { text: 'Description', value: 'description' },\n ],\n targetName: '',\n commandName: '',\n ignoreRangeChecks: false,\n statesInHex: false,\n showIgnoredParams: false,\n cmdRaw: false,\n ignoredParams: [],\n rows: [],\n interfaces: [],\n selectedInterface: '',\n rawCmdFile: null,\n status: '',\n history: '',\n displaySendHazardous: false,\n displayErrorDialog: false,\n displaySendRaw: false,\n sendDisabled: false,\n api: null,\n viewDetails: false,\n contextMenuShown: false,\n parameterName: '',\n reservedItemNames: [],\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n ],\n menus: [\n // TODO: Implement send raw\n // {\n // label: 'File',\n // items: [\n // {\n // label: 'Send Raw',\n // command: () => {\n // this.setupRawCmd()\n // }\n // }\n // ]\n // },\n {\n label: 'Mode',\n items: [\n {\n label: 'Ignore Range Checks',\n checkbox: true,\n command: () => {\n this.ignoreRangeChecks = !this.ignoreRangeChecks\n },\n },\n {\n label: 'Display State Values in Hex',\n checkbox: true,\n command: () => {\n this.statesInHex = !this.statesInHex\n },\n },\n {\n label: 'Show Ignored Parameters',\n checkbox: true,\n command: () => {\n this.showIgnoredParams = !this.showIgnoredParams\n // TODO: Maybe we don't need to do this if the data-table\n // can render the whole thing and we just display with v-if\n this.updateCmdParams()\n },\n },\n {\n label: 'Disable Parameter Conversions',\n checkbox: true,\n command: () => {\n this.cmdRaw = !this.cmdRaw\n },\n },\n ],\n },\n ],\n }\n },\n created() {\n Api.get(`/cosmos-api/autocomplete/reserved-item-names`).then((response) => {\n this.reservedItemNames = response.data\n })\n this.api = new CosmosApi()\n // If we're passed in the route then manually call commandChanged to update\n if (this.$route.params.target && this.$route.params.packet) {\n this.commandChanged({\n targetName: this.$route.params.target.toUpperCase(),\n packetName: this.$route.params.packet.toUpperCase(),\n })\n }\n },\n methods: {\n getBackgroundColor() {\n return this.$vuetify.theme.parsedTheme.tertiary.darken2\n },\n historyEnter(event) {\n // Prevent the enter key from actually causing a newline\n event.preventDefault()\n const textarea = this.$refs.history.$refs.input\n let pos = textarea.selectionStart\n // Find the newline after the cursor position\n let nextNewline = textarea.value.indexOf('\\n', pos)\n // Get everything up to the next newline and split on newlines\n const lines = textarea.value.substr(0, nextNewline).split('\\n')\n let command = lines[lines.length - 1]\n // Blank commands can happen if typing return on a blank line\n if (command === '') {\n return\n }\n\n // Remove the cmd(\"\") wrapper\n let firstQuote = command.indexOf('\"')\n let lastQuote = command.lastIndexOf('\"')\n command = command.substr(firstQuote + 1, lastQuote - firstQuote - 1)\n this.sendCmd(command)\n },\n\n showContextMenu(e, row) {\n e.preventDefault()\n this.parameterName = row.item.parameter_name\n this.contextMenuShown = false\n this.x = e.clientX\n this.y = e.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n\n isFloat(str) {\n // Regex to identify a string as a floating point number\n if (/^\\s*[-+]?\\d*\\.\\d+\\s*$/.test(str)) {\n return true\n }\n // Regex to identify a string as a floating point number in scientific notation.\n if (/^\\s*[-+]?(\\d+((\\.\\d+)?)|(\\.\\d+))[eE][-+]?\\d+\\s*$/.test(str)) {\n return true\n }\n return false\n },\n\n isInt(str) {\n // Regular expression to identify a String as an integer\n if (/^\\s*[-+]?\\d+\\s*$/.test(str)) {\n return true\n }\n\n // # Regular expression to identify a String as an integer in hexadecimal format\n if (/^\\s*0[xX][\\dabcdefABCDEF]+\\s*$/.test(str)) {\n return true\n }\n return false\n },\n\n isArray(str) {\n // Regular expression to identify a String as an Array\n if (/^\\s*\\[.*\\]\\s*$/.test(str)) {\n return true\n }\n return false\n },\n\n removeQuotes(str) {\n // Return the string with leading and trailing quotes removed\n if (str.length < 2) {\n return str\n }\n var firstChar = str.charAt(0)\n if (firstChar != '\"' && firstChar != \"'\") {\n return str\n }\n var lastChar = str.charAt(str.length - 1)\n if (firstChar != lastChar) {\n return str\n }\n return str.slice(1, -1)\n },\n\n convertToValue(param) {\n if (typeof param.val_and_states.val != 'string') {\n return param.val_and_states.val\n }\n\n var str = param.val_and_states.val\n var quotes_removed = this.removeQuotes(str)\n if (str == quotes_removed) {\n var upcaseStr = str.toUpperCase()\n\n if (\n (param.type == 'STRING' || param.type == 'BLOCK') &&\n upcaseStr.startsWith('0X')\n ) {\n var hexStr = upcaseStr.slice(2)\n if (hexStr.length % 2 != 0) {\n hexStr = '0' + hexStr\n }\n var jstr = { json_class: 'String', raw: [] }\n for (var i = 0; i < hexStr.length; i += 2) {\n var nibble = hexStr.charAt(i) + hexStr.charAt(i + 1)\n jstr.raw.push(parseInt(nibble, 16))\n }\n return jstr\n } else {\n if (upcaseStr == 'INFINITY') {\n return Infinity\n } else if (upcaseStr == '-INFINITY') {\n return -Infinity\n } else if (upcaseStr == 'NAN') {\n return NaN\n } else if (this.isFloat(str)) {\n return parseFloat(str)\n } else if (this.isInt(str)) {\n return parseInt(str)\n } else if (this.isArray(str)) {\n return eval(str)\n } else {\n return str\n }\n }\n } else {\n return quotes_removed\n }\n },\n\n convertToString(value) {\n var i = 0\n var return_value = ''\n if (Object.prototype.toString.call(value).slice(8, -1) === 'Array') {\n var arrayLength = value.length\n return_value = '[ '\n for (i = 0; i < arrayLength; i++) {\n if (\n Object.prototype.toString.call(value[i]).slice(8, -1) === 'String'\n ) {\n return_value += '\"' + value[i] + '\"'\n } else {\n return_value += value[i]\n }\n if (i != arrayLength - 1) {\n return_value += ', '\n }\n }\n return_value += ' ]'\n } else if (\n Object.prototype.toString.call(value).slice(8, -1) === 'Object'\n ) {\n if (value.json_class == 'String' && value.raw) {\n // This is binary data, display in hex.\n return_value = '0x'\n for (i = 0; i < value.raw.length; i++) {\n var nibble = value.raw[i].toString(16).toUpperCase()\n if (nibble.length < 2) {\n nibble = '0' + nibble\n }\n return_value += nibble\n }\n } else if (value.json_class == 'Float' && value.raw) {\n return_value = value.raw\n } else {\n // TBD - are there other objects that we need to handle?\n return_value = String(value)\n }\n } else {\n return_value = String(value)\n }\n return return_value\n },\n\n commandChanged(event) {\n if (\n this.targetName !== event.targetName ||\n this.commandName !== event.packetName\n ) {\n this.targetName = event.targetName\n this.commandName = event.packetName\n // Only updateCmdParams if we're not already in the middle of an update\n if (this.sendDisabled === false) {\n this.updateCmdParams()\n }\n this.$router\n .replace({\n name: 'CommandSender',\n params: {\n target: this.targetName,\n packet: this.commandName,\n },\n })\n // catch the error in case we route to where we already are\n .catch((err) => {})\n }\n },\n\n updateCmdParams() {\n this.sendDisabled = true\n this.ignoredParams = []\n this.rows = []\n this.api\n .get_target(this.targetName)\n .then(\n (target) => {\n this.ignoredParams = target.ignored_parameters\n return this.api.get_command(this.targetName, this.commandName)\n },\n (error) => {\n this.displayError('getting ignored parameters', error)\n }\n )\n .then(\n (command) => {\n command.items.forEach((parameter) => {\n if (this.reservedItemNames.includes(parameter.name)) return\n if (\n !this.ignoredParams.includes(parameter.name) ||\n this.showIgnoredParams\n ) {\n let val = parameter.default\n if (parameter.required) {\n val = ''\n }\n if (parameter.format_string) {\n val = sprintf(parameter.format_string, parameter.default)\n }\n this.rows.push({\n parameter_name: parameter.name,\n val_and_states: {\n val: val,\n states: parameter.states,\n selected_state: null,\n selected_state_label: '',\n manual_value: null,\n },\n description: parameter.description,\n units: parameter.units,\n type: parameter.data_type,\n })\n }\n })\n this.sendDisabled = false\n this.status = ''\n },\n (error) => {\n this.displayError('getting command parameters', error)\n }\n )\n },\n\n statusChange(event) {\n this.status = event.status\n },\n\n createParamList() {\n let paramList = {}\n for (var i = 0; i < this.rows.length; i++) {\n paramList[this.rows[i].parameter_name] = this.convertToValue(\n this.rows[i]\n )\n }\n return paramList\n },\n\n buildCmd() {\n this.sendCmd(this.targetName, this.commandName, this.createParamList())\n },\n\n // Note targetName can also be the entire command to send, e.g. \"INST ABORT\" or\n // \"INST COLLECT with TYPE 0, DURATION 1, OPCODE 171, TEMP 10\" when being\n // sent from the history. In that case commandName and paramList are undefined\n // and the api calls handle that.\n sendCmd(targetName, commandName, paramList) {\n this.sendDisabled = true\n let hazardous = false\n let cmd = ''\n this.api.get_cmd_hazardous(targetName, commandName, paramList).then(\n (response) => {\n hazardous = response\n\n if (hazardous) {\n this.displaySendHazardous = true\n } else {\n let obs\n if (this.cmdRaw) {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_raw_no_range_check'\n obs = this.api.cmd_raw_no_range_check(\n targetName,\n commandName,\n paramList\n )\n } else {\n cmd = 'cmd_raw'\n obs = this.api.cmd_raw(targetName, commandName, paramList)\n }\n } else {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_no_range_check'\n obs = this.api.cmd_no_range_check(\n targetName,\n commandName,\n paramList\n )\n } else {\n cmd = 'cmd'\n obs = this.api.cmd(targetName, commandName, paramList)\n }\n }\n\n obs.then(\n (response) => {\n this.processCmdResponse(true, response)\n },\n (error) => {\n this.processCmdResponse(false, error)\n }\n )\n }\n },\n (error) => {\n this.processCmdResponse(false, error)\n }\n )\n },\n\n sendHazardousCmd() {\n this.displaySendHazardous = false\n var paramList = this.createParamList()\n\n let obs = ''\n let cmd = ''\n if (this.cmdRaw) {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_no_checks'\n obs = this.api.cmd_raw_no_checks(\n this.targetName,\n this.commandName,\n paramList\n )\n } else {\n cmd = 'cmd_no_hazardous_check'\n obs = this.api.cmd_raw_no_hazardous_check(\n this.targetName,\n this.commandName,\n paramList\n )\n }\n } else {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_no_checks'\n obs = this.api.cmd_no_checks(\n this.targetName,\n this.commandName,\n paramList\n )\n } else {\n cmd = 'cmd_no_hazardous_check'\n obs = this.api.cmd_no_hazardous_check(\n this.targetName,\n this.commandName,\n paramList\n )\n }\n }\n\n obs.then(\n (response) => {\n this.processCmdResponse(true, response)\n },\n (error) => {\n this.processCmdResponse(false, error)\n }\n )\n },\n\n cancelHazardousCmd() {\n this.displaySendHazardous = false\n this.status = 'Hazardous command not sent'\n this.sendDisabled = false\n },\n\n processCmdResponse(cmd_sent, response) {\n var msg = ''\n if (cmd_sent) {\n msg = 'cmd(\"' + response[0] + ' ' + response[1]\n var keys = Object.keys(response[2])\n if (keys.length > 0) {\n msg += ' with '\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n msg += key + ' ' + this.convertToString(response[2][key])\n if (i < keys.length - 1) {\n msg += ', '\n }\n }\n }\n msg += '\")'\n if (!this.history.includes(msg)) {\n this.history += msg + '\\n'\n }\n msg += ' sent.'\n // Add the number of commands sent to the status message\n if (this.status.includes(msg)) {\n let parts = this.status.split('sent.')\n if (parts[1].includes('(')) {\n let num = parseInt(parts[1].substr(2, parts[1].indexOf(')') - 2))\n msg = parts[0] + 'sent. (' + (num + 1) + ')'\n } else {\n msg += ' (2)'\n }\n }\n this.status = msg\n } else {\n var context = 'sending ' + this.targetName + ' ' + this.commandName\n this.displayError(context, response, true)\n }\n this.sendDisabled = false\n },\n\n displayError(context, error, showDialog = false) {\n this.status = `Error ${context} due to ${error.name}`\n if (error.message && error.message != '') {\n this.status += ': '\n this.status += error.message\n }\n if (showDialog) {\n this.displayErrorDialog = true\n }\n },\n\n setupRawCmd() {\n this.api.get_interface_names().then(\n (response) => {\n var interfaces = []\n for (var i = 0; i < response.length; i++) {\n interfaces.push({ label: response[i], value: response[i] })\n }\n this.interfaces = interfaces\n this.selectedInterface = interfaces[0].value\n this.displaySendRaw = true\n },\n (error) => {\n this.displaySendRaw = false\n this.displayError('getting interface names', error, true)\n }\n )\n },\n\n selectRawCmdFile(event) {\n this.rawCmdFile = event.target.files[0]\n },\n\n onLoad(event) {\n var bufView = new Uint8Array(event.target.result)\n var jstr = { json_class: 'String', raw: [] }\n for (var i = 0; i < bufView.length; i++) {\n jstr.raw.push(bufView[i])\n }\n\n this.api.send_raw(this.selectedInterface, jstr).then(\n () => {\n this.displaySendRaw = false\n this.status =\n 'Sent ' +\n bufView.length +\n ' bytes to interface ' +\n this.selectedInterface\n },\n (error) => {\n this.displaySendRaw = false\n this.displayError('sending raw data', error, true)\n }\n )\n },\n\n sendRawCmd() {\n var self = this\n var reader = new FileReader()\n reader.onload = function (e) {\n self.onLoad(e)\n }\n reader.onerror = function (e) {\n self.displaySendRaw = false\n var target = e.target\n self.displayError('sending raw data', target.error, true)\n }\n // TBD - use the other event handlers to implement a progress bar for the\n // file upload. Handle abort as well?\n //reader.onloadstart = function(e) {}\n //reader.onprogress = function(e) {}\n //reader.onloadend = function(e) {}\n //reader.onabort = function(e) {}\n\n reader.readAsArrayBuffer(this.rawCmdFile)\n },\n\n cancelRawCmd() {\n this.displaySendRaw = false\n this.status = 'Raw command not sent'\n },\n },\n}\n</script>\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport axios from './axios.js'\n\nconst request = async function (\n method,\n url,\n { data, params = {}, headers, noAuth = false, noScope = false } = {}\n) {\n if (!noAuth) {\n try {\n await CosmosAuth.updateToken(CosmosAuth.defaultMinValidity)\n } catch (error) {\n CosmosAuth.login()\n }\n headers['Authorization'] = localStorage.cosmosToken\n }\n if (!noScope && !params['scope']) {\n params['scope'] = localStorage.scope\n }\n return axios({\n method,\n url,\n data,\n params,\n headers,\n })\n}\n\nconst acceptOnlyDefaultHeaders = {\n Accept: 'application/json',\n}\n\nconst fullDefaultHeaders = {\n ...acceptOnlyDefaultHeaders,\n 'Content-Type': 'application/json',\n}\n\nexport default {\n get: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('get', path, { params, headers, noScope, noAuth })\n },\n\n put: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('put', path, { data, params, headers, noScope, noAuth })\n },\n\n post: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('post', path, { data, params, headers, noScope, noAuth })\n },\n\n delete: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('delete', path, { params, headers, noScope, noAuth })\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport axios from 'axios'\nimport Vue from 'vue'\n\nconst vueInstance = new Vue()\n\nconst axiosInstance = axios.create({\n baseURL: location.origin,\n timeout: 10000,\n params: {},\n})\n\naxiosInstance.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error.response.status === 401) {\n delete localStorage.cosmosToken\n CosmosAuth.login(location.href)\n } else {\n let body = `HTTP ${error.response.status} - `\n if (error.response?.data?.message) {\n body += `${error.response.data.message}`\n } else if (error.response?.data?.exception) {\n body += `${error.response.data.exception}`\n } else if (error.response?.data?.error?.message) {\n if (error.response.data.error.class) {\n body += `${error.response.data.error.class} `\n }\n body += `${error.response.data.error.message}`\n } else {\n body += `${error.response?.data}`\n }\n vueInstance.$notify.serious({\n title: 'Network error',\n body,\n })\n }\n throw error\n }\n)\n\nexport default axiosInstance\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport axios from './axios.js'\n\nexport class CosmosApi {\n id = 1\n\n constructor() {}\n\n // This is hacky Json-rpc for now. Should probably use a jsonrpc library.\n async exec(method, params, kwparams = {}) {\n try {\n await CosmosAuth.updateToken(CosmosAuth.defaultMinValidity)\n } catch (error) {\n CosmosAuth.login()\n }\n this.id = this.id + 1\n try {\n kwparams['scope'] = localStorage.scope\n const response = await axios.post(\n '/cosmos-api/api',\n {\n jsonrpc: '2.0',\n method: method,\n params: params,\n id: this.id,\n keyword_params: kwparams,\n },\n {\n headers: {\n Authorization: localStorage.cosmosToken,\n 'Content-Type': 'application/json-rpc',\n },\n }\n )\n // var data = response.data\n // if (data.error) {\n // var err = new Error()\n // err.name = data.error.data.class\n // err.message = data.error.data.message\n // console.log(data.error.data.backtrace.join('\\n'))\n // throw err\n // }\n return response.data.result\n } catch (error) {\n var err = new Error()\n if (error.response) {\n // The request was made and the server responded with a\n // status code that falls out of the range of 2xx\n err.name = error.response.data.error.data.class\n err.message = error.response.data.error.data.message\n } else if (error.request) {\n // The request was made but no response was received, `error.request`\n // is an instance of XMLHttpRequest in the browser and an instance\n // of http.ClientRequest in Node.js\n err.name = 'Request error'\n err.message = 'Request error, no response received'\n } else {\n // Something happened in setting up the request and triggered an Error\n err.name = 'Unknown error'\n }\n //console.log(error)\n throw err\n }\n }\n\n decode_cosmos_type(val) {\n if (val !== null && typeof val === 'object') {\n if (val.json_class == 'Float' && val.raw) {\n if (val.raw == 'NaN') {\n return NaN\n } else if (val.raw == 'Infinity') {\n return Infinity\n } else if (val.raw == '-Infinity') {\n return -Infinity\n }\n }\n }\n return null\n }\n\n encode_cosmos_type(val) {\n if (Number.isNaN(val)) {\n return { json_class: 'Float', raw: 'NaN' }\n } else if (val == Number.POSITIVE_INFINITY) {\n return { json_class: 'Float', raw: 'Infinity' }\n } else if (val == Number.NEGATIVE_INFINITY) {\n return { json_class: 'Float', raw: '-Infinity' }\n }\n return null\n }\n\n // ***********************************************\n // The following APIs are used by the CmdTlmServer\n // ***********************************************\n get_all_interface_info() {\n return this.exec('get_all_interface_info', [])\n }\n\n connect_interface(interface_name) {\n return this.exec('connect_interface', [interface_name])\n }\n\n disconnect_interface(interface_name) {\n return this.exec('disconnect_interface', [interface_name])\n }\n\n get_all_router_info() {\n return this.exec('get_all_router_info', [])\n }\n\n connect_router(router_name) {\n return this.exec('connect_router', [router_name])\n }\n\n disconnect_router(router_name) {\n return this.exec('disconnect_router', [router_name])\n }\n\n get_all_target_info() {\n return this.exec('get_all_target_info', [])\n }\n\n get_all_cmd_info() {\n return this.exec('get_all_cmd_info', [])\n }\n\n get_all_tlm_info() {\n return this.exec('get_all_tlm_info', [])\n }\n\n get_item(target, packet, item) {\n return this.exec('get_item', [target, packet, item])\n }\n\n get_parameter(target, packet, item) {\n return this.exec('get_parameter', [target, packet, item])\n }\n\n get_all_packet_logger_info() {\n return this.exec('get_all_packet_logger_info', [])\n }\n\n start_logging() {\n return this.exec('start_logging', [])\n }\n\n stop_logging() {\n return this.exec('stop_logging', [])\n }\n\n start_cmd_log(log_writer_name) {\n return this.exec('start_cmd_log', [log_writer_name])\n }\n\n start_tlm_log(log_writer_name) {\n return this.exec('start_tlm_log', [log_writer_name])\n }\n\n stop_cmd_log(log_writer_name) {\n return this.exec('stop_cmd_log', [log_writer_name])\n }\n\n stop_tlm_log(log_writer_name) {\n return this.exec('stop_tlm_log', [log_writer_name])\n }\n\n get_server_status() {\n return this.exec('get_server_status', [])\n }\n\n get_limits_sets() {\n return this.exec('get_limits_sets', [])\n }\n\n get_limits_set() {\n return this.exec('get_limits_set', [])\n }\n\n set_limits_set(limits_set) {\n return this.exec('set_limits_set', [limits_set])\n }\n\n get_background_tasks() {\n return this.exec('get_background_tasks', [])\n }\n\n start_background_task(name) {\n return this.exec('start_background_task', [name])\n }\n\n stop_background_task(name) {\n return this.exec('stop_background_task', [name])\n }\n\n // ***********************************************\n // End CmdTlmServer APIs\n // ***********************************************\n\n get_oldest_logfile() {\n return this.exec('get_oldest_logfile', [])\n }\n\n get_target(target_name) {\n return this.exec('get_target', [target_name])\n }\n\n get_target_list() {\n return this.exec('get_target_list', [])\n }\n\n get_telemetry(target_name, packet_name) {\n return this.exec('get_telemetry', [target_name, packet_name])\n }\n\n get_all_telemetry(target_name) {\n return this.exec('get_all_telemetry', [target_name])\n }\n\n // Called by PacketViewerComponent\n async get_tlm_packet(target_name, packet_name, value_type) {\n const data = await this.exec('get_tlm_packet', [target_name, packet_name], {\n type: value_type,\n })\n // Make sure data isn't null or undefined. Note this is the only valid use of == or !=\n if (data != null) {\n var len = data.length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_cosmos_type(data[i][1])\n if (converted !== null) {\n data[i][1] = converted\n }\n }\n }\n return data\n }\n\n // Called by PacketViewerComponent\n get_packet_derived_items(target_name, packet_name) {\n return this.exec('get_packet_derived_items', [target_name, packet_name])\n }\n\n // Called by CmdTlmServer Tlm Packets tab\n get_tlm_buffer(target_name, packet_name) {\n return this.exec('get_tlm_buffer', [target_name, packet_name])\n }\n\n // Called by CosmosScreenComponent\n async get_tlm_values(items) {\n const data = await this.exec('get_tlm_values', [items])\n var len = data[0].length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_cosmos_type(data[0][i])\n if (converted !== null) {\n data[0][i] = converted\n }\n }\n return data\n }\n\n // Called by LimitsbarWidget\n get_limits(target_name, packet_name, item_name) {\n return this.exec('get_limits', [target_name, packet_name, item_name])\n }\n\n // Called by LimitsMonitorComponent\n async tlm(target_name, packet_name, item_name) {\n const data = await this.exec('tlm', [target_name, packet_name, item_name])\n var converted = this.decode_cosmos_type(data)\n if (converted !== null) {\n data = converted\n }\n return data\n }\n\n get_all_commands(target_name) {\n return this.exec('get_all_commands', [target_name])\n }\n\n get_command(target_name, command_name) {\n return this.exec('get_command', [target_name, command_name])\n }\n\n get_cmd_value(\n target_name,\n packet_name,\n parameter_name,\n value_type = 'CONVERTED'\n ) {\n return this.exec('get_cmd_value', [\n target_name,\n packet_name,\n parameter_name,\n value_type,\n ])\n }\n\n // Called by CmdTlmServer Cmd Packets tab\n get_cmd_buffer(target_name, packet_name) {\n return this.exec('get_cmd_buffer', [target_name, packet_name])\n }\n\n // Implementation of functionality shared by cmd methods with param_lists.\n _cmd(method, target_name, command_name, param_list) {\n var converted = null\n for (var key in param_list) {\n if (Object.prototype.hasOwnProperty.call(param_list, key)) {\n converted = this.encode_cosmos_type(param_list[key])\n if (converted !== null) {\n param_list[key] = converted\n }\n }\n }\n return this.exec(method, [target_name, command_name, param_list])\n }\n\n // Called by CmdSenderComponent\n get_cmd_hazardous(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('get_cmd_hazardous', target_name)\n } else {\n return this._cmd(\n 'get_cmd_hazardous',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd', target_name)\n } else {\n return this._cmd('cmd', target_name, command_name, param_list)\n }\n }\n\n // Called by CmdSenderComponent\n cmd_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw', target_name)\n } else {\n return this._cmd('cmd_raw', target_name, command_name, param_list)\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_checks', target_name)\n } else {\n return this._cmd('cmd_no_checks', target_name, command_name, param_list)\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_checks', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_checks',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n get_interface_names() {\n return this.exec('get_interface_names', [])\n }\n\n // Called by CmdSenderComponent\n send_raw(interface_name, data) {\n return this.exec('send_raw', [interface_name, data])\n }\n\n list_configs(tool) {\n return this.exec('list_configs', [tool])\n }\n\n load_config(tool, name) {\n return this.exec('load_config', [tool, name])\n }\n\n save_config(tool, name, data) {\n return this.exec('save_config', [tool, name, data])\n }\n\n delete_config(tool, name) {\n return this.exec('delete_config', [tool, name])\n }\n\n get_out_of_limits() {\n return this.exec('get_out_of_limits', [])\n }\n\n get_overall_limits_state(ignored) {\n return this.exec('get_overall_limits_state', [ignored])\n }\n\n list_settings() {\n return this.exec('list_settings', [])\n }\n\n get_all_settings() {\n return this.exec('get_all_settings', [])\n }\n\n get_setting(name) {\n return this.exec('get_setting', [name])\n }\n\n get_settings(array) {\n return this.exec('get_settings', array)\n }\n\n save_setting(name, data) {\n return this.exec('save_setting', [name, data])\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.states === null)?_c('v-text-field',{attrs:{\"value\":_vm.value.val,\"hide-details\":\"\",\"dense\":\"\",\"data-test\":\"cmd-param-value\"},on:{\"change\":_vm.handleChange}}):_c('v-container',[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-overflow-btn',{staticClass:\"mr-4\",staticStyle:{},attrs:{\"items\":_vm.states,\"item-text\":\"label\",\"item-value\":\"value\",\"label\":\"State\",\"hide-details\":\"\",\"dense\":\"\",\"data-test\":\"cmd-param-select\"},on:{\"change\":_vm.handleStateChange},model:{value:(_vm.value.selected_state),callback:function ($$v) {_vm.$set(_vm.value, \"selected_state\", $$v)},expression:\"value.selected_state\"}})],1),_c('v-col',[_c('v-text-field',{attrs:{\"value\":_vm.stateValue,\"hide-details\":\"\",\"dense\":\"\",\"data-test\":\"cmd-param-value\"},on:{\"change\":_vm.handleChange}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-text-field\n v-if=\"states === null\"\n :value=\"value.val\"\n hide-details\n dense\n @change=\"handleChange\"\n data-test=\"cmd-param-value\"\n />\n <v-container v-else>\n <v-row no-gutters>\n <v-col>\n <v-overflow-btn\n :items=\"states\"\n v-model=\"value.selected_state\"\n @change=\"handleStateChange\"\n item-text=\"label\"\n item-value=\"value\"\n label=\"State\"\n style=\"primary\"\n class=\"mr-4\"\n hide-details\n dense\n data-test=\"cmd-param-select\"\n />\n </v-col>\n <v-col>\n <v-text-field\n :value=\"stateValue\"\n @change=\"handleChange\"\n hide-details\n dense\n data-test=\"cmd-param-value\"\n />\n </v-col>\n </v-row>\n </v-container>\n </div>\n</template>\n\n<script>\nexport default {\n model: {\n prop: 'initialValue',\n event: 'input',\n },\n props: {\n statesInHex: {\n type: Boolean,\n default: false,\n },\n initialValue: {\n type: Object,\n default: () => ({\n val: '',\n states: null,\n selected_state: null,\n selected_state_label: '',\n manual_value: null,\n }),\n },\n },\n data() {\n return {\n value: this.initialValue,\n }\n },\n computed: {\n stateValue() {\n if (this.statesInHex) {\n return '0x' + this.value.val.toString(16)\n } else {\n return this.value.val\n }\n },\n states() {\n if (this.value.states != null) {\n var calcStates = []\n for (var key in this.value.states) {\n if (Object.prototype.hasOwnProperty.call(this.value.states, key)) {\n calcStates.push({ label: key, value: this.value.states[key].value })\n }\n }\n calcStates.push({\n label: 'MANUALLY ENTERED',\n value: 'MANUALLY ENTERED',\n })\n\n // TBD pick default better (use actual default instead of just first item in list)\n return calcStates\n } else {\n return null\n }\n },\n },\n methods: {\n handleChange(value) {\n this.value.val = value\n this.value.manual_value = value\n if (this.value.states) {\n var selected_state = 'MANUALLY ENTERED'\n var selected_state_label = 'MANUALLY_ENTERED'\n for (const state of this.states) {\n if (state.value === parseInt(value)) {\n selected_state = parseInt(value)\n selected_state_label = state.label\n break\n }\n }\n this.value.selected_state = selected_state\n this.value.selected_state_label = selected_state_label\n } else {\n this.value.selected_state = null\n }\n this.$emit('input', this.value)\n },\n\n handleStateChange(value) {\n var selected_state_label = null\n var selected_state = null\n for (var index = 0; index < this.states.length; index++) {\n if (value == this.states[index].value) {\n selected_state_label = this.states[index].label\n selected_state = value\n break\n }\n }\n this.value.selected_state_label = selected_state_label\n if (selected_state_label == 'MANUALLY ENTERED') {\n this.value.val = this.value.manual_value\n // Stop propagation of the click event so the editor stays active\n // to let the operator enter a manual value.\n // event.originalEvent.stopPropagation()\n } else {\n this.value.val = selected_state\n this.$emit('input', this.value)\n }\n },\n },\n}\n</script>\n<style scoped>\n.v-overflow-btn {\n margin-top: 0px;\n}\n.container {\n padding: 0px;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandParameterEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandParameterEditor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CommandParameterEditor.vue?vue&type=template&id=49aaed43&scoped=true&\"\nimport script from \"./CommandParameterEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./CommandParameterEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CommandParameterEditor.vue?vue&type=style&index=0&id=49aaed43&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"49aaed43\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('top-bar',{attrs:{\"menus\":_vm.menus,\"title\":_vm.title}}),_c('target-packet-item-chooser',{attrs:{\"initial-target-name\":this.$route.params.target,\"initial-packet-name\":this.$route.params.packet,\"disabled\":_vm.sendDisabled,\"button-text\":\"Send\",\"mode\":\"cmd\"},on:{\"on-set\":function($event){return _vm.commandChanged($event)},\"click\":function($event){return _vm.buildCmd($event)}}}),(_vm.rows.length != 0)?_c('v-card',[_c('v-card-title',[_vm._v(\" Parameters \"),_c('v-spacer'),_c('v-text-field',{attrs:{\"append-icon\":\"mdi-magnify\",\"label\":\"Search\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.rows,\"search\":_vm.search,\"calculate-widths\":\"\",\"disable-pagination\":\"\",\"hide-default-footer\":\"\",\"multi-sort\":\"\",\"dense\":\"\"},on:{\"contextmenu:row\":_vm.showContextMenu},scopedSlots:_vm._u([{key:\"item.val_and_states\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('command-parameter-editor',{attrs:{\"states-in-hex\":_vm.statesInHex},model:{value:(item.val_and_states),callback:function ($$v) {_vm.$set(item, \"val_and_states\", $$v)},expression:\"item.val_and_states\"}})]}}],null,false,1123654540)})],1):_vm._e(),_c('div',{staticClass:\"ma-3\"},[_vm._v(\"Status: \"+_vm._s(_vm.status))]),_c('div',{staticClass:\"mt-3\"},[_vm._v(\" Command History: (Pressing Enter on the line re-executes the command) \")]),_c('v-textarea',{ref:\"history\",attrs:{\"value\":_vm.history,\"solo\":\"\",\"dense\":\"\",\"hide-details\":\"\",\"data-test\":\"sender-history\",\"background-color\":_vm.getBackgroundColor()},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.historyEnter($event)}}}),_c('v-menu',{attrs:{\"position-x\":_vm.x,\"position-y\":_vm.y,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.contextMenuShown),callback:function ($$v) {_vm.contextMenuShown=$$v},expression:\"contextMenuShown\"}},[_c('v-list',_vm._l((_vm.contextMenuOptions),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){$event.stopPropagation();return item.action.apply(null, arguments)}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)}),1)],1),_c('details-dialog',{attrs:{\"target-name\":_vm.targetName,\"packet-name\":_vm.commandName,\"item-name\":_vm.parameterName,\"type\":'cmd'},model:{value:(_vm.viewDetails),callback:function ($$v) {_vm.viewDetails=$$v},expression:\"viewDetails\"}}),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.displayErrorDialog),callback:function ($$v) {_vm.displayErrorDialog=$$v},expression:\"displayErrorDialog\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Error \")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"mx-1\"},[_c('v-row',{staticClass:\"my-2\"},[_c('v-card-text',[_c('span',{domProps:{\"textContent\":_vm._s(_vm.status)}})])],1),_c('v-row',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"data-test\":\"error-dialog-ok\"},on:{\"click\":function($event){_vm.displayErrorDialog = false}}},[_vm._v(\" Ok \")])],1)],1)])],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.displaySendHazardous),callback:function ($$v) {_vm.displaySendHazardous=$$v},expression:\"displaySendHazardous\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Hazardous Warning \")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"mx-1\"},[_c('v-row',{staticClass:\"my-2\"},[_c('span',[_vm._v(\" Warning: Command \"+_vm._s(_vm.targetName)+\" \"+_vm._s(_vm.commandName)+\" is Hazardous. Send? \")])]),_c('v-row',[_c('v-spacer'),_c('v-btn',{attrs:{\"outlined\":\"\",\"data-test\":\"send-hazardous-no\"},on:{\"click\":_vm.cancelHazardousCmd}},[_vm._v(\" No \")]),_c('v-btn',{staticClass:\"primary mx-1\",attrs:{\"data-test\":\"send-hazardous-yes\"},on:{\"click\":_vm.sendHazardousCmd}},[_vm._v(\" Yes \")])],1)],1)])],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.displaySendRaw),callback:function ($$v) {_vm.displaySendRaw=$$v},expression:\"displaySendRaw\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Send Raw \")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"mx-1\"},[_c('v-row',{staticClass:\"my-2\"},[_c('v-col',[_vm._v(\"Interface:\")]),_c('v-col',[_c('v-select',{attrs:{\"solo\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"items\":_vm.interfaces,\"item-text\":\"label\",\"item-value\":\"value\"},model:{value:(_vm.selectedInterface),callback:function ($$v) {_vm.selectedInterface=$$v},expression:\"selectedInterface\"}})],1)],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_vm._v(\"Filename:\")]),_c('v-col',[_c('input',{attrs:{\"type\":\"file\"},on:{\"change\":function($event){return _vm.selectRawCmdFile($event)}}})])],1),_c('v-row',[_c('v-spacer'),_c('v-btn',{attrs:{\"outlined\":\"\",\"data-test\":\"raw-cancel\"},on:{\"click\":_vm.cancelRawCmd}},[_vm._v(\" Cancel \")]),_c('v-btn',{staticClass:\"primary\",attrs:{\"data-test\":\"raw-ok\"},on:{\"click\":_vm.sendRawCmd}},[_vm._v(\" Ok \")])],1)],1)])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandSender.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandSender.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CommandSender.vue?vue&type=template&id=77790331&\"\nimport script from \"./CommandSender.vue?vue&type=script&lang=js&\"\nexport * from \"./CommandSender.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":\"600\"},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Details \")]),_c('v-spacer')],1),_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.targetName)+\" \"+_vm._s(_vm.packetName)+\" \"+_vm._s(_vm.itemName)+\" \")]),_c('v-card-subtitle',[_vm._v(_vm._s(_vm.details.description))]),_c('v-card-text',[_c('v-container',{attrs:{\"fluid\":\"\"}},[(_vm.type === 'tlm')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Item Values\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Raw Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.rawValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Converted Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.convertedValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Formatted Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.formattedValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"With Units Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.unitsValue))])],1)],1)],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Bit Offset\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.bit_offset))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Bit Size\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.bit_size))])],1),(_vm.details.array_size)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Array Size\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.array_size))])],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Data Type\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.data_type))])],1),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Minimum\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.minimum))])],1):_vm._e(),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Maximum\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.maximum))])],1):_vm._e(),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Default\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.default))])],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Format String\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.format_string))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Read Conversion\")]),(_vm.details.read_conversion)?_c('v-col',[_vm._v(\" Class: \"+_vm._s(_vm.details.read_conversion.class)+\" \"),_c('br'),_vm._v(\" Params: \"+_vm._s(_vm.details.read_conversion.params)+\" \")]):_c('v-col')],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Write Conversion\")]),(_vm.details.write_conversion)?_c('v-col',[_vm._v(\" Class: \"+_vm._s(_vm.details.write_conversion.class)+\" \"),_c('br'),_vm._v(\" Params: \"+_vm._s(_vm.details.write_conversion.params)+\" \")]):_c('v-col')],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Id Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.id_value))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Units Full\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.units_full))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Units Abbr\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.units))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Endianness\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.endianness))])],1),(_vm.details.states)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"States\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.states),function(state,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_c('v-col',[_vm._v(_vm._s(state.value))])],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"States\")]),_c('v-col',[_vm._v(\"None\")])],1),(_vm.details.limits)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Limits\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.limits),function(limit,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_vm._v(\" \"+_vm._s(_vm.formatLimit(limit))+\" \"),_c('v-col')],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Limits\")]),_c('v-col',[_vm._v(\"None\")])],1),(_vm.details.meta)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Meta\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.meta),function(value,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_c('v-col',[_vm._v(_vm._s(value))])],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Meta\")]),_c('v-col',[_vm._v(\"None\")])],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-dialog v-model=\"show\" width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Details </span>\n <v-spacer />\n </v-system-bar>\n\n <v-card-title>\n {{ targetName }} {{ packetName }} {{ itemName }}\n </v-card-title>\n <v-card-subtitle>{{ details.description }}</v-card-subtitle>\n <v-card-text>\n <v-container fluid>\n <v-row no-gutters v-if=\"type === 'tlm'\">\n <v-col cols=\"3\" class=\"label\">Item Values</v-col>\n <v-col />\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">Raw Value</v-col>\n <v-col>{{ rawValue }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">Converted Value</v-col>\n <v-col>{{ convertedValue }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">Formatted Value</v-col>\n <v-col>{{ formattedValue }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">With Units Value</v-col>\n <v-col>{{ unitsValue }}</v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Bit Offset</v-col>\n <v-col>{{ details.bit_offset }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Bit Size</v-col>\n <v-col>{{ details.bit_size }}</v-col>\n </v-row>\n <v-row v-if=\"details.array_size\" no-gutters>\n <v-col cols=\"3\" class=\"label\">Array Size</v-col>\n <v-col>{{ details.array_size }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Data Type</v-col>\n <v-col>{{ details.data_type }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"type === 'cmd'\">\n <v-col cols=\"3\" class=\"label\">Minimum</v-col>\n <v-col>{{ details.minimum }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"type === 'cmd'\">\n <v-col cols=\"3\" class=\"label\">Maximum</v-col>\n <v-col>{{ details.maximum }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"type === 'cmd'\">\n <v-col cols=\"3\" class=\"label\">Default</v-col>\n <v-col>{{ details.default }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Format String</v-col>\n <v-col>{{ details.format_string }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Read Conversion</v-col>\n <v-col v-if=\"details.read_conversion\">\n Class: {{ details.read_conversion.class }}\n <br />\n Params:\n {{ details.read_conversion.params }}\n </v-col>\n <v-col v-else></v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Write Conversion</v-col>\n <v-col v-if=\"details.write_conversion\">\n Class: {{ details.write_conversion.class }}\n <br />\n Params:\n {{ details.write_conversion.params }}\n </v-col>\n <v-col v-else></v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Id Value</v-col>\n <v-col>{{ details.id_value }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Units Full</v-col>\n <v-col>{{ details.units_full }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Units Abbr</v-col>\n <v-col>{{ details.units }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Endianness</v-col>\n <v-col>{{ details.endianness }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"details.states\">\n <v-col cols=\"3\" class=\"label\">States</v-col>\n <v-col />\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row\n no-gutters\n v-for=\"(state, key) in details.states\"\n :key=\"key\"\n >\n <v-col cols=\"4\" class=\"label\">{{ key }}</v-col>\n <v-col>{{ state.value }}</v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row no-gutters v-else>\n <v-col cols=\"3\" class=\"label\">States</v-col>\n <v-col>None</v-col>\n </v-row>\n <v-row no-gutters v-if=\"details.limits\">\n <v-col cols=\"3\" class=\"label\">Limits</v-col>\n <v-col></v-col>\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row\n no-gutters\n v-for=\"(limit, key) in details.limits\"\n :key=\"key\"\n >\n <v-col cols=\"4\" class=\"label\">{{ key }}</v-col>\n {{ formatLimit(limit) }}\n <v-col></v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row no-gutters v-else>\n <v-col cols=\"3\" class=\"label\">Limits</v-col>\n <v-col>None</v-col>\n </v-row>\n <v-row no-gutters v-if=\"details.meta\">\n <v-col cols=\"3\" class=\"label\">Meta</v-col>\n <v-col></v-col>\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row no-gutters v-for=\"(value, key) in details.meta\" :key=\"key\">\n <v-col cols=\"4\" class=\"label\">{{ key }}</v-col>\n <v-col>{{ value }}</v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row v-else no-gutters>\n <v-col cols=\"3\" class=\"label\">Meta</v-col>\n <v-col>None</v-col>\n </v-row>\n </v-container>\n </v-card-text>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { CosmosApi } from '../services/cosmos-api.js'\n\nexport default {\n props: {\n type: {\n default: 'tlm',\n validator: function (value) {\n // The value must match one of these strings\n return ['cmd', 'tlm'].indexOf(value) !== -1\n },\n },\n targetName: String,\n packetName: String,\n itemName: String,\n value: Boolean, // value is the default prop when using v-model\n },\n data() {\n return {\n details: Object,\n updater: null,\n rawValue: null,\n convertedValue: null,\n formattedValue: null,\n unitsValue: null,\n }\n },\n computed: {\n show: {\n get() {\n return this.value\n },\n set(value) {\n this.$emit('input', value) // input is the default event when using v-model\n },\n },\n },\n created() {\n this.api = new CosmosApi()\n },\n beforeDestroy() {\n clearInterval(this.updater)\n this.updater = null\n },\n watch: {\n // Create a watcher on value which is the indicator to display the dialog\n // If value is true we request the details from the server\n // If this is a tlm dialog we setup an interval to get the telemetry values\n value: function (newValue, oldValue) {\n if (newValue) {\n this.requestDetails()\n if (this.type === 'tlm') {\n this.updater = setInterval(() => {\n this.api\n .get_tlm_values([\n `${this.targetName}__${this.packetName}__${this.itemName}__RAW`,\n `${this.targetName}__${this.packetName}__${this.itemName}__CONVERTED`,\n `${this.targetName}__${this.packetName}__${this.itemName}__FORMATTED`,\n `${this.targetName}__${this.packetName}__${this.itemName}__WITH_UNITS`,\n ])\n .then((values) => {\n this.rawValue = values[0][0]\n this.convertedValue = values[1][0]\n this.formattedValue = values[2][0]\n this.unitsValue = values[3][0]\n })\n }, 1000)\n }\n } else {\n clearInterval(this.updater)\n this.updater = null\n }\n },\n },\n methods: {\n requestDetails() {\n if (this.type === 'tlm') {\n this.api\n .get_item(this.targetName, this.packetName, this.itemName)\n .then((details) => {\n this.details = details\n })\n } else {\n this.api\n .get_parameter(this.targetName, this.packetName, this.itemName)\n .then((details) => {\n this.details = details\n })\n }\n },\n formatLimit(limit) {\n if (limit.green_low) {\n return (\n 'RL/' +\n limit.red_low +\n ' YL/' +\n limit.yellow_low +\n ' YH/' +\n limit.yellow_high +\n ' RH/' +\n limit.red_high +\n ' GL/' +\n limit.green_low +\n ' GH/' +\n limit.green_high\n )\n } else if (limit.red_low) {\n return (\n 'RL/' +\n limit.red_low +\n ' YL/' +\n limit.yellow_low +\n ' YH/' +\n limit.yellow_high +\n ' RH/' +\n limit.red_high\n )\n } else {\n return limit\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.label {\n font-weight: bold;\n text-transform: capitalize;\n}\n</style>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DetailsDialog.vue?vue&type=template&id=3eb9665d&scoped=true&\"\nimport script from \"./DetailsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailsDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailsDialog.vue?vue&type=style&index=0&id=3eb9665d&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3eb9665d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"c-chooser px-0\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":_vm.colSize,\"data-test\":\"select-target\"}},[_c('v-select',{attrs:{\"label\":\"Select Target\",\"hide-details\":\"\",\"dense\":\"\",\"items\":_vm.targetNames,\"item-text\":\"label\",\"item-value\":\"value\"},on:{\"change\":_vm.targetNameChanged},model:{value:(_vm.selectedTargetName),callback:function ($$v) {_vm.selectedTargetName=$$v},expression:\"selectedTargetName\"}})],1),_c('v-col',{attrs:{\"cols\":_vm.colSize,\"data-test\":\"select-packet\"}},[_c('v-select',{attrs:{\"label\":\"Select Packet\",\"hide-details\":\"\",\"dense\":\"\",\"disabled\":_vm.packetsDisabled,\"items\":_vm.packetNames,\"item-text\":\"label\",\"item-value\":\"value\"},on:{\"change\":_vm.packetNameChanged},model:{value:(_vm.selectedPacketName),callback:function ($$v) {_vm.selectedPacketName=$$v},expression:\"selectedPacketName\"}})],1),(_vm.chooseItem && !_vm.buttonDisabled)?_c('v-col',{attrs:{\"cols\":_vm.colSize,\"data-test\":\"select-item\"}},[_c('v-select',{attrs:{\"label\":\"Select Item\",\"hide-details\":\"\",\"dense\":\"\",\"disabled\":_vm.itemsDisabled,\"items\":_vm.itemNames,\"item-text\":\"label\",\"item-value\":\"value\"},on:{\"change\":function($event){return _vm.itemNameChanged($event)}},model:{value:(_vm.selectedItemName),callback:function ($$v) {_vm.selectedItemName=$$v},expression:\"selectedItemName\"}})],1):_vm._e(),(_vm.buttonText)?_c('v-col',{attrs:{\"cols\":_vm.colSize}},[_c('v-btn',{attrs:{\"disabled\":_vm.buttonDisabled,\"block\":\"\",\"color\":\"primary\",\"data-test\":\"select-send\"},on:{\"click\":_vm.buttonPressed}},[_vm._v(\" \"+_vm._s(_vm.actualButtonText)+\" \")])],1):_vm._e()],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":_vm.colSize}},[_vm._v(\"Description: \"+_vm._s(_vm.description))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-container class=\"c-chooser px-0\">\n <v-row>\n <v-col :cols=\"colSize\" data-test=\"select-target\">\n <v-select\n label=\"Select Target\"\n hide-details\n dense\n @change=\"targetNameChanged\"\n :items=\"targetNames\"\n item-text=\"label\"\n item-value=\"value\"\n v-model=\"selectedTargetName\"\n />\n </v-col>\n <v-col :cols=\"colSize\" data-test=\"select-packet\">\n <v-select\n label=\"Select Packet\"\n hide-details\n dense\n @change=\"packetNameChanged\"\n :disabled=\"packetsDisabled\"\n :items=\"packetNames\"\n item-text=\"label\"\n item-value=\"value\"\n v-model=\"selectedPacketName\"\n />\n </v-col>\n <v-col\n v-if=\"chooseItem && !buttonDisabled\"\n :cols=\"colSize\"\n data-test=\"select-item\"\n >\n <v-select\n label=\"Select Item\"\n hide-details\n dense\n @change=\"itemNameChanged($event)\"\n :disabled=\"itemsDisabled\"\n :items=\"itemNames\"\n item-text=\"label\"\n item-value=\"value\"\n v-model=\"selectedItemName\"\n />\n </v-col>\n <v-col v-if=\"buttonText\" :cols=\"colSize\">\n <v-btn\n :disabled=\"buttonDisabled\"\n block\n color=\"primary\"\n data-test=\"select-send\"\n @click=\"buttonPressed\"\n >\n {{ actualButtonText }}\n </v-btn>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col :cols=\"colSize\">Description: {{ description }}</v-col>\n </v-row>\n </v-container>\n</template>\n\n<script>\nimport { CosmosApi } from '../services/cosmos-api'\nexport default {\n props: {\n allowAll: {\n type: Boolean,\n default: false,\n },\n buttonText: {\n type: String,\n default: null,\n },\n chooseItem: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n initialTargetName: {\n type: String,\n default: '',\n },\n initialPacketName: {\n type: String,\n default: '',\n },\n initialItemName: {\n type: String,\n default: '',\n },\n mode: {\n type: String,\n default: 'tlm',\n // TODO: add validators throughout\n validator: (propValue) => {\n return ['cmd', 'tlm'].includes(propValue)\n },\n },\n reduced: {\n type: String,\n default: 'DECOM',\n validator: (propValue) => {\n return [\n 'REDUCED_DAY',\n 'REDUCED_HOUR',\n 'REDUCED_MINUTE',\n 'DECOM',\n ].includes(propValue)\n },\n },\n unknown: {\n type: Boolean,\n default: false,\n },\n vertical: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n targetNames: [],\n packetNames: [],\n itemNames: [],\n selectedTargetName: this.initialTargetName?.toUpperCase(),\n selectedPacketName: this.initialPacketName?.toUpperCase(),\n selectedItemName: this.initialItemName?.toUpperCase(),\n description: '',\n internalDisabled: false,\n packetsDisabled: false,\n itemsDisabled: false,\n api: null,\n ALL: {\n label: '[ ALL ]',\n value: 'ALL',\n description: 'ALL',\n }, // Constant to indicate all packets or items\n UNKNOWN: {\n label: '[ UNKNOWN ]',\n value: 'UNKNOWN',\n description: 'UNKNOWN',\n },\n }\n },\n created() {\n this.internalDisabled = true\n this.api = new CosmosApi()\n this.api.get_target_list().then((result) => {\n this.targetNames = result.map((target) => {\n return { label: target, value: target }\n })\n if (!this.selectedTargetName) {\n this.selectedTargetName = this.targetNames[0].value\n this.targetNameChanged(this.selectedTargetName)\n }\n this.updatePackets()\n if (this.unknown) {\n this.targetNames.push(this.UNKNOWN)\n }\n })\n },\n computed: {\n actualButtonText: function () {\n if (this.selectedPacketName === 'ALL') {\n return 'Add Target'\n }\n if (this.selectedItemName === 'ALL') {\n return 'Add Packet'\n }\n return this.buttonText\n },\n buttonDisabled: function () {\n return this.disabled || this.internalDisabled\n },\n targetChooserStyle: function () {\n if (this.chooseItem || this.buttonText) {\n return { width: '25%', float: 'left', 'margin-right': '5px' }\n } else {\n return { width: '49%', float: 'left' }\n }\n },\n packetChooserStyle: function () {\n if (this.chooseItem || this.buttonText) {\n return { width: '25%', float: 'left', 'margin-right': '5px' }\n } else {\n return { width: '50%', float: 'right' }\n }\n },\n colSize: function () {\n return this.vertical ? 12 : false\n },\n },\n watch: {\n mode: function (newVal, oldVal) {\n this.updatePackets()\n this.itemNames = []\n },\n reduced: function (newVal, oldVal) {\n this.updateItems()\n },\n },\n methods: {\n updatePackets: function () {\n if (this.selectedTargetName === 'UNKNOWN') {\n this.packetNames = [this.UNKNOWN]\n this.selectedPacketName = this.packetNames[0].value\n this.packetNameChanged(this.UNKNOWN.value)\n this.description = 'UNKNOWN'\n return\n }\n this.internalDisabled = true\n const cmd = this.mode === 'tlm' ? 'get_all_telemetry' : 'get_all_commands'\n this.api[cmd](this.selectedTargetName).then((packets) => {\n this.packetNames = packets.map((packet) => {\n return {\n label: packet.packet_name,\n value: packet.packet_name,\n description: packet.description,\n }\n })\n if (this.allowAll) {\n this.packetNames.unshift(this.ALL)\n }\n if (!this.selectedPacketName) {\n this.selectedPacketName = this.packetNames[0].value\n this.packetNameChanged(this.selectedPacketName)\n }\n const item = this.packetNames.find((packet) => {\n return packet.value === this.selectedPacketName\n })\n this.description = item.description\n if (this.chooseItem) {\n this.updateItems()\n }\n this.internalDisabled = false\n })\n },\n\n updateItems: function () {\n if (this.selectedPacketName === 'ALL') {\n return\n }\n this.internalDisabled = true\n const cmd = this.mode === 'tlm' ? 'get_telemetry' : 'get_command'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n this.itemNames = packet.items.map((item) => {\n if (this.reduced === 'DECOM') {\n return [{\n label: item.name,\n value: item.name,\n description: item.description,\n }]\n } else {\n return this.makeReducedItems(item)\n }\n }).reduce((result, item) => { return result.concat(item) }, [])\n if (this.allowAll) {\n this.itemNames.unshift(this.ALL)\n }\n if (!this.selectedItemName) {\n this.selectedItemName = this.itemNames[0].value\n }\n this.description = this.itemNames[0].description\n this.internalDisabled = false\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemName,\n reduced: this.reduced,\n })\n }\n )\n },\n\n makeReducedItems: function (item) {\n const reducedOptions = !item.array_size && !item.states\n if (\n reducedOptions && ['UINT', 'INT', 'FLOAT'].includes(item.data_type)\n ) {\n return ['MIN', 'MAX', 'AVG', 'STDDEV'].map((ext) => {\n return {\n label: `${item.name}_${ext}`,\n value: `${item.name}_${ext}`,\n description: `${ext} ${item.description}`,\n }\n })\n }\n return []\n },\n\n targetNameChanged: function (value) {\n this.selectedTargetName = value\n this.selectedPacketName = ''\n this.selectedItemName = ''\n this.updatePackets()\n },\n\n packetNameChanged: function (value) {\n if (value === 'ALL') {\n this.itemsDisabled = true\n this.internalDisabled = false\n } else {\n this.itemsDisabled = false\n const packet = this.packetNames.find((packet) => {\n return value === packet.value\n })\n this.selectedPacketName = packet.value\n this.description = packet.description\n }\n if (this.chooseItem) {\n this.selectedItemName = ''\n this.updateItems()\n } else {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n reduced: this.reduced,\n })\n }\n },\n\n itemNameChanged: function (value) {\n const item = this.itemNames.find((item) => {\n return value === item.value\n })\n this.selectedItemName = item.value\n this.description = item.description\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemName,\n reduced: this.reduced,\n })\n },\n\n buttonPressed: function () {\n if (this.selectedPacketName === 'ALL') {\n this.allTargetPacketItems()\n } else if (this.selectedItemName === 'ALL') {\n this.allPacketItems()\n } else if (this.chooseItem) {\n this.$emit('click', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemName,\n reduced: this.reduced,\n })\n } else {\n this.$emit('click', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n reduced: this.reduced,\n })\n }\n },\n\n allTargetPacketItems: function () {\n this.packetNames.forEach((packetName) => {\n if (packetName === this.ALL) return\n const cmd = this.mode === 'tlm' ? 'get_telemetry' : 'get_command'\n this.api[cmd](this.selectedTargetName, packetName.value).then(\n (packet) => {\n packet.items.forEach((item) => {\n this.$emit('click', {\n targetName: this.selectedTargetName,\n packetName: packetName.value,\n itemName: item['name'],\n reduced: this.reduced,\n })\n })\n }\n )\n })\n },\n\n allPacketItems: function () {\n this.itemNames.forEach((item) => {\n if (item === this.ALL) return\n this.$emit('click', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: item.value,\n reduced: this.reduced,\n })\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TargetPacketItemChooser.vue?vue&type=template&id=dc196880&\"\nimport script from \"./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"\nexport * from \"./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('mounting-portal',{attrs:{\"mount-to\":\"#cosmos-menu\",\"append\":\"\"}},[_c('div',{staticClass:\"v-toolbar__content\"},[_vm._l((_vm.menus),function(menu,i){return _c('v-menu',{key:i,attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"mx-1\",attrs:{\"outlined\":\"\",\"data-test\":_vm.formatDT((_vm.title + \" \" + (menu.label)))}},'v-btn',attrs,false),on),[_c('span',{domProps:{\"textContent\":_vm._s(menu.label)}}),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-menu-down \")])],1)]}}],null,true)},[_c('v-list',[_c('v-radio-group',{staticClass:\"ma-0 pa-0\",attrs:{\"value\":menu.radioGroup,\"hide-details\":\"\",\"dense\":\"\"}},[_vm._l((menu.items),function(option,j){return [(option.divider)?_c('v-divider',{key:j}):_c('v-list-item',{key:j,attrs:{\"disabled\":option.disabled,\"data-test\":_vm.formatDT((_vm.title + \" \" + (menu.label) + \" \" + (option.label)))},on:{\"click\":option.command}},[(option.radio)?_c('v-list-item-action',[_c('v-radio',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label}})],1):_vm._e(),(option.checkbox)?_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label},model:{value:(_vm.checked),callback:function ($$v) {_vm.checked=$$v},expression:\"checked\"}})],1):_vm._e(),(option.icon)?_c('v-list-item-icon',[_c('v-icon',{attrs:{\"disabled\":option.disabled},domProps:{\"textContent\":_vm._s(option.icon)}})],1):_vm._e(),(!option.radio && !option.checkbox)?_c('v-list-item-title',{style:('cursor: pointer;' + (option.disabled ? 'opacity: 0.2' : '')),domProps:{\"textContent\":_vm._s(option.label)}}):_vm._e()],1)]})],2)],1)],1)}),_c('v-spacer'),_c('v-toolbar-title',{domProps:{\"textContent\":_vm._s(_vm.title)}}),_c('v-spacer')],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <mounting-portal mount-to=\"#cosmos-menu\" append>\n <div class=\"v-toolbar__content\">\n <v-menu offset-y v-for=\"(menu, i) in menus\" :key=\"i\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n outlined\n v-bind=\"attrs\"\n v-on=\"on\"\n class=\"mx-1\"\n :data-test=\"formatDT(`${title} ${menu.label}`)\"\n >\n <span v-text=\"menu.label\" />\n <v-icon right> mdi-menu-down </v-icon>\n </v-btn>\n </template>\n <v-list>\n <!-- The radio-group is necessary in case the application wants radio buttons -->\n <v-radio-group\n :value=\"menu.radioGroup\"\n hide-details\n dense\n class=\"ma-0 pa-0\"\n >\n <template v-for=\"(option, j) in menu.items\">\n <v-divider v-if=\"option.divider\" :key=\"j\" />\n <v-list-item\n v-else\n @click=\"option.command\"\n :key=\"j\"\n :disabled=\"option.disabled\"\n :data-test=\"formatDT(`${title} ${menu.label} ${option.label}`)\"\n >\n <v-list-item-action\n v-if=\"option.radio\"\n >\n <v-radio\n color=\"secondary\"\n :label=\"option.label\"\n :value=\"option.label\"\n />\n </v-list-item-action>\n <v-list-item-action\n v-if=\"option.checkbox\"\n >\n <v-checkbox\n v-model=\"checked\"\n color=\"secondary\"\n :label=\"option.label\"\n :value=\"option.label\"\n />\n </v-list-item-action>\n <v-list-item-icon v-if=\"option.icon\">\n <v-icon v-text=\"option.icon\" :disabled=\"option.disabled\" />\n </v-list-item-icon>\n <v-list-item-title\n v-if=\"!option.radio && !option.checkbox\"\n :style=\"\n 'cursor: pointer;' + (option.disabled ? 'opacity: 0.2' : '')\n \"\n v-text=\"option.label\"\n />\n </v-list-item>\n </template>\n </v-radio-group>\n </v-list>\n </v-menu>\n <v-spacer />\n <v-toolbar-title v-text=\"title\" />\n <v-spacer />\n </div>\n </mounting-portal>\n</template>\n\n<script>\nexport default {\n props: {\n menus: {\n type: Array,\n default: function () {\n return []\n },\n },\n title: {\n type: String,\n default: '',\n },\n },\n methods: {\n // Convert the string to a standard data-test format\n formatDT: function(string) {\n return string.replaceAll(' ', '-').toLowerCase()\n },\n }\n}\n</script>\n\n<style scoped>\n.v-list >>> .v-label {\n margin-left: 5px;\n}\n.v-list-item__icon {\n /* For some reason the default margin-right is huge */\n margin-right: 15px !important;\n}\n.v-list-item__title {\n color: white;\n}\n</style>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TopBar.vue?vue&type=template&id=e3bb7458&scoped=true&\"\nimport script from \"./TopBar.vue?vue&type=script&lang=js&\"\nexport * from \"./TopBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TopBar.vue?vue&type=style&index=0&id=e3bb7458&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e3bb7458\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-overflow-btn[data-v-49aaed43]{margin-top:0}.container[data-v-49aaed43]{padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".label[data-v-3eb9665d]{font-weight:700;text-transform:capitalize}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-list[data-v-e3bb7458] .v-label{margin-left:5px}.v-list-item__icon[data-v-e3bb7458]{margin-right:15px!important}.v-list-item__title[data-v-e3bb7458]{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandParameterEditor.vue?vue&type=style&index=0&id=49aaed43&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7e475e85\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=style&index=0&id=3eb9665d&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7c1e213a\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=style&index=0&id=e3bb7458&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"a2f2c426\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["components","DetailsDialog","TargetPacketItemChooser","CommandParameterEditor","TopBar","data","title","search","headers","text","value","targetName","commandName","ignoreRangeChecks","statesInHex","showIgnoredParams","cmdRaw","ignoredParams","rows","interfaces","selectedInterface","rawCmdFile","status","history","displaySendHazardous","displayErrorDialog","displaySendRaw","sendDisabled","api","viewDetails","contextMenuShown","parameterName","reservedItemNames","x","y","contextMenuOptions","action","menus","label","items","checkbox","command","created","Api","this","commandChanged","$route","params","target","toUpperCase","packetName","packet","methods","getBackgroundColor","$vuetify","theme","parsedTheme","tertiary","darken2","historyEnter","event","preventDefault","substr","firstQuote","lastQuote","sendCmd","showContextMenu","e","row","item","parameter_name","clientX","clientY","$nextTick","isFloat","str","test","isInt","isArray","removeQuotes","length","firstChar","lastChar","slice","convertToValue","param","val_and_states","val","quotes_removed","upcaseStr","Infinity","hexStr","jstr","json_class","raw","i","nibble","push","parseInt","convertToString","return_value","Object","prototype","toString","call","arrayLength","updateCmdParams","$router","replace","name","catch","get_target","then","states","selected_state","selected_state_label","manual_value","description","units","type","statusChange","createParamList","paramList","buildCmd","get_cmd_hazardous","hazardous","cmd","obs","sendHazardousCmd","cmd_raw_no_checks","cmd_raw_no_hazardous_check","cmd_no_checks","cmd_no_hazardous_check","cancelHazardousCmd","processCmdResponse","cmd_sent","response","msg","keys","key","includes","parts","num","context","displayError","error","message","showDialog","setupRawCmd","get_interface_names","selectRawCmdFile","files","onLoad","bufView","send_raw","sendRawCmd","self","reader","onload","onerror","readAsArrayBuffer","cancelRawCmd","request","method","url","noAuth","noScope","CosmosAuth","updateToken","defaultMinValidity","login","localStorage","cosmosToken","scope","axios","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","get","path","put","post","delete","vueInstance","Vue","axiosInstance","baseURL","location","origin","timeout","interceptors","use","href","body","exception","class","$notify","serious","CosmosApi","kwparams","id","jsonrpc","keyword_params","Authorization","result","err","Error","NaN","Number","isNaN","POSITIVE_INFINITY","NEGATIVE_INFINITY","exec","interface_name","router_name","log_writer_name","limits_set","target_name","packet_name","value_type","len","converted","decode_cosmos_type","item_name","command_name","param_list","hasOwnProperty","encode_cosmos_type","undefined","_cmd","tool","ignored","array","render","_vm","_h","$createElement","_c","_self","attrs","on","handleChange","staticClass","staticStyle","handleStateChange","model","callback","$$v","$set","expression","stateValue","staticRenderFns","prop","props","Boolean","default","initialValue","computed","calcStates","$emit","index","component","$event","_v","scopedSlots","_u","fn","ref","_e","_s","indexOf","_k","keyCode","_l","stopPropagation","apply","arguments","domProps","show","itemName","details","rawValue","convertedValue","formattedValue","unitsValue","bit_offset","bit_size","array_size","data_type","minimum","maximum","format_string","read_conversion","write_conversion","id_value","units_full","endianness","state","limit","formatLimit","validator","String","updater","set","beforeDestroy","clearInterval","watch","newValue","requestDetails","setInterval","get_tlm_values","get_item","get_parameter","green_low","colSize","targetNames","targetNameChanged","selectedTargetName","packetsDisabled","packetNames","packetNameChanged","selectedPacketName","chooseItem","buttonDisabled","itemsDisabled","itemNames","itemNameChanged","selectedItemName","buttonPressed","actualButtonText","allowAll","buttonText","disabled","initialTargetName","initialPacketName","initialItemName","mode","propValue","reduced","unknown","vertical","internalDisabled","ALL","UNKNOWN","get_target_list","targetChooserStyle","width","float","packetChooserStyle","updatePackets","updateItems","reduce","makeReducedItems","reducedOptions","map","allTargetPacketItems","allPacketItems","forEach","menu","_g","_b","formatDT","radioGroup","option","j","checked","icon","radio","style","Array","string","replaceAll","toLowerCase","___CSS_LOADER_EXPORT___","module","content","__esModule","locals","exports","add"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"js/93.js","mappings":"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","sources":["webpack://@cosmosc2/tool-cmdsender/src/tools/CommandSender/CommandSender.vue","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/services/api.js","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/services/axios.js","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/services/cosmos-api.js","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?c553","webpack://@cosmosc2/tool-cmdsender/src/tools/CommandSender/CommandParameterEditor.vue","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?5284","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandSender.vue?fb31","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandSender.vue?e307","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandSender.vue","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/DetailsDialog.vue?88c8","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/DetailsDialog.vue","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/DetailsDialog.vue?7eb0","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/DetailsDialog.vue?fdbd","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TargetPacketItemChooser.vue?1730","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TargetPacketItemChooser.vue","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TargetPacketItemChooser.vue?44cd","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TargetPacketItemChooser.vue?b395","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TopBar.vue?228d","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TopBar.vue","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TopBar.vue?adab","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TopBar.vue?dfc0","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?8f71","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/DetailsDialog.vue?82b3","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TopBar.vue?b2db","webpack://@cosmosc2/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?1299","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/DetailsDialog.vue?dfc1","webpack://@cosmosc2/tool-cmdsender/../cosmosc2-tool-common/src/components/TopBar.vue?5429"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <top-bar :menus=\"menus\" :title=\"title\" />\n\n <target-packet-item-chooser\n :initial-target-name=\"this.$route.params.target\"\n :initial-packet-name=\"this.$route.params.packet\"\n @on-set=\"commandChanged($event)\"\n @click=\"buildCmd($event)\"\n :disabled=\"sendDisabled\"\n button-text=\"Send\"\n mode=\"cmd\"\n />\n\n <v-card v-if=\"rows.length != 0\">\n <v-card-title>\n Parameters\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n append-icon=\"mdi-magnify\"\n label=\"Search\"\n single-line\n hide-details\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"rows\"\n :search=\"search\"\n calculate-widths\n disable-pagination\n hide-default-footer\n multi-sort\n dense\n @contextmenu:row=\"showContextMenu\"\n >\n <template v-slot:item.val_and_states=\"{ item }\">\n <command-parameter-editor\n v-model=\"item.val_and_states\"\n :states-in-hex=\"statesInHex\"\n />\n </template>\n </v-data-table>\n </v-card>\n <div class=\"ma-3\">Status: {{ status }}</div>\n <div class=\"mt-3\">\n Command History: (Pressing Enter on the line re-executes the command)\n </div>\n <v-textarea\n ref=\"history\"\n :value=\"history\"\n solo\n dense\n hide-details\n data-test=\"sender-history\"\n @keydown.enter=\"historyEnter($event)\"\n :background-color=\"getBackgroundColor()\"\n />\n\n <v-menu\n v-model=\"contextMenuShown\"\n :position-x=\"x\"\n :position-y=\"y\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n <details-dialog\n :target-name=\"targetName\"\n :packet-name=\"commandName\"\n :item-name=\"parameterName\"\n :type=\"'cmd'\"\n v-model=\"viewDetails\"\n />\n\n <v-dialog v-model=\"displayErrorDialog\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Error </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"mx-1\">\n <v-row class=\"my-2\">\n <v-card-text>\n <span v-text=\"status\" />\n </v-card-text>\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click=\"displayErrorDialog = false\"\n color=\"primary\"\n data-test=\"error-dialog-ok\"\n >\n Ok\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n\n <v-dialog v-model=\"displaySendHazardous\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Hazardous Warning </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"mx-1\">\n <v-row class=\"my-2\">\n <span>\n Warning: Command {{ targetName }} {{ commandName }} is\n Hazardous. Send?\n </span>\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click=\"cancelHazardousCmd\"\n outlined\n data-test=\"send-hazardous-no\"\n >\n No\n </v-btn>\n <v-btn\n @click=\"sendHazardousCmd\"\n class=\"primary mx-1\"\n data-test=\"send-hazardous-yes\"\n >\n Yes\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n\n <v-dialog v-model=\"displaySendRaw\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Send Raw </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"mx-1\">\n <v-row class=\"my-2\">\n <v-col>Interface:</v-col>\n <v-col>\n <v-select\n solo\n hide-details\n dense\n :items=\"interfaces\"\n item-text=\"label\"\n item-value=\"value\"\n v-model=\"selectedInterface\"\n />\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col>Filename:</v-col>\n <v-col>\n <input type=\"file\" @change=\"selectRawCmdFile($event)\" />\n </v-col>\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn @click=\"cancelRawCmd\" outlined data-test=\"raw-cancel\">\n Cancel\n </v-btn>\n <v-btn @click=\"sendRawCmd\" class=\"primary\" data-test=\"raw-ok\">\n Ok\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport Api from '@cosmosc2/tool-common/src/services/api'\nimport TargetPacketItemChooser from '@cosmosc2/tool-common/src/components/TargetPacketItemChooser'\nimport CommandParameterEditor from '@/tools/CommandSender/CommandParameterEditor'\nimport { CosmosApi } from '@cosmosc2/tool-common/src/services/cosmos-api'\nimport DetailsDialog from '@cosmosc2/tool-common/src/components/DetailsDialog'\nimport TopBar from '@cosmosc2/tool-common/src/components/TopBar'\nimport 'sprintf-js'\n\nexport default {\n components: {\n DetailsDialog,\n TargetPacketItemChooser,\n CommandParameterEditor,\n TopBar,\n },\n data() {\n return {\n title: 'Command Sender',\n search: '',\n headers: [\n { text: 'Name', value: 'parameter_name' },\n { text: 'Value or State', value: 'val_and_states' },\n { text: 'Units', value: 'units' },\n { text: 'Description', value: 'description' },\n ],\n targetName: '',\n commandName: '',\n ignoreRangeChecks: false,\n statesInHex: false,\n showIgnoredParams: false,\n cmdRaw: false,\n ignoredParams: [],\n rows: [],\n interfaces: [],\n selectedInterface: '',\n rawCmdFile: null,\n status: '',\n history: '',\n displaySendHazardous: false,\n displayErrorDialog: false,\n displaySendRaw: false,\n sendDisabled: false,\n api: null,\n viewDetails: false,\n contextMenuShown: false,\n parameterName: '',\n reservedItemNames: [],\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n ],\n menus: [\n // TODO: Implement send raw\n // {\n // label: 'File',\n // items: [\n // {\n // label: 'Send Raw',\n // command: () => {\n // this.setupRawCmd()\n // }\n // }\n // ]\n // },\n {\n label: 'Mode',\n items: [\n {\n label: 'Ignore Range Checks',\n checkbox: true,\n command: () => {\n this.ignoreRangeChecks = !this.ignoreRangeChecks\n },\n },\n {\n label: 'Display State Values in Hex',\n checkbox: true,\n command: () => {\n this.statesInHex = !this.statesInHex\n },\n },\n {\n label: 'Show Ignored Parameters',\n checkbox: true,\n command: () => {\n this.showIgnoredParams = !this.showIgnoredParams\n // TODO: Maybe we don't need to do this if the data-table\n // can render the whole thing and we just display with v-if\n this.updateCmdParams()\n },\n },\n {\n label: 'Disable Parameter Conversions',\n checkbox: true,\n command: () => {\n this.cmdRaw = !this.cmdRaw\n },\n },\n ],\n },\n ],\n }\n },\n created() {\n Api.get(`/cosmos-api/autocomplete/reserved-item-names`).then((response) => {\n this.reservedItemNames = response.data\n })\n this.api = new CosmosApi()\n // If we're passed in the route then manually call commandChanged to update\n if (this.$route.params.target && this.$route.params.packet) {\n this.commandChanged({\n targetName: this.$route.params.target.toUpperCase(),\n packetName: this.$route.params.packet.toUpperCase(),\n })\n }\n },\n methods: {\n getBackgroundColor() {\n return this.$vuetify.theme.parsedTheme.tertiary.darken2\n },\n historyEnter(event) {\n // Prevent the enter key from actually causing a newline\n event.preventDefault()\n const textarea = this.$refs.history.$refs.input\n let pos = textarea.selectionStart\n // Find the newline after the cursor position\n let nextNewline = textarea.value.indexOf('\\n', pos)\n // Get everything up to the next newline and split on newlines\n const lines = textarea.value.substr(0, nextNewline).split('\\n')\n let command = lines[lines.length - 1]\n // Blank commands can happen if typing return on a blank line\n if (command === '') {\n return\n }\n\n // Remove the cmd(\"\") wrapper\n let firstQuote = command.indexOf('\"')\n let lastQuote = command.lastIndexOf('\"')\n command = command.substr(firstQuote + 1, lastQuote - firstQuote - 1)\n this.sendCmd(command)\n },\n\n showContextMenu(e, row) {\n e.preventDefault()\n this.parameterName = row.item.parameter_name\n this.contextMenuShown = false\n this.x = e.clientX\n this.y = e.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n\n isFloat(str) {\n // Regex to identify a string as a floating point number\n if (/^\\s*[-+]?\\d*\\.\\d+\\s*$/.test(str)) {\n return true\n }\n // Regex to identify a string as a floating point number in scientific notation.\n if (/^\\s*[-+]?(\\d+((\\.\\d+)?)|(\\.\\d+))[eE][-+]?\\d+\\s*$/.test(str)) {\n return true\n }\n return false\n },\n\n isInt(str) {\n // Regular expression to identify a String as an integer\n if (/^\\s*[-+]?\\d+\\s*$/.test(str)) {\n return true\n }\n\n // # Regular expression to identify a String as an integer in hexadecimal format\n if (/^\\s*0[xX][\\dabcdefABCDEF]+\\s*$/.test(str)) {\n return true\n }\n return false\n },\n\n isArray(str) {\n // Regular expression to identify a String as an Array\n if (/^\\s*\\[.*\\]\\s*$/.test(str)) {\n return true\n }\n return false\n },\n\n removeQuotes(str) {\n // Return the string with leading and trailing quotes removed\n if (str.length < 2) {\n return str\n }\n var firstChar = str.charAt(0)\n if (firstChar != '\"' && firstChar != \"'\") {\n return str\n }\n var lastChar = str.charAt(str.length - 1)\n if (firstChar != lastChar) {\n return str\n }\n return str.slice(1, -1)\n },\n\n convertToValue(param) {\n if (typeof param.val_and_states.val != 'string') {\n return param.val_and_states.val\n }\n\n var str = param.val_and_states.val\n var quotes_removed = this.removeQuotes(str)\n if (str == quotes_removed) {\n var upcaseStr = str.toUpperCase()\n\n if (\n (param.type == 'STRING' || param.type == 'BLOCK') &&\n upcaseStr.startsWith('0X')\n ) {\n var hexStr = upcaseStr.slice(2)\n if (hexStr.length % 2 != 0) {\n hexStr = '0' + hexStr\n }\n var jstr = { json_class: 'String', raw: [] }\n for (var i = 0; i < hexStr.length; i += 2) {\n var nibble = hexStr.charAt(i) + hexStr.charAt(i + 1)\n jstr.raw.push(parseInt(nibble, 16))\n }\n return jstr\n } else {\n if (upcaseStr == 'INFINITY') {\n return Infinity\n } else if (upcaseStr == '-INFINITY') {\n return -Infinity\n } else if (upcaseStr == 'NAN') {\n return NaN\n } else if (this.isFloat(str)) {\n return parseFloat(str)\n } else if (this.isInt(str)) {\n return parseInt(str)\n } else if (this.isArray(str)) {\n return eval(str)\n } else {\n return str\n }\n }\n } else {\n return quotes_removed\n }\n },\n\n convertToString(value) {\n var i = 0\n var return_value = ''\n if (Object.prototype.toString.call(value).slice(8, -1) === 'Array') {\n var arrayLength = value.length\n return_value = '[ '\n for (i = 0; i < arrayLength; i++) {\n if (\n Object.prototype.toString.call(value[i]).slice(8, -1) === 'String'\n ) {\n return_value += '\"' + value[i] + '\"'\n } else {\n return_value += value[i]\n }\n if (i != arrayLength - 1) {\n return_value += ', '\n }\n }\n return_value += ' ]'\n } else if (\n Object.prototype.toString.call(value).slice(8, -1) === 'Object'\n ) {\n if (value.json_class == 'String' && value.raw) {\n // This is binary data, display in hex.\n return_value = '0x'\n for (i = 0; i < value.raw.length; i++) {\n var nibble = value.raw[i].toString(16).toUpperCase()\n if (nibble.length < 2) {\n nibble = '0' + nibble\n }\n return_value += nibble\n }\n } else if (value.json_class == 'Float' && value.raw) {\n return_value = value.raw\n } else {\n // TBD - are there other objects that we need to handle?\n return_value = String(value)\n }\n } else {\n return_value = String(value)\n }\n return return_value\n },\n\n commandChanged(event) {\n if (\n this.targetName !== event.targetName ||\n this.commandName !== event.packetName\n ) {\n this.targetName = event.targetName\n this.commandName = event.packetName\n // Only updateCmdParams if we're not already in the middle of an update\n if (this.sendDisabled === false) {\n this.updateCmdParams()\n }\n this.$router\n .replace({\n name: 'CommandSender',\n params: {\n target: this.targetName,\n packet: this.commandName,\n },\n })\n // catch the error in case we route to where we already are\n .catch((err) => {})\n }\n },\n\n updateCmdParams() {\n this.sendDisabled = true\n this.ignoredParams = []\n this.rows = []\n this.api\n .get_target(this.targetName)\n .then(\n (target) => {\n this.ignoredParams = target.ignored_parameters\n return this.api.get_command(this.targetName, this.commandName)\n },\n (error) => {\n this.displayError('getting ignored parameters', error)\n }\n )\n .then(\n (command) => {\n command.items.forEach((parameter) => {\n if (this.reservedItemNames.includes(parameter.name)) return\n if (\n !this.ignoredParams.includes(parameter.name) ||\n this.showIgnoredParams\n ) {\n let val = parameter.default\n if (parameter.required) {\n val = ''\n }\n if (parameter.format_string) {\n val = sprintf(parameter.format_string, parameter.default)\n }\n this.rows.push({\n parameter_name: parameter.name,\n val_and_states: {\n val: val,\n states: parameter.states,\n selected_state: null,\n selected_state_label: '',\n manual_value: null,\n },\n description: parameter.description,\n units: parameter.units,\n type: parameter.data_type,\n })\n }\n })\n this.sendDisabled = false\n this.status = ''\n },\n (error) => {\n this.displayError('getting command parameters', error)\n }\n )\n },\n\n statusChange(event) {\n this.status = event.status\n },\n\n createParamList() {\n let paramList = {}\n for (var i = 0; i < this.rows.length; i++) {\n paramList[this.rows[i].parameter_name] = this.convertToValue(\n this.rows[i]\n )\n }\n return paramList\n },\n\n buildCmd() {\n this.sendCmd(this.targetName, this.commandName, this.createParamList())\n },\n\n // Note targetName can also be the entire command to send, e.g. \"INST ABORT\" or\n // \"INST COLLECT with TYPE 0, DURATION 1, OPCODE 171, TEMP 10\" when being\n // sent from the history. In that case commandName and paramList are undefined\n // and the api calls handle that.\n sendCmd(targetName, commandName, paramList) {\n this.sendDisabled = true\n let hazardous = false\n let cmd = ''\n this.api.get_cmd_hazardous(targetName, commandName, paramList).then(\n (response) => {\n hazardous = response\n\n if (hazardous) {\n this.displaySendHazardous = true\n } else {\n let obs\n if (this.cmdRaw) {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_raw_no_range_check'\n obs = this.api.cmd_raw_no_range_check(\n targetName,\n commandName,\n paramList\n )\n } else {\n cmd = 'cmd_raw'\n obs = this.api.cmd_raw(targetName, commandName, paramList)\n }\n } else {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_no_range_check'\n obs = this.api.cmd_no_range_check(\n targetName,\n commandName,\n paramList\n )\n } else {\n cmd = 'cmd'\n obs = this.api.cmd(targetName, commandName, paramList)\n }\n }\n\n obs.then(\n (response) => {\n this.processCmdResponse(true, response)\n },\n (error) => {\n this.processCmdResponse(false, error)\n }\n )\n }\n },\n (error) => {\n this.processCmdResponse(false, error)\n }\n )\n },\n\n sendHazardousCmd() {\n this.displaySendHazardous = false\n var paramList = this.createParamList()\n\n let obs = ''\n let cmd = ''\n if (this.cmdRaw) {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_no_checks'\n obs = this.api.cmd_raw_no_checks(\n this.targetName,\n this.commandName,\n paramList\n )\n } else {\n cmd = 'cmd_no_hazardous_check'\n obs = this.api.cmd_raw_no_hazardous_check(\n this.targetName,\n this.commandName,\n paramList\n )\n }\n } else {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_no_checks'\n obs = this.api.cmd_no_checks(\n this.targetName,\n this.commandName,\n paramList\n )\n } else {\n cmd = 'cmd_no_hazardous_check'\n obs = this.api.cmd_no_hazardous_check(\n this.targetName,\n this.commandName,\n paramList\n )\n }\n }\n\n obs.then(\n (response) => {\n this.processCmdResponse(true, response)\n },\n (error) => {\n this.processCmdResponse(false, error)\n }\n )\n },\n\n cancelHazardousCmd() {\n this.displaySendHazardous = false\n this.status = 'Hazardous command not sent'\n this.sendDisabled = false\n },\n\n processCmdResponse(cmd_sent, response) {\n var msg = ''\n if (cmd_sent) {\n msg = 'cmd(\"' + response[0] + ' ' + response[1]\n var keys = Object.keys(response[2])\n if (keys.length > 0) {\n msg += ' with '\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n msg += key + ' ' + this.convertToString(response[2][key])\n if (i < keys.length - 1) {\n msg += ', '\n }\n }\n }\n msg += '\")'\n if (!this.history.includes(msg)) {\n this.history += msg + '\\n'\n }\n msg += ' sent.'\n // Add the number of commands sent to the status message\n if (this.status.includes(msg)) {\n let parts = this.status.split('sent.')\n if (parts[1].includes('(')) {\n let num = parseInt(parts[1].substr(2, parts[1].indexOf(')') - 2))\n msg = parts[0] + 'sent. (' + (num + 1) + ')'\n } else {\n msg += ' (2)'\n }\n }\n this.status = msg\n } else {\n var context = 'sending ' + this.targetName + ' ' + this.commandName\n this.displayError(context, response, true)\n }\n this.sendDisabled = false\n },\n\n displayError(context, error, showDialog = false) {\n this.status = `Error ${context} due to ${error.name}`\n if (error.message && error.message != '') {\n this.status += ': '\n this.status += error.message\n }\n if (showDialog) {\n this.displayErrorDialog = true\n }\n },\n\n setupRawCmd() {\n this.api.get_interface_names().then(\n (response) => {\n var interfaces = []\n for (var i = 0; i < response.length; i++) {\n interfaces.push({ label: response[i], value: response[i] })\n }\n this.interfaces = interfaces\n this.selectedInterface = interfaces[0].value\n this.displaySendRaw = true\n },\n (error) => {\n this.displaySendRaw = false\n this.displayError('getting interface names', error, true)\n }\n )\n },\n\n selectRawCmdFile(event) {\n this.rawCmdFile = event.target.files[0]\n },\n\n onLoad(event) {\n var bufView = new Uint8Array(event.target.result)\n var jstr = { json_class: 'String', raw: [] }\n for (var i = 0; i < bufView.length; i++) {\n jstr.raw.push(bufView[i])\n }\n\n this.api.send_raw(this.selectedInterface, jstr).then(\n () => {\n this.displaySendRaw = false\n this.status =\n 'Sent ' +\n bufView.length +\n ' bytes to interface ' +\n this.selectedInterface\n },\n (error) => {\n this.displaySendRaw = false\n this.displayError('sending raw data', error, true)\n }\n )\n },\n\n sendRawCmd() {\n var self = this\n var reader = new FileReader()\n reader.onload = function (e) {\n self.onLoad(e)\n }\n reader.onerror = function (e) {\n self.displaySendRaw = false\n var target = e.target\n self.displayError('sending raw data', target.error, true)\n }\n // TBD - use the other event handlers to implement a progress bar for the\n // file upload. Handle abort as well?\n //reader.onloadstart = function(e) {}\n //reader.onprogress = function(e) {}\n //reader.onloadend = function(e) {}\n //reader.onabort = function(e) {}\n\n reader.readAsArrayBuffer(this.rawCmdFile)\n },\n\n cancelRawCmd() {\n this.displaySendRaw = false\n this.status = 'Raw command not sent'\n },\n },\n}\n</script>\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport axios from './axios.js'\n\nconst request = async function (\n method,\n url,\n { data, params = {}, headers, noAuth = false, noScope = false } = {}\n) {\n if (!noAuth) {\n try {\n await CosmosAuth.updateToken(CosmosAuth.defaultMinValidity)\n } catch (error) {\n CosmosAuth.login()\n }\n headers['Authorization'] = localStorage.cosmosToken\n }\n if (!noScope && !params['scope']) {\n params['scope'] = localStorage.scope\n }\n return axios({\n method,\n url,\n data,\n params,\n headers,\n })\n}\n\nconst acceptOnlyDefaultHeaders = {\n Accept: 'application/json',\n}\n\nconst fullDefaultHeaders = {\n ...acceptOnlyDefaultHeaders,\n 'Content-Type': 'application/json',\n}\n\nexport default {\n get: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('get', path, { params, headers, noScope, noAuth })\n },\n\n put: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('put', path, { data, params, headers, noScope, noAuth })\n },\n\n post: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('post', path, { data, params, headers, noScope, noAuth })\n },\n\n delete: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('delete', path, { params, headers, noScope, noAuth })\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport axios from 'axios'\nimport Vue from 'vue'\n\nconst vueInstance = new Vue()\n\nconst axiosInstance = axios.create({\n baseURL: location.origin,\n timeout: 10000,\n params: {},\n})\n\naxiosInstance.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error.response.status === 401) {\n delete localStorage.cosmosToken\n CosmosAuth.login(location.href)\n } else {\n let body = `HTTP ${error.response.status} - `\n if (error.response?.statusText) {\n body += `${error.response.statusText} `\n }\n if (error.response?.config?.data) {\n body += `${error.response.config.data} `\n }\n if (error.response?.data?.message) {\n body += `${error.response.data.message}`\n } else if (error.response?.data?.exception) {\n body += `${error.response.data.exception}`\n } else if (error.response?.data?.error?.message) {\n if (error.response.data.error.class) {\n body += `${error.response.data.error.class} `\n }\n body += `${error.response.data.error.message}`\n } else {\n body += `${error.response?.data}`\n }\n vueInstance.$notify.serious({\n title: 'Network error',\n body,\n })\n }\n throw error\n }\n)\n\nexport default axiosInstance\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n*/\n\nimport axios from './axios.js'\n\nexport class CosmosApi {\n id = 1\n\n constructor() {}\n\n // This is hacky Json-rpc for now. Should probably use a jsonrpc library.\n async exec(method, params, kwparams = {}) {\n try {\n await CosmosAuth.updateToken(CosmosAuth.defaultMinValidity)\n } catch (error) {\n CosmosAuth.login()\n }\n this.id = this.id + 1\n try {\n kwparams['scope'] = localStorage.scope\n const response = await axios.post(\n '/cosmos-api/api',\n {\n jsonrpc: '2.0',\n method: method,\n params: params,\n id: this.id,\n keyword_params: kwparams,\n },\n {\n headers: {\n Authorization: localStorage.cosmosToken,\n 'Content-Type': 'application/json-rpc',\n },\n }\n )\n // var data = response.data\n // if (data.error) {\n // var err = new Error()\n // err.name = data.error.data.class\n // err.message = data.error.data.message\n // console.log(data.error.data.backtrace.join('\\n'))\n // throw err\n // }\n return response.data.result\n } catch (error) {\n var err = new Error()\n if (error.response) {\n // The request was made and the server responded with a\n // status code that falls out of the range of 2xx\n err.name = error.response.data.error.data.class\n err.message = error.response.data.error.data.message\n } else if (error.request) {\n // The request was made but no response was received, `error.request`\n // is an instance of XMLHttpRequest in the browser and an instance\n // of http.ClientRequest in Node.js\n err.name = 'Request error'\n err.message = 'Request error, no response received'\n } else {\n // Something happened in setting up the request and triggered an Error\n err.name = 'Unknown error'\n }\n //console.log(error)\n throw err\n }\n }\n\n decode_cosmos_type(val) {\n if (val !== null && typeof val === 'object') {\n if (val.json_class == 'Float' && val.raw) {\n if (val.raw == 'NaN') {\n return NaN\n } else if (val.raw == 'Infinity') {\n return Infinity\n } else if (val.raw == '-Infinity') {\n return -Infinity\n }\n }\n }\n return null\n }\n\n encode_cosmos_type(val) {\n if (Number.isNaN(val)) {\n return { json_class: 'Float', raw: 'NaN' }\n } else if (val == Number.POSITIVE_INFINITY) {\n return { json_class: 'Float', raw: 'Infinity' }\n } else if (val == Number.NEGATIVE_INFINITY) {\n return { json_class: 'Float', raw: '-Infinity' }\n }\n return null\n }\n\n // ***********************************************\n // The following APIs are used by the CmdTlmServer\n // ***********************************************\n get_all_interface_info() {\n return this.exec('get_all_interface_info', [])\n }\n\n connect_interface(interface_name) {\n return this.exec('connect_interface', [interface_name])\n }\n\n disconnect_interface(interface_name) {\n return this.exec('disconnect_interface', [interface_name])\n }\n\n get_all_router_info() {\n return this.exec('get_all_router_info', [])\n }\n\n connect_router(router_name) {\n return this.exec('connect_router', [router_name])\n }\n\n disconnect_router(router_name) {\n return this.exec('disconnect_router', [router_name])\n }\n\n get_all_target_info() {\n return this.exec('get_all_target_info', [])\n }\n\n get_all_cmd_info() {\n return this.exec('get_all_cmd_info', [])\n }\n\n get_all_tlm_info() {\n return this.exec('get_all_tlm_info', [])\n }\n\n get_item(target, packet, item) {\n return this.exec('get_item', [target, packet, item])\n }\n\n get_parameter(target, packet, item) {\n return this.exec('get_parameter', [target, packet, item])\n }\n\n get_all_packet_logger_info() {\n return this.exec('get_all_packet_logger_info', [])\n }\n\n start_logging() {\n return this.exec('start_logging', [])\n }\n\n stop_logging() {\n return this.exec('stop_logging', [])\n }\n\n start_cmd_log(log_writer_name) {\n return this.exec('start_cmd_log', [log_writer_name])\n }\n\n start_tlm_log(log_writer_name) {\n return this.exec('start_tlm_log', [log_writer_name])\n }\n\n stop_cmd_log(log_writer_name) {\n return this.exec('stop_cmd_log', [log_writer_name])\n }\n\n stop_tlm_log(log_writer_name) {\n return this.exec('stop_tlm_log', [log_writer_name])\n }\n\n get_server_status() {\n return this.exec('get_server_status', [])\n }\n\n get_limits_sets() {\n return this.exec('get_limits_sets', [])\n }\n\n get_limits_set() {\n return this.exec('get_limits_set', [])\n }\n\n set_limits_set(limits_set) {\n return this.exec('set_limits_set', [limits_set])\n }\n\n get_background_tasks() {\n return this.exec('get_background_tasks', [])\n }\n\n start_background_task(name) {\n return this.exec('start_background_task', [name])\n }\n\n stop_background_task(name) {\n return this.exec('stop_background_task', [name])\n }\n\n // ***********************************************\n // End CmdTlmServer APIs\n // ***********************************************\n\n get_oldest_logfile() {\n return this.exec('get_oldest_logfile', [])\n }\n\n get_target(target_name) {\n return this.exec('get_target', [target_name])\n }\n\n get_target_list() {\n return this.exec('get_target_list', [])\n }\n\n get_telemetry(target_name, packet_name) {\n return this.exec('get_telemetry', [target_name, packet_name])\n }\n\n get_all_telemetry(target_name) {\n return this.exec('get_all_telemetry', [target_name])\n }\n\n get_all_telemetry_list(target_name) {\n return this.exec('get_all_telemetry_list', [target_name])\n }\n\n // Called by PacketViewerComponent\n async get_tlm_packet(target_name, packet_name, value_type) {\n const data = await this.exec('get_tlm_packet', [target_name, packet_name], {\n type: value_type,\n })\n // Make sure data isn't null or undefined. Note this is the only valid use of == or !=\n if (data != null) {\n var len = data.length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_cosmos_type(data[i][1])\n if (converted !== null) {\n data[i][1] = converted\n }\n }\n }\n return data\n }\n\n // Called by PacketViewerComponent\n get_packet_derived_items(target_name, packet_name) {\n return this.exec('get_packet_derived_items', [target_name, packet_name])\n }\n\n // Called by CmdTlmServer Tlm Packets tab\n get_tlm_buffer(target_name, packet_name) {\n return this.exec('get_tlm_buffer', [target_name, packet_name])\n }\n\n // Called by CosmosScreenComponent\n async get_tlm_values(items) {\n const data = await this.exec('get_tlm_values', [items])\n var len = data[0].length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_cosmos_type(data[0][i])\n if (converted !== null) {\n data[0][i] = converted\n }\n }\n return data\n }\n\n // Called by LimitsbarWidget\n get_limits(target_name, packet_name, item_name) {\n return this.exec('get_limits', [target_name, packet_name, item_name])\n }\n\n // Called by LimitsMonitorComponent\n async tlm(target_name, packet_name, item_name) {\n const data = await this.exec('tlm', [target_name, packet_name, item_name])\n var converted = this.decode_cosmos_type(data)\n if (converted !== null) {\n data = converted\n }\n return data\n }\n\n get_all_commands(target_name) {\n return this.exec('get_all_commands', [target_name])\n }\n\n get_all_commands_list(target_name) {\n return this.exec('get_all_commands_list', [target_name])\n }\n\n get_command(target_name, command_name) {\n return this.exec('get_command', [target_name, command_name])\n }\n\n get_cmd_value(\n target_name,\n packet_name,\n parameter_name,\n value_type = 'CONVERTED'\n ) {\n return this.exec('get_cmd_value', [\n target_name,\n packet_name,\n parameter_name,\n value_type,\n ])\n }\n\n // Called by CmdTlmServer Cmd Packets tab\n get_cmd_buffer(target_name, packet_name) {\n return this.exec('get_cmd_buffer', [target_name, packet_name])\n }\n\n // Implementation of functionality shared by cmd methods with param_lists.\n _cmd(method, target_name, command_name, param_list) {\n var converted = null\n for (var key in param_list) {\n if (Object.prototype.hasOwnProperty.call(param_list, key)) {\n converted = this.encode_cosmos_type(param_list[key])\n if (converted !== null) {\n param_list[key] = converted\n }\n }\n }\n return this.exec(method, [target_name, command_name, param_list])\n }\n\n // Called by CmdSenderComponent\n get_cmd_hazardous(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('get_cmd_hazardous', target_name)\n } else {\n return this._cmd(\n 'get_cmd_hazardous',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd', target_name)\n } else {\n return this._cmd('cmd', target_name, command_name, param_list)\n }\n }\n\n // Called by CmdSenderComponent\n cmd_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw', target_name)\n } else {\n return this._cmd('cmd_raw', target_name, command_name, param_list)\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_checks', target_name)\n } else {\n return this._cmd('cmd_no_checks', target_name, command_name, param_list)\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n cmd_raw_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_checks', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_checks',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n // Called by CmdSenderComponent\n get_interface_names() {\n return this.exec('get_interface_names', [])\n }\n\n // Called by CmdSenderComponent\n send_raw(interface_name, data) {\n return this.exec('send_raw', [interface_name, data])\n }\n\n list_configs(tool) {\n return this.exec('list_configs', [tool])\n }\n\n load_config(tool, name) {\n return this.exec('load_config', [tool, name])\n }\n\n save_config(tool, name, data) {\n return this.exec('save_config', [tool, name, data])\n }\n\n delete_config(tool, name) {\n return this.exec('delete_config', [tool, name])\n }\n\n get_out_of_limits() {\n return this.exec('get_out_of_limits', [])\n }\n\n get_overall_limits_state(ignored) {\n return this.exec('get_overall_limits_state', [ignored])\n }\n\n list_settings() {\n return this.exec('list_settings', [])\n }\n\n get_all_settings() {\n return this.exec('get_all_settings', [])\n }\n\n get_setting(name) {\n return this.exec('get_setting', [name])\n }\n\n get_settings(array) {\n return this.exec('get_settings', array)\n }\n\n save_setting(name, data) {\n return this.exec('save_setting', [name, data])\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.states === null)?_c('v-text-field',{attrs:{\"value\":_vm.value.val,\"hide-details\":\"\",\"dense\":\"\",\"data-test\":\"cmd-param-value\"},on:{\"change\":_vm.handleChange}}):_c('v-container',[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-overflow-btn',{staticClass:\"mr-4\",staticStyle:{},attrs:{\"items\":_vm.states,\"item-text\":\"label\",\"item-value\":\"value\",\"label\":\"State\",\"hide-details\":\"\",\"dense\":\"\",\"data-test\":\"cmd-param-select\"},on:{\"change\":_vm.handleStateChange},model:{value:(_vm.value.selected_state),callback:function ($$v) {_vm.$set(_vm.value, \"selected_state\", $$v)},expression:\"value.selected_state\"}})],1),_c('v-col',[_c('v-text-field',{attrs:{\"value\":_vm.stateValue,\"hide-details\":\"\",\"dense\":\"\",\"data-test\":\"cmd-param-value\"},on:{\"change\":_vm.handleChange}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <div>\n <v-text-field\n v-if=\"states === null\"\n :value=\"value.val\"\n hide-details\n dense\n @change=\"handleChange\"\n data-test=\"cmd-param-value\"\n />\n <v-container v-else>\n <v-row no-gutters>\n <v-col>\n <v-overflow-btn\n :items=\"states\"\n v-model=\"value.selected_state\"\n @change=\"handleStateChange\"\n item-text=\"label\"\n item-value=\"value\"\n label=\"State\"\n style=\"primary\"\n class=\"mr-4\"\n hide-details\n dense\n data-test=\"cmd-param-select\"\n />\n </v-col>\n <v-col>\n <v-text-field\n :value=\"stateValue\"\n @change=\"handleChange\"\n hide-details\n dense\n data-test=\"cmd-param-value\"\n />\n </v-col>\n </v-row>\n </v-container>\n </div>\n</template>\n\n<script>\nexport default {\n model: {\n prop: 'initialValue',\n event: 'input',\n },\n props: {\n statesInHex: {\n type: Boolean,\n default: false,\n },\n initialValue: {\n type: Object,\n default: () => ({\n val: '',\n states: null,\n selected_state: null,\n selected_state_label: '',\n manual_value: null,\n }),\n },\n },\n data() {\n return {\n value: this.initialValue,\n }\n },\n computed: {\n stateValue() {\n if (this.statesInHex) {\n return '0x' + this.value.val.toString(16)\n } else {\n return this.value.val\n }\n },\n states() {\n if (this.value.states != null) {\n var calcStates = []\n for (var key in this.value.states) {\n if (Object.prototype.hasOwnProperty.call(this.value.states, key)) {\n calcStates.push({ label: key, value: this.value.states[key].value })\n }\n }\n calcStates.push({\n label: 'MANUALLY ENTERED',\n value: 'MANUALLY ENTERED',\n })\n\n // TBD pick default better (use actual default instead of just first item in list)\n return calcStates\n } else {\n return null\n }\n },\n },\n methods: {\n handleChange(value) {\n this.value.val = value\n this.value.manual_value = value\n if (this.value.states) {\n var selected_state = 'MANUALLY ENTERED'\n var selected_state_label = 'MANUALLY_ENTERED'\n for (const state of this.states) {\n if (state.value === parseInt(value)) {\n selected_state = parseInt(value)\n selected_state_label = state.label\n break\n }\n }\n this.value.selected_state = selected_state\n this.value.selected_state_label = selected_state_label\n } else {\n this.value.selected_state = null\n }\n this.$emit('input', this.value)\n },\n\n handleStateChange(value) {\n var selected_state_label = null\n var selected_state = null\n for (var index = 0; index < this.states.length; index++) {\n if (value == this.states[index].value) {\n selected_state_label = this.states[index].label\n selected_state = value\n break\n }\n }\n this.value.selected_state_label = selected_state_label\n if (selected_state_label == 'MANUALLY ENTERED') {\n this.value.val = this.value.manual_value\n // Stop propagation of the click event so the editor stays active\n // to let the operator enter a manual value.\n // event.originalEvent.stopPropagation()\n } else {\n this.value.val = selected_state\n this.$emit('input', this.value)\n }\n },\n },\n}\n</script>\n<style scoped>\n.v-overflow-btn {\n margin-top: 0px;\n}\n.container {\n padding: 0px;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandParameterEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandParameterEditor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CommandParameterEditor.vue?vue&type=template&id=49aaed43&scoped=true&\"\nimport script from \"./CommandParameterEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./CommandParameterEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CommandParameterEditor.vue?vue&type=style&index=0&id=49aaed43&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"49aaed43\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('top-bar',{attrs:{\"menus\":_vm.menus,\"title\":_vm.title}}),_c('target-packet-item-chooser',{attrs:{\"initial-target-name\":this.$route.params.target,\"initial-packet-name\":this.$route.params.packet,\"disabled\":_vm.sendDisabled,\"button-text\":\"Send\",\"mode\":\"cmd\"},on:{\"on-set\":function($event){return _vm.commandChanged($event)},\"click\":function($event){return _vm.buildCmd($event)}}}),(_vm.rows.length != 0)?_c('v-card',[_c('v-card-title',[_vm._v(\" Parameters \"),_c('v-spacer'),_c('v-text-field',{attrs:{\"append-icon\":\"mdi-magnify\",\"label\":\"Search\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.rows,\"search\":_vm.search,\"calculate-widths\":\"\",\"disable-pagination\":\"\",\"hide-default-footer\":\"\",\"multi-sort\":\"\",\"dense\":\"\"},on:{\"contextmenu:row\":_vm.showContextMenu},scopedSlots:_vm._u([{key:\"item.val_and_states\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('command-parameter-editor',{attrs:{\"states-in-hex\":_vm.statesInHex},model:{value:(item.val_and_states),callback:function ($$v) {_vm.$set(item, \"val_and_states\", $$v)},expression:\"item.val_and_states\"}})]}}],null,false,1123654540)})],1):_vm._e(),_c('div',{staticClass:\"ma-3\"},[_vm._v(\"Status: \"+_vm._s(_vm.status))]),_c('div',{staticClass:\"mt-3\"},[_vm._v(\" Command History: (Pressing Enter on the line re-executes the command) \")]),_c('v-textarea',{ref:\"history\",attrs:{\"value\":_vm.history,\"solo\":\"\",\"dense\":\"\",\"hide-details\":\"\",\"data-test\":\"sender-history\",\"background-color\":_vm.getBackgroundColor()},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.historyEnter($event)}}}),_c('v-menu',{attrs:{\"position-x\":_vm.x,\"position-y\":_vm.y,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.contextMenuShown),callback:function ($$v) {_vm.contextMenuShown=$$v},expression:\"contextMenuShown\"}},[_c('v-list',_vm._l((_vm.contextMenuOptions),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){$event.stopPropagation();return item.action.apply(null, arguments)}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)}),1)],1),_c('details-dialog',{attrs:{\"target-name\":_vm.targetName,\"packet-name\":_vm.commandName,\"item-name\":_vm.parameterName,\"type\":'cmd'},model:{value:(_vm.viewDetails),callback:function ($$v) {_vm.viewDetails=$$v},expression:\"viewDetails\"}}),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.displayErrorDialog),callback:function ($$v) {_vm.displayErrorDialog=$$v},expression:\"displayErrorDialog\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Error \")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"mx-1\"},[_c('v-row',{staticClass:\"my-2\"},[_c('v-card-text',[_c('span',{domProps:{\"textContent\":_vm._s(_vm.status)}})])],1),_c('v-row',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"data-test\":\"error-dialog-ok\"},on:{\"click\":function($event){_vm.displayErrorDialog = false}}},[_vm._v(\" Ok \")])],1)],1)])],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.displaySendHazardous),callback:function ($$v) {_vm.displaySendHazardous=$$v},expression:\"displaySendHazardous\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Hazardous Warning \")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"mx-1\"},[_c('v-row',{staticClass:\"my-2\"},[_c('span',[_vm._v(\" Warning: Command \"+_vm._s(_vm.targetName)+\" \"+_vm._s(_vm.commandName)+\" is Hazardous. Send? \")])]),_c('v-row',[_c('v-spacer'),_c('v-btn',{attrs:{\"outlined\":\"\",\"data-test\":\"send-hazardous-no\"},on:{\"click\":_vm.cancelHazardousCmd}},[_vm._v(\" No \")]),_c('v-btn',{staticClass:\"primary mx-1\",attrs:{\"data-test\":\"send-hazardous-yes\"},on:{\"click\":_vm.sendHazardousCmd}},[_vm._v(\" Yes \")])],1)],1)])],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.displaySendRaw),callback:function ($$v) {_vm.displaySendRaw=$$v},expression:\"displaySendRaw\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Send Raw \")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"mx-1\"},[_c('v-row',{staticClass:\"my-2\"},[_c('v-col',[_vm._v(\"Interface:\")]),_c('v-col',[_c('v-select',{attrs:{\"solo\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"items\":_vm.interfaces,\"item-text\":\"label\",\"item-value\":\"value\"},model:{value:(_vm.selectedInterface),callback:function ($$v) {_vm.selectedInterface=$$v},expression:\"selectedInterface\"}})],1)],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_vm._v(\"Filename:\")]),_c('v-col',[_c('input',{attrs:{\"type\":\"file\"},on:{\"change\":function($event){return _vm.selectRawCmdFile($event)}}})])],1),_c('v-row',[_c('v-spacer'),_c('v-btn',{attrs:{\"outlined\":\"\",\"data-test\":\"raw-cancel\"},on:{\"click\":_vm.cancelRawCmd}},[_vm._v(\" Cancel \")]),_c('v-btn',{staticClass:\"primary\",attrs:{\"data-test\":\"raw-ok\"},on:{\"click\":_vm.sendRawCmd}},[_vm._v(\" Ok \")])],1)],1)])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandSender.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandSender.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CommandSender.vue?vue&type=template&id=77790331&\"\nimport script from \"./CommandSender.vue?vue&type=script&lang=js&\"\nexport * from \"./CommandSender.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":\"600\"},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Details \")]),_c('v-spacer')],1),_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.targetName)+\" \"+_vm._s(_vm.packetName)+\" \"+_vm._s(_vm.itemName)+\" \")]),_c('v-card-subtitle',[_vm._v(_vm._s(_vm.details.description))]),_c('v-card-text',[_c('v-container',{attrs:{\"fluid\":\"\"}},[(_vm.type === 'tlm')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Item Values\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Raw Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.rawValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Converted Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.convertedValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Formatted Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.formattedValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"With Units Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.unitsValue))])],1)],1)],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Bit Offset\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.bit_offset))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Bit Size\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.bit_size))])],1),(_vm.details.array_size)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Array Size\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.array_size))])],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Data Type\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.data_type))])],1),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Minimum\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.minimum))])],1):_vm._e(),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Maximum\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.maximum))])],1):_vm._e(),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Default\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.default))])],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Format String\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.format_string))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Read Conversion\")]),(_vm.details.read_conversion)?_c('v-col',[_vm._v(\" Class: \"+_vm._s(_vm.details.read_conversion.class)+\" \"),_c('br'),_vm._v(\" Params: \"+_vm._s(_vm.details.read_conversion.params)+\" \")]):_c('v-col')],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Write Conversion\")]),(_vm.details.write_conversion)?_c('v-col',[_vm._v(\" Class: \"+_vm._s(_vm.details.write_conversion.class)+\" \"),_c('br'),_vm._v(\" Params: \"+_vm._s(_vm.details.write_conversion.params)+\" \")]):_c('v-col')],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Id Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.id_value))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Units Full\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.units_full))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Units Abbr\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.units))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Endianness\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.endianness))])],1),(_vm.details.states)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"States\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.states),function(state,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_c('v-col',[_vm._v(_vm._s(state.value))])],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"States\")]),_c('v-col',[_vm._v(\"None\")])],1),(_vm.details.limits)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Limits\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.limits),function(limit,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_vm._v(\" \"+_vm._s(_vm.formatLimit(limit))+\" \"),_c('v-col')],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Limits\")]),_c('v-col',[_vm._v(\"None\")])],1),(_vm.details.meta)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Meta\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.meta),function(value,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_c('v-col',[_vm._v(_vm._s(value))])],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Meta\")]),_c('v-col',[_vm._v(\"None\")])],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-dialog v-model=\"show\" width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Details </span>\n <v-spacer />\n </v-system-bar>\n\n <v-card-title>\n {{ targetName }} {{ packetName }} {{ itemName }}\n </v-card-title>\n <v-card-subtitle>{{ details.description }}</v-card-subtitle>\n <v-card-text>\n <v-container fluid>\n <v-row no-gutters v-if=\"type === 'tlm'\">\n <v-col cols=\"3\" class=\"label\">Item Values</v-col>\n <v-col />\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">Raw Value</v-col>\n <v-col>{{ rawValue }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">Converted Value</v-col>\n <v-col>{{ convertedValue }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">Formatted Value</v-col>\n <v-col>{{ formattedValue }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"4\" class=\"label\">With Units Value</v-col>\n <v-col>{{ unitsValue }}</v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Bit Offset</v-col>\n <v-col>{{ details.bit_offset }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Bit Size</v-col>\n <v-col>{{ details.bit_size }}</v-col>\n </v-row>\n <v-row v-if=\"details.array_size\" no-gutters>\n <v-col cols=\"3\" class=\"label\">Array Size</v-col>\n <v-col>{{ details.array_size }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Data Type</v-col>\n <v-col>{{ details.data_type }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"type === 'cmd'\">\n <v-col cols=\"3\" class=\"label\">Minimum</v-col>\n <v-col>{{ details.minimum }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"type === 'cmd'\">\n <v-col cols=\"3\" class=\"label\">Maximum</v-col>\n <v-col>{{ details.maximum }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"type === 'cmd'\">\n <v-col cols=\"3\" class=\"label\">Default</v-col>\n <v-col>{{ details.default }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Format String</v-col>\n <v-col>{{ details.format_string }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Read Conversion</v-col>\n <v-col v-if=\"details.read_conversion\">\n Class: {{ details.read_conversion.class }}\n <br />\n Params:\n {{ details.read_conversion.params }}\n </v-col>\n <v-col v-else></v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Write Conversion</v-col>\n <v-col v-if=\"details.write_conversion\">\n Class: {{ details.write_conversion.class }}\n <br />\n Params:\n {{ details.write_conversion.params }}\n </v-col>\n <v-col v-else></v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Id Value</v-col>\n <v-col>{{ details.id_value }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Units Full</v-col>\n <v-col>{{ details.units_full }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Units Abbr</v-col>\n <v-col>{{ details.units }}</v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"3\" class=\"label\">Endianness</v-col>\n <v-col>{{ details.endianness }}</v-col>\n </v-row>\n <v-row no-gutters v-if=\"details.states\">\n <v-col cols=\"3\" class=\"label\">States</v-col>\n <v-col />\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row\n no-gutters\n v-for=\"(state, key) in details.states\"\n :key=\"key\"\n >\n <v-col cols=\"4\" class=\"label\">{{ key }}</v-col>\n <v-col>{{ state.value }}</v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row no-gutters v-else>\n <v-col cols=\"3\" class=\"label\">States</v-col>\n <v-col>None</v-col>\n </v-row>\n <v-row no-gutters v-if=\"details.limits\">\n <v-col cols=\"3\" class=\"label\">Limits</v-col>\n <v-col></v-col>\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row\n no-gutters\n v-for=\"(limit, key) in details.limits\"\n :key=\"key\"\n >\n <v-col cols=\"4\" class=\"label\">{{ key }}</v-col>\n {{ formatLimit(limit) }}\n <v-col></v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row no-gutters v-else>\n <v-col cols=\"3\" class=\"label\">Limits</v-col>\n <v-col>None</v-col>\n </v-row>\n <v-row no-gutters v-if=\"details.meta\">\n <v-col cols=\"3\" class=\"label\">Meta</v-col>\n <v-col></v-col>\n <v-container fluid class=\"ml-5 pa-0\">\n <v-row no-gutters v-for=\"(value, key) in details.meta\" :key=\"key\">\n <v-col cols=\"4\" class=\"label\">{{ key }}</v-col>\n <v-col>{{ value }}</v-col>\n </v-row>\n </v-container>\n </v-row>\n <v-row v-else no-gutters>\n <v-col cols=\"3\" class=\"label\">Meta</v-col>\n <v-col>None</v-col>\n </v-row>\n </v-container>\n </v-card-text>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { CosmosApi } from '../services/cosmos-api.js'\n\nexport default {\n props: {\n type: {\n default: 'tlm',\n validator: function (value) {\n // The value must match one of these strings\n return ['cmd', 'tlm'].indexOf(value) !== -1\n },\n },\n targetName: String,\n packetName: String,\n itemName: String,\n value: Boolean, // value is the default prop when using v-model\n },\n data() {\n return {\n details: Object,\n updater: null,\n rawValue: null,\n convertedValue: null,\n formattedValue: null,\n unitsValue: null,\n }\n },\n computed: {\n show: {\n get() {\n return this.value\n },\n set(value) {\n this.$emit('input', value) // input is the default event when using v-model\n },\n },\n },\n created() {\n this.api = new CosmosApi()\n },\n beforeDestroy() {\n clearInterval(this.updater)\n this.updater = null\n },\n watch: {\n // Create a watcher on value which is the indicator to display the dialog\n // If value is true we request the details from the server\n // If this is a tlm dialog we setup an interval to get the telemetry values\n value: function (newValue, oldValue) {\n if (newValue) {\n this.requestDetails()\n if (this.type === 'tlm') {\n this.updater = setInterval(() => {\n this.api\n .get_tlm_values([\n `${this.targetName}__${this.packetName}__${this.itemName}__RAW`,\n `${this.targetName}__${this.packetName}__${this.itemName}__CONVERTED`,\n `${this.targetName}__${this.packetName}__${this.itemName}__FORMATTED`,\n `${this.targetName}__${this.packetName}__${this.itemName}__WITH_UNITS`,\n ])\n .then((values) => {\n this.rawValue = values[0][0]\n this.convertedValue = values[1][0]\n this.formattedValue = values[2][0]\n this.unitsValue = values[3][0]\n })\n }, 1000)\n }\n } else {\n clearInterval(this.updater)\n this.updater = null\n }\n },\n },\n methods: {\n requestDetails() {\n if (this.type === 'tlm') {\n this.api\n .get_item(this.targetName, this.packetName, this.itemName)\n .then((details) => {\n this.details = details\n })\n } else {\n this.api\n .get_parameter(this.targetName, this.packetName, this.itemName)\n .then((details) => {\n this.details = details\n })\n }\n },\n formatLimit(limit) {\n if (limit.green_low) {\n return (\n 'RL/' +\n limit.red_low +\n ' YL/' +\n limit.yellow_low +\n ' YH/' +\n limit.yellow_high +\n ' RH/' +\n limit.red_high +\n ' GL/' +\n limit.green_low +\n ' GH/' +\n limit.green_high\n )\n } else if (limit.red_low) {\n return (\n 'RL/' +\n limit.red_low +\n ' YL/' +\n limit.yellow_low +\n ' YH/' +\n limit.yellow_high +\n ' RH/' +\n limit.red_high\n )\n } else {\n return limit\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.label {\n font-weight: bold;\n text-transform: capitalize;\n}\n</style>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DetailsDialog.vue?vue&type=template&id=3eb9665d&scoped=true&\"\nimport script from \"./DetailsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailsDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailsDialog.vue?vue&type=style&index=0&id=3eb9665d&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3eb9665d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"c-chooser px-0\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":_vm.colSize,\"data-test\":\"select-target\"}},[_c('v-autocomplete',{attrs:{\"label\":\"Select Target\",\"hide-details\":\"\",\"dense\":\"\",\"items\":_vm.targetNames,\"item-text\":\"label\",\"item-value\":\"value\"},on:{\"change\":_vm.targetNameChanged},model:{value:(_vm.selectedTargetName),callback:function ($$v) {_vm.selectedTargetName=$$v},expression:\"selectedTargetName\"}})],1),_c('v-col',{attrs:{\"cols\":_vm.colSize,\"data-test\":\"select-packet\"}},[_c('v-autocomplete',{attrs:{\"label\":\"Select Packet\",\"hide-details\":\"\",\"dense\":\"\",\"disabled\":_vm.packetsDisabled,\"items\":_vm.packetNames,\"item-text\":\"label\",\"item-value\":\"value\"},on:{\"change\":_vm.packetNameChanged},model:{value:(_vm.selectedPacketName),callback:function ($$v) {_vm.selectedPacketName=$$v},expression:\"selectedPacketName\"}})],1),(_vm.chooseItem && !_vm.buttonDisabled)?_c('v-col',{attrs:{\"cols\":_vm.colSize,\"data-test\":\"select-item\"}},[_c('v-autocomplete',{attrs:{\"label\":\"Select Item\",\"hide-details\":\"\",\"dense\":\"\",\"disabled\":_vm.itemsDisabled,\"items\":_vm.itemNames,\"item-text\":\"label\",\"item-value\":\"value\"},on:{\"change\":function($event){return _vm.itemNameChanged($event)}},model:{value:(_vm.selectedItemName),callback:function ($$v) {_vm.selectedItemName=$$v},expression:\"selectedItemName\"}})],1):_vm._e(),(_vm.buttonText)?_c('v-col',{attrs:{\"cols\":_vm.colSize}},[_c('v-btn',{attrs:{\"disabled\":_vm.buttonDisabled,\"block\":\"\",\"color\":\"primary\",\"data-test\":\"select-send\"},on:{\"click\":_vm.buttonPressed}},[_vm._v(\" \"+_vm._s(_vm.actualButtonText)+\" \")])],1):_vm._e()],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":_vm.colSize}},[_vm._v(\"Description: \"+_vm._s(_vm.description))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <v-container class=\"c-chooser px-0\">\n <v-row>\n <v-col :cols=\"colSize\" data-test=\"select-target\">\n <v-autocomplete\n label=\"Select Target\"\n hide-details\n dense\n @change=\"targetNameChanged\"\n :items=\"targetNames\"\n item-text=\"label\"\n item-value=\"value\"\n v-model=\"selectedTargetName\"\n />\n </v-col>\n <v-col :cols=\"colSize\" data-test=\"select-packet\">\n <v-autocomplete\n label=\"Select Packet\"\n hide-details\n dense\n @change=\"packetNameChanged\"\n :disabled=\"packetsDisabled\"\n :items=\"packetNames\"\n item-text=\"label\"\n item-value=\"value\"\n v-model=\"selectedPacketName\"\n />\n </v-col>\n <v-col\n v-if=\"chooseItem && !buttonDisabled\"\n :cols=\"colSize\"\n data-test=\"select-item\"\n >\n <v-autocomplete\n label=\"Select Item\"\n hide-details\n dense\n @change=\"itemNameChanged($event)\"\n :disabled=\"itemsDisabled\"\n :items=\"itemNames\"\n item-text=\"label\"\n item-value=\"value\"\n v-model=\"selectedItemName\"\n />\n </v-col>\n <v-col v-if=\"buttonText\" :cols=\"colSize\">\n <v-btn\n :disabled=\"buttonDisabled\"\n block\n color=\"primary\"\n data-test=\"select-send\"\n @click=\"buttonPressed\"\n >\n {{ actualButtonText }}\n </v-btn>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col :cols=\"colSize\">Description: {{ description }}</v-col>\n </v-row>\n </v-container>\n</template>\n\n<script>\nimport { CosmosApi } from '../services/cosmos-api'\nexport default {\n props: {\n allowAll: {\n type: Boolean,\n default: false,\n },\n buttonText: {\n type: String,\n default: null,\n },\n chooseItem: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n initialTargetName: {\n type: String,\n default: '',\n },\n initialPacketName: {\n type: String,\n default: '',\n },\n initialItemName: {\n type: String,\n default: '',\n },\n mode: {\n type: String,\n default: 'tlm',\n // TODO: add validators throughout\n validator: (propValue) => {\n return ['cmd', 'tlm'].includes(propValue)\n },\n },\n reduced: {\n type: String,\n default: 'DECOM',\n validator: (propValue) => {\n return [\n 'REDUCED_DAY',\n 'REDUCED_HOUR',\n 'REDUCED_MINUTE',\n 'DECOM',\n ].includes(propValue)\n },\n },\n unknown: {\n type: Boolean,\n default: false,\n },\n vertical: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n targetNames: [],\n packetNames: [],\n itemNames: [],\n selectedTargetName: this.initialTargetName?.toUpperCase(),\n selectedPacketName: this.initialPacketName?.toUpperCase(),\n selectedItemName: this.initialItemName?.toUpperCase(),\n description: '',\n internalDisabled: false,\n packetsDisabled: false,\n itemsDisabled: false,\n api: null,\n ALL: {\n label: '[ ALL ]',\n value: 'ALL',\n description: 'ALL',\n }, // Constant to indicate all packets or items\n UNKNOWN: {\n label: '[ UNKNOWN ]',\n value: 'UNKNOWN',\n description: 'UNKNOWN',\n },\n }\n },\n created() {\n this.internalDisabled = true\n this.api = new CosmosApi()\n this.api.get_target_list().then((result) => {\n this.targetNames = result.map((target) => {\n return { label: target, value: target }\n })\n if (!this.selectedTargetName) {\n this.selectedTargetName = this.targetNames[0].value\n this.targetNameChanged(this.selectedTargetName)\n }\n this.updatePackets()\n if (this.unknown) {\n this.targetNames.push(this.UNKNOWN)\n }\n })\n },\n computed: {\n actualButtonText: function () {\n if (this.selectedPacketName === 'ALL') {\n return 'Add Target'\n }\n if (this.selectedItemName === 'ALL') {\n return 'Add Packet'\n }\n return this.buttonText\n },\n buttonDisabled: function () {\n return this.disabled || this.internalDisabled\n },\n targetChooserStyle: function () {\n if (this.chooseItem || this.buttonText) {\n return { width: '25%', float: 'left', 'margin-right': '5px' }\n } else {\n return { width: '49%', float: 'left' }\n }\n },\n packetChooserStyle: function () {\n if (this.chooseItem || this.buttonText) {\n return { width: '25%', float: 'left', 'margin-right': '5px' }\n } else {\n return { width: '50%', float: 'right' }\n }\n },\n colSize: function () {\n return this.vertical ? 12 : false\n },\n },\n watch: {\n mode: function (newVal, oldVal) {\n this.updatePackets()\n this.itemNames = []\n },\n reduced: function (newVal, oldVal) {\n this.updateItems()\n },\n },\n methods: {\n updatePackets: function () {\n if (this.selectedTargetName === 'UNKNOWN') {\n this.packetNames = [this.UNKNOWN]\n this.selectedPacketName = this.packetNames[0].value\n this.packetNameChanged(this.UNKNOWN.value)\n this.description = 'UNKNOWN'\n return\n }\n this.internalDisabled = true\n const cmd = this.mode === 'tlm' ? 'get_all_telemetry_list' : 'get_all_commands_list'\n this.api[cmd](this.selectedTargetName).then((packets) => {\n this.packetNames = packets.map((packet) => {\n return {\n label: packet.packet_name,\n value: packet.packet_name,\n description: packet.description,\n }\n })\n if (this.allowAll) {\n this.packetNames.unshift(this.ALL)\n }\n if (!this.selectedPacketName) {\n this.selectedPacketName = this.packetNames[0].value\n this.packetNameChanged(this.selectedPacketName)\n }\n const item = this.packetNames.find((packet) => {\n return packet.value === this.selectedPacketName\n })\n this.description = item.description\n if (this.chooseItem) {\n this.updateItems()\n }\n this.internalDisabled = false\n })\n },\n\n updateItems: function () {\n if (this.selectedPacketName === 'ALL') {\n return\n }\n this.internalDisabled = true\n const cmd = this.mode === 'tlm' ? 'get_telemetry' : 'get_command'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n this.itemNames = packet.items.map((item) => {\n if (this.reduced === 'DECOM') {\n return [{\n label: item.name,\n value: item.name,\n description: item.description,\n }]\n } else {\n return this.makeReducedItems(item)\n }\n }).reduce((result, item) => { return result.concat(item) }, [])\n if (this.allowAll) {\n this.itemNames.unshift(this.ALL)\n }\n if (!this.selectedItemName) {\n this.selectedItemName = this.itemNames[0].value\n }\n this.description = this.itemNames[0].description\n this.internalDisabled = false\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemName,\n reduced: this.reduced,\n })\n }\n )\n },\n\n makeReducedItems: function (item) {\n const reducedOptions = !item.array_size && !item.states\n if (\n reducedOptions && ['UINT', 'INT', 'FLOAT'].includes(item.data_type)\n ) {\n return ['MIN', 'MAX', 'AVG', 'STDDEV'].map((ext) => {\n return {\n label: `${item.name}_${ext}`,\n value: `${item.name}_${ext}`,\n description: `${ext} ${item.description}`,\n }\n })\n }\n return []\n },\n\n targetNameChanged: function (value) {\n this.selectedTargetName = value\n this.selectedPacketName = ''\n this.selectedItemName = ''\n this.updatePackets()\n },\n\n packetNameChanged: function (value) {\n if (value === 'ALL') {\n this.itemsDisabled = true\n this.internalDisabled = false\n } else {\n this.itemsDisabled = false\n const packet = this.packetNames.find((packet) => {\n return value === packet.value\n })\n this.selectedPacketName = packet.value\n this.description = packet.description\n }\n if (this.chooseItem) {\n this.selectedItemName = ''\n this.updateItems()\n } else {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n reduced: this.reduced,\n })\n }\n },\n\n itemNameChanged: function (value) {\n const item = this.itemNames.find((item) => {\n return value === item.value\n })\n this.selectedItemName = item.value\n this.description = item.description\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemName,\n reduced: this.reduced,\n })\n },\n\n buttonPressed: function () {\n if (this.selectedPacketName === 'ALL') {\n this.allTargetPacketItems()\n } else if (this.selectedItemName === 'ALL') {\n this.allPacketItems()\n } else if (this.chooseItem) {\n this.$emit('click', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemName,\n reduced: this.reduced,\n })\n } else {\n this.$emit('click', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n reduced: this.reduced,\n })\n }\n },\n\n allTargetPacketItems: function () {\n this.packetNames.forEach((packetName) => {\n if (packetName === this.ALL) return\n const cmd = this.mode === 'tlm' ? 'get_telemetry' : 'get_command'\n this.api[cmd](this.selectedTargetName, packetName.value).then(\n (packet) => {\n packet.items.forEach((item) => {\n this.$emit('click', {\n targetName: this.selectedTargetName,\n packetName: packetName.value,\n itemName: item['name'],\n reduced: this.reduced,\n })\n })\n }\n )\n })\n },\n\n allPacketItems: function () {\n this.itemNames.forEach((item) => {\n if (item === this.ALL) return\n this.$emit('click', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: item.value,\n reduced: this.reduced,\n })\n })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TargetPacketItemChooser.vue?vue&type=template&id=1cc45128&\"\nimport script from \"./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"\nexport * from \"./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('mounting-portal',{attrs:{\"mount-to\":\"#cosmos-menu\",\"append\":\"\"}},[_c('div',{staticClass:\"v-toolbar__content\"},[_vm._l((_vm.menus),function(menu,i){return _c('v-menu',{key:i,attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"mx-1\",attrs:{\"outlined\":\"\",\"data-test\":_vm.formatDT((_vm.title + \" \" + (menu.label)))}},'v-btn',attrs,false),on),[_c('span',{domProps:{\"textContent\":_vm._s(menu.label)}}),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-menu-down \")])],1)]}}],null,true)},[_c('v-list',[_c('v-radio-group',{staticClass:\"ma-0 pa-0\",attrs:{\"value\":menu.radioGroup,\"hide-details\":\"\",\"dense\":\"\"}},[_vm._l((menu.items),function(option,j){return [(option.divider)?_c('v-divider',{key:j}):_c('v-list-item',{key:j,attrs:{\"disabled\":option.disabled,\"data-test\":_vm.formatDT((_vm.title + \" \" + (menu.label) + \" \" + (option.label)))},on:{\"click\":option.command}},[(option.radio)?_c('v-list-item-action',[_c('v-radio',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label}})],1):_vm._e(),(option.checkbox)?_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label},model:{value:(_vm.checked),callback:function ($$v) {_vm.checked=$$v},expression:\"checked\"}})],1):_vm._e(),(option.icon)?_c('v-list-item-icon',[_c('v-icon',{attrs:{\"disabled\":option.disabled},domProps:{\"textContent\":_vm._s(option.icon)}})],1):_vm._e(),(!option.radio && !option.checkbox)?_c('v-list-item-title',{style:('cursor: pointer;' + (option.disabled ? 'opacity: 0.2' : '')),domProps:{\"textContent\":_vm._s(option.label)}}):_vm._e()],1)]})],2)],1)],1)}),_c('v-spacer'),_c('v-toolbar-title',{domProps:{\"textContent\":_vm._s(_vm.title)}}),_c('v-spacer')],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n#\n# This program may also be used under the terms of a commercial or\n# enterprise edition license of COSMOS if purchased from the\n# copyright holder\n-->\n\n<template>\n <mounting-portal mount-to=\"#cosmos-menu\" append>\n <div class=\"v-toolbar__content\">\n <v-menu offset-y v-for=\"(menu, i) in menus\" :key=\"i\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n outlined\n v-bind=\"attrs\"\n v-on=\"on\"\n class=\"mx-1\"\n :data-test=\"formatDT(`${title} ${menu.label}`)\"\n >\n <span v-text=\"menu.label\" />\n <v-icon right> mdi-menu-down </v-icon>\n </v-btn>\n </template>\n <v-list>\n <!-- The radio-group is necessary in case the application wants radio buttons -->\n <v-radio-group\n :value=\"menu.radioGroup\"\n hide-details\n dense\n class=\"ma-0 pa-0\"\n >\n <template v-for=\"(option, j) in menu.items\">\n <v-divider v-if=\"option.divider\" :key=\"j\" />\n <v-list-item\n v-else\n @click=\"option.command\"\n :key=\"j\"\n :disabled=\"option.disabled\"\n :data-test=\"formatDT(`${title} ${menu.label} ${option.label}`)\"\n >\n <v-list-item-action\n v-if=\"option.radio\"\n >\n <v-radio\n color=\"secondary\"\n :label=\"option.label\"\n :value=\"option.label\"\n />\n </v-list-item-action>\n <v-list-item-action\n v-if=\"option.checkbox\"\n >\n <v-checkbox\n v-model=\"checked\"\n color=\"secondary\"\n :label=\"option.label\"\n :value=\"option.label\"\n />\n </v-list-item-action>\n <v-list-item-icon v-if=\"option.icon\">\n <v-icon v-text=\"option.icon\" :disabled=\"option.disabled\" />\n </v-list-item-icon>\n <v-list-item-title\n v-if=\"!option.radio && !option.checkbox\"\n :style=\"\n 'cursor: pointer;' + (option.disabled ? 'opacity: 0.2' : '')\n \"\n v-text=\"option.label\"\n />\n </v-list-item>\n </template>\n </v-radio-group>\n </v-list>\n </v-menu>\n <v-spacer />\n <v-toolbar-title v-text=\"title\" />\n <v-spacer />\n </div>\n </mounting-portal>\n</template>\n\n<script>\nexport default {\n props: {\n menus: {\n type: Array,\n default: function () {\n return []\n },\n },\n title: {\n type: String,\n default: '',\n },\n },\n methods: {\n // Convert the string to a standard data-test format\n formatDT: function(string) {\n return string.replaceAll(' ', '-').toLowerCase()\n },\n }\n}\n</script>\n\n<style scoped>\n.v-list >>> .v-label {\n margin-left: 5px;\n}\n.v-list-item__icon {\n /* For some reason the default margin-right is huge */\n margin-right: 15px !important;\n}\n.v-list-item__title {\n color: white;\n}\n</style>\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TopBar.vue?vue&type=template&id=e3bb7458&scoped=true&\"\nimport script from \"./TopBar.vue?vue&type=script&lang=js&\"\nexport * from \"./TopBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TopBar.vue?vue&type=style&index=0&id=e3bb7458&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e3bb7458\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-overflow-btn[data-v-49aaed43]{margin-top:0}.container[data-v-49aaed43]{padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".label[data-v-3eb9665d]{font-weight:700;text-transform:capitalize}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-list[data-v-e3bb7458] .v-label{margin-left:5px}.v-list-item__icon[data-v-e3bb7458]{margin-right:15px!important}.v-list-item__title[data-v-e3bb7458]{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandParameterEditor.vue?vue&type=style&index=0&id=49aaed43&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7e475e85\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=style&index=0&id=3eb9665d&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7c1e213a\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[2]!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12[0].rules[0].use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=style&index=0&id=e3bb7458&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"a2f2c426\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["components","DetailsDialog","TargetPacketItemChooser","CommandParameterEditor","TopBar","data","title","search","headers","text","value","targetName","commandName","ignoreRangeChecks","statesInHex","showIgnoredParams","cmdRaw","ignoredParams","rows","interfaces","selectedInterface","rawCmdFile","status","history","displaySendHazardous","displayErrorDialog","displaySendRaw","sendDisabled","api","viewDetails","contextMenuShown","parameterName","reservedItemNames","x","y","contextMenuOptions","action","menus","label","items","checkbox","command","created","Api","packetName","methods","getBackgroundColor","historyEnter","event","showContextMenu","e","row","isFloat","str","isInt","isArray","removeQuotes","convertToValue","param","upcaseStr","hexStr","json_class","raw","jstr","convertToString","return_value","Object","nibble","commandChanged","replace","name","params","target","packet","catch","updateCmdParams","get_target","then","val","parameter_name","val_and_states","states","selected_state","selected_state_label","manual_value","description","units","type","statusChange","createParamList","paramList","buildCmd","sendCmd","hazardous","cmd","obs","sendHazardousCmd","cancelHazardousCmd","processCmdResponse","cmd_sent","response","msg","displayError","context","error","setupRawCmd","selectRawCmdFile","onLoad","bufView","sendRawCmd","reader","self","cancelRawCmd","request","method","url","noAuth","noScope","CosmosAuth","updateToken","defaultMinValidity","login","localStorage","cosmosToken","scope","axios","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","get","path","put","post","delete","vueInstance","Vue","axiosInstance","baseURL","location","origin","timeout","interceptors","use","href","body","statusText","config","message","exception","class","$notify","serious","CosmosApi","kwparams","this","id","jsonrpc","keyword_params","Authorization","result","err","Error","NaN","Infinity","Number","isNaN","POSITIVE_INFINITY","NEGATIVE_INFINITY","exec","interface_name","router_name","item","log_writer_name","limits_set","target_name","packet_name","value_type","len","length","converted","i","decode_cosmos_type","item_name","command_name","param_list","key","prototype","hasOwnProperty","call","encode_cosmos_type","undefined","_cmd","tool","ignored","array","render","_vm","_h","$createElement","_c","_self","attrs","on","handleChange","staticClass","staticStyle","handleStateChange","model","callback","$$v","$set","expression","stateValue","staticRenderFns","prop","props","default","initialValue","computed","calcStates","component","$route","$event","_v","scopedSlots","_u","fn","ref","_e","_s","indexOf","_k","keyCode","_l","index","stopPropagation","apply","arguments","domProps","show","itemName","details","rawValue","convertedValue","formattedValue","unitsValue","bit_offset","bit_size","array_size","data_type","minimum","maximum","format_string","read_conversion","write_conversion","id_value","units_full","endianness","state","limit","formatLimit","validator","updater","set","beforeDestroy","clearInterval","watch","get_tlm_values","requestDetails","get_item","get_parameter","colSize","targetNames","targetNameChanged","selectedTargetName","packetsDisabled","packetNames","packetNameChanged","selectedPacketName","chooseItem","buttonDisabled","itemsDisabled","itemNames","itemNameChanged","selectedItemName","buttonPressed","actualButtonText","allowAll","buttonText","disabled","initialTargetName","initialPacketName","initialItemName","mode","reduced","includes","propValue","unknown","vertical","internalDisabled","ALL","UNKNOWN","targetChooserStyle","width","float","packetChooserStyle","updatePackets","updateItems","reduce","makeReducedItems","reducedOptions","allTargetPacketItems","allPacketItems","menu","_g","_b","formatDT","radioGroup","option","j","checked","icon","radio","style","___CSS_LOADER_EXPORT___","push","module","content","__esModule","locals","exports","add"],"sourceRoot":""}
|