{"version":3,"file":"static/chunks/3159-8069408d2e1e33ff.js","mappings":"sIAiBA,SAASA,GAAK,OACZC,EADY,OAEZC,EAFY,gBAGZC,EAAkB,GAHN,MAIZC,EAAQ,GAJI,YAKZC,EAAc,GALF,SAMZC,EANY,UAOZC,IAEA,OACE,iBACEA,UAAS,mBAAcA,GACvBC,MAAO,CACLC,aAAc,OACdN,gBAAiB,OAAF,OAASA,EAAT,KACfO,iBAAkB,YAClBC,eAAgB,UAChBC,mBAAoB,iBAPxB,UAUGX,IAAU,8BAAGA,KAEd,iBAAKM,UAAU,mBAAf,UACGH,IAAS,gBAAKG,UAAU,mCAAf,SAAmDH,IAC5DC,IAAe,gBAAKE,UAAU,2BAAf,SAA2CF,IAC1DC,KAGFJ,IAAU,8BAAGA,OAKpBF,EAAKa,OA/CL,UAAgB,UAAEN,EAAF,SAAaD,IAC3B,OACE,gBAAKC,WAAWO,EAAAA,EAAAA,GAAW,wDAAyDP,GAApF,SAAiGD,KA+CrG,O,qbC9CA,MAAMS,EAAQ,CACZC,KAAM,6DACNC,KAAM,8DAwBR,MAhBA,YAK6E,IAL3D,MAChBC,EADgB,IAEhBC,EAFgB,UAGhBZ,EAAY,IAE+D,EADxEa,GACwE,YAC3E,OACE,iB,qWAAA,EACEC,KAAK,WACLC,SAAWC,GAAUJ,EAAII,EAAMC,OAAOC,SACtClB,UAAS,2HAAsHQ,EAAMG,GAA5H,YAAsIX,IAC3Ia,K,iCCrBH,SAASM,GAAqB,MAAER,EAAF,KAASS,EAAT,aAAeC,EAAf,gBAA6BC,EAA7B,iBAA8CC,IACjF,MAAMC,GAAsBJ,EAAKK,oBAAoBC,GAAG,IAAKL,EAM7D,OAJEG,GAA4C,OAArBD,EACnBH,EAAKO,mBAAmBC,GAAGR,EAAKK,qBAChCL,EAAKO,mBAAmBD,GAAGN,EAAKK,wBAIlC,iBAAKzB,UAAU,yBAAf,WACE,SAAC,EAAD,CACEW,MAAOA,EACPO,QAASM,EACTK,SAAUT,EAAKK,oBAAoBK,SACnClB,IAAKU,KAEP,iBAAMtB,UAAU,yBAAhB,mDACA,SAAC+B,EAAA,EAAD,CACEC,KACEZ,EAAKK,oBAAoBC,GAAG,GACxB,6OACA,qHAQT,SAASO,GAAa,MAAEpC,EAAF,MAASc,EAAT,KAAgBuB,EAAhB,QAAsBC,EAAtB,KAA+BC,EAA/B,MAAqCC,IAChE,MAAMC,GAAkBC,EAAAA,EAAAA,GAAyBF,GACjD,OACE,iBAAKrC,UAAU,yCAAf,WACE,4BACE,SAAC,EAAD,CAAUW,MAAOA,EAAOO,QAASgB,EAAMtB,IAAKuB,KAC5C,iBAAMnC,UAAU,yBAAhB,SAA0CH,KAC1C,SAACkC,EAAA,EAAD,CAAgBC,KAAMI,OAEvBF,IAAQ,SAACM,EAAA,EAAD,CAAUC,oBAAqBH,OAK9C,I,mGCpCO,SAASI,GAAmB,QAAEC,EAAF,MAAWhC,IAC5C,MAAM,KAAEiC,IAASC,EAAAA,EAAAA,OACVC,EAAoBC,EAAsBC,EAAaC,EAAWC,IAAUC,EAAAA,EAAAA,MAC7EC,GACHN,IAAuBO,EAAAA,GAAAA,cAAmCP,IAAuBO,EAAAA,GAAAA,WACjFL,EACGM,EAAeR,IAAuBO,EAAAA,GAAAA,UAA+BL,EAE3E,OACE,gCACGD,IACC,SAACQ,EAAA,EAAD,CACEC,QAASZ,EAAKa,EACZ,gLAEFzD,UAAU,SAIboD,IACC,SAACM,EAAA,GAAD,CAAQ/C,MAAOA,EAAOgD,QAASV,EAAWjD,UAAU,OAApD,SACG4C,EAAKa,EAAE,wBAIXH,GAAgBM,EAAAA,aAAmBjB,EAAQO,GAAS,CAAEvC,MAAAA,OAKtD,SAASkD,GAAmB,SAAE9D,EAAF,MAAY+D,EAAZ,MAAmBC,EAAnB,OAA0BC,EAA1B,MAAkCrD,IACnE,MAAM,KAAEiC,IAASC,EAAAA,EAAAA,OACX,QAAEoB,IAAYC,EAAAA,EAAAA,MACbC,EAAeC,IAAWC,EAAAA,EAAAA,KAC/BC,EAAAA,EAAAA,GAAeR,EAAOC,GACtBE,GAAWM,EAAAA,GAAiBN,IAW9B,OAPEA,GACAF,GACAA,EAAMS,UAAYC,EAAAA,GAAgBR,IAClCD,GACAF,IACCK,IAAkBO,EAAAA,GAAAA,cAA8BP,IAAkBO,EAAAA,GAAAA,UAGnE,SAAChB,EAAA,GAAD,CAAQ/C,MAAOA,EAAOgD,QAASS,EAASpE,UAAU,OAAlD,UACE,UAAC2E,EAAA,EAAD,WACG/B,EAAKa,EAAE,gBADV,IACwBM,EAAMa,YAIhChB,EAAAA,aAAmB7D,EAAU,CAAEY,MAAAA,IClE5B,MAAMkE,EAMXC,YAAYC,EAAiBvB,EAAiBwB,GAAW,EAAOC,IAAc,sBALrE,IAKqE,sBAJpE,KAIoE,wBAHnE,IAGmE,sBAFpDC,GAGxBC,KAAKJ,OAASA,EACdI,KAAK3B,QAAUA,EACf2B,KAAKH,SAAWA,EAChBG,KAAKF,GAAKA,GAIP,MAAMG,UAAiBC,MACpBC,KAAKC,GACPA,EAAQR,OACVI,KAAKK,KAAKD,GAENA,EAAQN,IACVE,KAAKG,KAAKC,EAAQN,IAKxBQ,IAAIV,EAAiBvB,EAAiBwB,GAAW,EAAOC,GAEtD,OADAE,KAAKG,KAAK,IAAIT,EAAQE,EAAQvB,EAASwB,EAAUC,IAC1CE,KAGTO,WAAWX,EAAiBvB,EAAiByB,GAE3C,OADAE,KAAKG,KAAK,IAAIT,EAAQE,EAAQvB,GAAS,EAAOyB,IACvCE,KAGTQ,SAASZ,EAAiBvB,EAAiByB,GAEzC,OADAE,KAAKG,KAAK,IAAIT,EAAQE,EAAQvB,GAAS,EAAMyB,IACtCE,KAGC,aACR,OAAOA,KAAKS,MAAML,GAAYA,EAAQP,Y,sFCzC1C,SAASa,IAA2Q,OAA9PA,EAAWC,OAAOC,QAAU,SAAU9E,GAAU,IAAK,IAAI+E,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQnF,EAAOmF,GAAOD,EAAOC,IAAY,OAAOnF,IAA2BuF,MAAMrB,KAAMc,WAEhT,SAASQ,EAAyBN,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE/E,EAEzF,SAAuCkF,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D/E,EAAS,GAAQ0F,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAanF,EAAOmF,GAAOD,EAAOC,IAAQ,OAAOnF,EAFxM6F,CAA8BX,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgBnF,EAAOmF,GAAOD,EAAOC,IAAU,OAAOnF,EAMne,IAAIiG,GAAiB,IAAAC,aAAW,SAAUC,EAAMC,GAC9C,IAAIC,EAAaF,EAAKzG,MAClBA,OAAuB,IAAf2G,EAAwB,eAAiBA,EACjDC,EAAYH,EAAKI,KACjBA,OAAqB,IAAdD,EAAuB,GAAKA,EACnC1G,EAAO4F,EAAyBW,EAAM,CAAC,QAAS,SAEpD,OAAoB,gBAAoB,MAAOvB,EAAS,CACtDwB,IAAKA,EACLI,MAAO,6BACPC,MAAOF,EACPG,OAAQH,EACRI,QAAS,YACTC,KAAM,OACNC,OAAQnH,EACRoH,YAAa,IACbC,cAAe,QACfC,eAAgB,SACfpH,GAAoB,gBAAoB,OAAQ,CACjDqH,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,OACW,gBAAoB,WAAY,CAC/CC,OAAQ,wBAGZpB,EAAeqB,UAAY,CACzB5H,MAAO,WACP6G,KAAM,cAAoB,CAAC,WAAkB,cAE/CN,EAAesB,YAAc,iBAC7B,Q,iCCZe,SAASC,GAAiB,MACvC9H,EAAQ,OAD+B,MAEvCoD,EAFuC,MAGvCD,EAHuC,SAIvC4E,EAJuC,uBAMvCC,EAAyB,OANc,cAOvCC,EAAgB,GAPuB,SAQvCC,EARuC,YASvCC,EATuC,SAWvCC,EAAW,MAX4B,IAYvCC,EAZuC,OAavCC,GAAS,EAb8B,UAcvCC,EAduC,QAevCC,GAAU,EAf6B,SAgBvCtH,GAAW,EAhB4B,eAiBvCuH,GAAiB,IAEjB,OACE,iCACE,iBAAKpJ,UAAU,yCAAf,WACE,iBAAKA,UAAU,6CAAf,WACE,0BAC6B,QAA1B2I,GACC,SAAC,EAAD,CAAgBnB,KAAK,OAAOvH,MAAO,CAAEoJ,QAAS,aAE9C,SAAC,IAAD,CAAc7B,KAAK,OAAOvH,MAAO,CAAEoJ,QAAS,eAGhD,iBAAMrJ,UAAU,OAAhB,SAAwB4I,KACxB,2BACE,SAAClF,EAAA,GAAD,CACE4F,QAAQ,WACR9B,KAAK,KACL7G,MAAOA,EACPX,UAAW,qDAAuDW,EAClEgD,QAAS,KACPmF,GAAaD,IAEfhH,SAAUuH,EARZ,SAUGP,EAAW,WAAa,iBAI/B,iBAAK7I,UAAU,sCAAsCC,MAAO,CAAEoJ,QAAS,SAAUE,OAAQ,WAAzF,UACGR,EADH,KACcS,EAAAA,EAAAA,IAAaR,EAAIS,QAAQ1F,EAAM2F,UAAUC,kBAIzD,iBAAK3J,UAAU,yCAAf,WACE,SAAC4J,EAAA,UAAD,CACE5J,UACE,+IACAW,EAEFmD,MAAOA,EACP+F,YAAanB,EACboB,QAAS,KACHb,GACFP,EAAS,IAEPQ,GACFA,GAAU,IAGdrH,SAAUA,IAEXsH,GAAWH,EAAItH,GAAG,KACjB,SAACgC,EAAA,GAAD,CACE4F,QAAQ,WACR9B,KAAK,KACL7G,MAAOA,EACPgD,QAAS,KACHuF,EACFA,GAAU,GAEVR,EAASM,EAAIS,QAAQ1F,EAAM2F,UAAUC,YAGzC3J,UAAW,0CAA4CW,EAXzD,uB,0BCNV,MAlFA,UAAqB,MACnB0B,EADmB,gBAEnBC,IAIC,QACD,MAAM,KAAEM,IAASC,EAAAA,EAAAA,MAEXkH,EAAYC,QAAQ3H,GAASA,EAAM4H,MAAMC,KAAKhE,OAAS,IAEvD,cAAEiE,EAAF,YAAiBC,IAAgBC,EAAAA,EAAAA,UAAQ,KAC7C,IAAKhI,EAAO,MAAO,CAAE8H,mBAAejF,EAAWkF,iBAAalF,GAE5D,MAAMoF,GAAuBC,EAAAA,EAAAA,IAA4BlI,GACnD8H,EAAgB9H,EAAMmI,YAAYC,SAASH,GAEjD,MAAO,CAAEF,YADW/H,EAAM+H,YAAYM,SAASJ,GACzBH,cAAAA,KACrB,CAAC9H,IAEJ,OACE,iCACE,gBAAKrC,UAAU,6BAAf,yBACCqC,GACC,iBAAKrC,UAAU,YAAf,WACE,iBAAKA,UAAU,oCAAf,WACE,iBAAKA,UAAU,yBAAf,UACG4C,EAAKa,EAAE,0BACR,SAAC1B,EAAA,EAAD,CACEC,KAAMY,EAAKa,EACT,mHAIN,gBAAKzD,UAAU,UAAf,uCACMqC,EAAMsI,iBAAiBrI,UAD7B,aACM,EAAyCsI,cAAc,GAD7D,YACmEvI,EAAMwI,aAAaC,SAASlG,eAD/F,QAEI,UAGN,iBAAK5E,UAAU,oCAAf,WACE,iBAAKA,UAAU,yBAAf,UACG4C,EAAKa,EAAE,sBACR,SAAC1B,EAAA,EAAD,CACEC,KAAMY,EAAKa,EAAE,6FAGjB,gBAAKzD,UAAU,UAAf,UACE,SAAC+K,EAAA,EAAD,CAAsBX,YAAaA,UAGvC,iBAAKpK,UAAU,oCAAf,WACE,iBAAKA,UAAU,yBAAf,oCAEE,SAAC+B,EAAA,EAAD,CACEC,KAAMY,EAAKa,EAAE,mGAGjB,gBAAKzD,UAAU,UAAf,SACGmK,EAAgB,GAAH,OAAMA,EAAcS,cAAc,GAAlC,YAAwCvI,EAAMmI,YAAYM,SAASlG,QAAW,SAG/FmF,IACC,iBAAK/J,UAAU,oCAAf,WACE,iBAAKA,UAAU,yBAAf,UACG4C,EAAKa,EAAE,eACR,SAAC1B,EAAA,EAAD,CACEC,KAAMY,EAAKa,EAAE,sFAGjB,gBAAKzD,UAAU,UAAf,UACE,SAACgL,EAAA,EAAD,CAAW3I,MAAOA,aAM1B,gBAAKrC,UAAU,8BAAf,SAA8C4C,EAAKa,EAAE,4C,WCjFtD,IAAKwH,G,SAAAA,GAAAA,EAAAA,EAAAA,MAAAA,GAAAA,OAAAA,EAAAA,EAAAA,KAAAA,GAAAA,OAAAA,EAAAA,EAAAA,GAAAA,GAAAA,K,CAAAA,IAAAA,EAAAA,KAaL,MAAMC,UAA0B7F,MAC9BI,IAAI0F,EAAcC,EAAcC,EAAYC,GAOjD,OANAnG,KAAKK,KAAK,CACR2F,KAAMA,EACNC,KAAMA,EACNC,GAAIA,EACJC,UAAWA,IAENnG,KAGFoG,eAAeJ,EAAcC,EAAiBC,EAAetH,GAOlE,OANAoB,KAAKM,IACH0F,GACA3B,EAAAA,EAAAA,IAAa4B,EAAK3B,QAAQ1F,EAAM2F,UAAUC,WAAa,IAAM5F,EAAM2F,UAAU9E,QAC7E4E,EAAAA,EAAAA,IAAa6B,EAAG5B,QAAQ1F,EAAM2F,UAAUC,WAAa,IAAM5F,EAAM2F,UAAU9E,OAC3EwG,EAAKI,GAAGH,GAAMJ,EAAUQ,KAAOL,EAAKxJ,GAAGyJ,GAAMJ,EAAUS,GAAKT,EAAUU,MAEjExG,KAGFyG,OAAOT,EAAcC,EAAiBC,EAAetH,GAO1D,OANAoB,KAAKM,IACH0F,GACA3B,EAAAA,EAAAA,KAAaqC,EAAAA,EAAAA,IAAaT,EAAMrH,IAAQ,IACxCyF,EAAAA,EAAAA,KAAaqC,EAAAA,EAAAA,IAAaR,EAAItH,IAAQ,GACtCqH,EAAKI,GAAGH,GAAMJ,EAAUQ,KAAOL,EAAKxJ,GAAGyJ,GAAMJ,EAAUS,GAAKT,EAAUU,MAEjExG,KAGF2G,cAAcX,EAAcC,EAAiBC,GAOlD,OANAlG,KAAKM,IACH0F,GACAY,EAAAA,EAAAA,IAAcX,EAAK3B,QAAQ,MAC3BsC,EAAAA,EAAAA,IAAcV,EAAG5B,QAAQ,KACzB2B,EAAKI,GAAGH,GAAMJ,EAAUQ,KAAOL,EAAKxJ,GAAGyJ,GAAMJ,EAAUS,GAAKT,EAAUU,MAEjExG,KAGF6G,QAAQb,EAAcC,EAAiBC,EAAejK,GAO3D,OANA+D,KAAKM,IACH0F,GACA3B,EAAAA,EAAAA,IAAa4B,EAAK3B,QAAQ,GAAKrI,EAAK6K,WAAWvC,UAAUC,SAAWvI,EAAK8K,MAAMxC,UAAUC,YACzFH,EAAAA,EAAAA,IAAa6B,EAAG5B,QAAQ,GAAKrI,EAAK6K,WAAWvC,UAAUC,SAAWvI,EAAK8K,MAAMxC,UAAUC,WACvFyB,EAAKI,GAAGH,GAAMJ,EAAUQ,KAAOL,EAAKxJ,GAAGyJ,GAAMJ,EAAUS,GAAKT,EAAUU,MAEjExG,MClEX,SAAS,IAA2Q,OAA9P,EAAWW,OAAOC,QAAU,SAAU9E,GAAU,IAAK,IAAI+E,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQnF,EAAOmF,GAAOD,EAAOC,IAAY,OAAOnF,IAA2BuF,MAAMrB,KAAMc,WAEhT,SAAS,EAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE/E,EAEzF,SAAuCkF,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D/E,EAAS,GAAQ0F,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAanF,EAAOmF,GAAOD,EAAOC,IAAQ,OAAOnF,EAFxM,CAA8BkF,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgBnF,EAAOmF,GAAOD,EAAOC,IAAU,OAAOnF,EAMne,IAAIkL,GAAa,IAAAhF,aAAW,SAAUC,EAAMC,GAC1C,IAAIC,EAAaF,EAAKzG,MAClBA,OAAuB,IAAf2G,EAAwB,eAAiBA,EACjDC,EAAYH,EAAKI,KACjBA,OAAqB,IAAdD,EAAuB,GAAKA,EACnC1G,EAAO,EAAyBuG,EAAM,CAAC,QAAS,SAEpD,OAAoB,gBAAoB,MAAO,EAAS,CACtDC,IAAKA,EACLI,MAAO,6BACPC,MAAOF,EACPG,OAAQH,EACRI,QAAS,YACTC,KAAM,OACNC,OAAQnH,EACRoH,YAAa,IACbC,cAAe,QACfC,eAAgB,SACfpH,GAAoB,gBAAoB,OAAQ,CACjDqH,GAAI,IACJC,GAAI,KACJC,GAAI,KACJC,GAAI,OACW,gBAAoB,WAAY,CAC/CC,OAAQ,yBAGZ6D,EAAW5D,UAAY,CACrB5H,MAAO,WACP6G,KAAM,cAAoB,CAAC,WAAkB,cAE/C2E,EAAW3D,YAAc,aACzB,SCgBA,OAnDA,UAA+B,kBAAE4D,IAC/B,OACE,8BACGA,GAAqBA,EAAkBlG,OAAS,IAC/C,iBAAKlG,UAAU,YAAf,WACE,gBAAKA,UAAU,6BAAf,gCACCoM,EAAkBC,KAAI,CAACC,EAAMtG,KAE1B,iBAAKhG,UAAU,oCAAf,WACE,iBAAKA,UAAU,yBAAf,UAAyCsM,EAAKnB,KAA9C,QACA,iBAAKnL,UAAU,UAAf,UACGsM,EAAKlB,KACLkB,EAAKhB,YAAcL,EAAUQ,MAC5B,SAAC,GAAD,CACEjE,KAAK,OACLvH,MAAO,CACLoJ,QAAS,SACTkD,YAAa,MACbC,WAAY,SAGdF,EAAKhB,YAAcL,EAAUS,IAC/B,SAAC,IAAD,CACElE,KAAK,OACLvH,MAAO,CACLoJ,QAAS,SACTkD,YAAa,MACbC,WAAY,UAIhB,SAAC,EAAD,CACEhF,KAAK,OACLvH,MAAO,CACLoJ,QAAS,SACTkD,YAAa,MACbC,WAAY,SAIjBF,EAAKjB,QAhC8CrF,WCCtE,OAVA,UAAsB,SAAEyG,IACtB,OACE,8BACGA,EAASJ,KAAI,CAAC9G,EAASS,KACtB,SAACzC,EAAA,EAAD,CAAezC,KAAMyE,EAAQP,SAAW,QAAU,UAAWxB,QAAS+B,EAAQ/B,QAASxD,UAAU,QAArFgG,Q,4DCwBpB,MAAM0G,GAAoC,IAAIC,EAAAA,GAAQ,GAAI,KAE3C,SAASC,IAAO,KAAExL,IAC/B,MAAM,QAAEyL,EAAF,QAAW5I,IAAYC,EAAAA,EAAAA,KACvB4I,GAAOC,EAAAA,GAAAA,OAGP,EAACC,EAAD,EAAqBC,IAAyBC,EAAAA,EAAAA,UAAkB9L,EAAK6K,WAAWkB,aAAazL,GAAG,KAChG,EAAC0L,EAAD,EAAiBC,IAAqBH,EAAAA,EAAAA,WAAkB,IACxD,EAACI,EAAD,EAAkBC,IAAsBL,EAAAA,EAAAA,UAAS,KACjD,EAACM,EAAD,EAAcC,IAAkBP,EAAAA,EAAAA,UAAS,KACzC,EAACQ,EAAD,EAAkBC,IAAsBT,EAAAA,EAAAA,UAAS,KACjD,EAAC7L,EAAD,EAAeC,IAAmB4L,EAAAA,EAAAA,WAAS,IAC3C,EAAChL,EAAD,EAAOC,IAAW+K,EAAAA,EAAAA,WAAS,GAE3BU,GAAaC,EAAAA,GAAAA,IAAYzM,EAAK8K,MAAM1H,eAAYU,EAChD4I,GAAkBD,EAAAA,GAAAA,IAAYzM,EAAK6K,WAAWzH,eAAYU,EAG1D6I,EAAcC,EAAAA,GAAQ/J,GAAW,GAAGO,UAAYpD,EAAK6K,WAAWzH,QAEhEyJ,EAAoBjB,EACtB5L,EAAK6K,WAAWkB,aAChBY,EAAW,OACXjB,QADW,IACXA,OADW,EACXA,EAAMoB,WACN9M,EAAK6K,WAAWkC,QAEd3M,GAAsBJ,EAAKK,oBAAoBC,GAAG,IAAKL,EAKvDiB,GAAkB8L,EAAAA,EAAAA,IAAoC1B,IAEtD2B,GAAe/J,EAAAA,EAAAA,GAAekJ,EAAaI,GAE3CU,GAAaC,EAAAA,GAAAA,GAAkBF,EAAcP,IAE7C,cAAE3D,EAAF,YAAiBC,IAAgBC,EAAAA,EAAAA,UAAQ,KAC7C,IAAKiE,EAAY,MAAO,CAAEnE,mBAAejF,EAAWkF,iBAAalF,GAEjE,MAAMoF,GAAuBC,EAAAA,EAAAA,IAA4B+D,GACnDnE,EAAgBmE,EAAW9D,YAAYC,SAASH,GAEtD,MAAO,CAAEF,YADWkE,EAAWlE,YAAYM,SAASJ,GAC9BH,cAAAA,KACrB,CAACmE,IAEEE,EACJtM,GAAQoM,EAAaG,EAAAA,GAAAA,KAAeH,EAAW3D,iBAAiBrI,GAAiBoM,SAASC,YAAcC,EAAAA,GAQpGC,EAAiBvB,EAAgBwB,YAAY1N,EAAK6K,WAAWvC,UAAUC,UAEvEoF,EAA0B3N,EAAK4N,qBAAqBlL,MACvD2B,IAAI6H,EAAgBwB,YAAY1N,EAAK6K,WAAWvC,UAAUC,WAC1DlE,IAAI+I,GAGDS,EAA0BF,EAAwBG,QAAOC,EAAAA,EAAAA,IAAI,IAAIC,IAAI,MAAOhO,EAAKO,oBAEjF0N,EAAwBN,EAAwBG,QAAOC,EAAAA,EAAAA,IAAI,IAAIC,IAAI,MAAOhO,EAAKkO,kBAE/EC,GAA0BR,EAAwBG,QACtDC,EAAAA,EAAAA,IAAI,IAAIC,IAAI,MACZ5N,EAAsBJ,EAAKO,mBAAqBP,EAAKK,qBAGjD+N,IAAuBC,EAAAA,EAAAA,IAAQR,EAAyBI,EAAuBE,IAE/EG,GAAoBF,GAAqBN,OAAO,KAAM,OAAOS,IAAIvO,EAAKwO,wBAAwB9L,OAE9F+L,IAAwBC,EAAAA,EAAAA,KAAQL,EAAAA,EAAAA,IAAQC,GAAmBtO,EAAK2O,mBAAoBnB,EAAAA,IAIpFoB,IAFYH,GAAsBpG,QAAQrI,EAAK8K,MAAMxC,UAAUC,UAE7CvI,EAAKwO,wBAAwB9L,MAAM2B,IAAI+H,EAAYsB,YAAY1N,EAAK8K,MAAMxC,UAAUC,YACtGsG,GAAaD,GAAgBd,OAAO,sBAAuBM,IAE3DU,IAAsB5C,EAAgBwB,YAAY1N,EAAK6K,WAAWvC,UAAUC,UAAU7H,SAEtFqO,IAAkB3C,EAAYsB,YAAY1N,EAAK8K,MAAMxC,UAAUC,UAAU7H,SAEzEO,GAAQH,GAAQiO,GAAiB7B,OAAapJ,GAE7CkL,KAAgBC,EAAAA,EAAAA,MAIjBC,IAAsBC,EAAAA,EAAAA,IAAgBnG,GAEtCoG,GAAehD,EAAYsB,YAAY1N,EAAK8K,MAAMxC,UAAUC,UAE5D8G,GAAqB,IAAIrL,EAE/BqL,GAAmBhL,IAAnB,OACEwI,QADF,IACEA,OADF,EACEA,EAAmBrM,GAAG0L,EAAgBwB,YAAY1N,EAAK6K,WAAWvC,UAAUC,WAD9E,gCAGIqD,EAAqB,WAAa,SAHtC,0DAKE,GAGF,MAAM0D,IAAiB,IAAItL,GACxBK,IACC+J,GAAqB5N,GAAGR,EAAKwO,wBAAwB9L,OACrD,0GACA,EACA,IAAIe,EACF6K,GAAkB9N,GAAG,GACrB,sFACA,EACA,IAAIiD,EACF2I,EAAYtH,OAAS,GAAKsK,GAAa9O,GAAG8N,GAAqBG,IAAIvO,EAAKwO,wBAAwB9L,QAChG,2DACA,EACA,IAAIe,EACF2I,EAAYtH,OAAS,GAAKsK,GAAa9O,GAAGgO,IAC1C,wFACA,MAKPjK,IACC+H,EAAYtH,OAAS,GAAK9E,EAAK2O,kBAAkBnO,GAAG4L,EAAYsB,YAAY1N,EAAK8K,MAAMxC,UAAUC,WACjG,sCACA,GAkBEyC,GAAoB,IAAIlB,GACzBoC,IAAmBE,GAAiBiD,GAAmBE,QAAYD,GAAeC,QAAWnD,IAC5F0C,KACF9D,GAAkBb,eAChB,aACAnK,EAAK4N,qBAAqBlL,MAC1BiL,EACA3N,EAAK6K,YAEPG,GAAkBR,OAChB,iBACAxK,EAAK4N,qBAAqBlL,MAC1BiL,EACA3N,EAAK6K,aAGLkE,KACF/D,GAAkBb,eAAe,WAAYnK,EAAKwO,wBAAwB9L,MAAOkM,GAAiB5O,EAAK8K,OACvGE,GAAkBR,OAAO,eAAgBxK,EAAKwO,wBAAwB9L,MAAOkM,GAAiB5O,EAAK8K,QAEjG1K,GACF4K,GAAkBJ,QAAQ,gBAAiB5K,EAAKK,oBAAqBL,EAAKO,mBAAoBP,GAEhGgL,GAAkBb,eAChB,eACAnK,EAAKwP,cAAcC,KAAK/M,MACxB4L,GAAkBC,IAAInC,EAAYsB,YAAY1N,EAAK8K,MAAMxC,UAAUC,WACnEvI,EAAK8K,OAEPE,GAAkBN,cAAc,aAAc1K,EAAK0P,OAAOhN,MAAOmM,IACjE7D,GAAkBN,cAAc,aAAc1K,EAAK2P,gBAAgBjN,MAAO1C,EAAK4P,uBAAuBlN,QAGxG,IAAImN,GAAa,gBAEbf,GAEAe,GADEd,GACW9N,GAAQ,kCAAoC,4BAE5C,iBAEN8N,KACTc,GAAa5O,GAAQ,qCAAuC,UAG1DH,GAAQoO,GAAsB,IAAMF,GACtCa,GAAa,oBACJ/O,GAAQoO,GAAsB,IACvCW,IAA0B,WAG5B,MAAMC,GACH5D,EAAgBwB,YAAY1N,EAAK6K,WAAWvC,UAAUC,UAAUwH,IAAI,IACnE3D,EAAYsB,YAAY1N,EAAK8K,MAAMxC,UAAUC,UAAUwH,IAAI,IAC7DV,GAAmBE,QAClBnD,EAAYtH,OAAS,GAAKwK,GAAeC,QACzCzO,GAAQoO,GAAsB,IAAMF,IACpChP,EAAK4N,qBAAqBlL,MAAMhC,WAAaoO,GAGhDkB,eAAeC,GAAUC,GACvB,IAAIC,EAAU,GAiBd,GAfIpB,KACE3O,GACF8P,EAAOE,oBAAmB,EAAM5C,EAAAA,GAAMA,EAAAA,IAGpC1M,IAAS8K,GACXsE,EAAOG,uBAAuBnE,EAAgBwB,YAAY1N,EAAK6K,WAAWvC,UAAUC,WAGtF2H,EAAOI,OACLlE,EAAYsB,YAAY1N,EAAK8K,MAAMxC,UAAUC,UAC7CzH,GAAQkL,EACRlL,EAAOyP,EAAAA,GAA+B1N,GAAW,GAAK,KAGtDkM,IAAkB9N,GAAO,CAC3B,MAAM6H,EAAO7H,GAAM4H,MAAMC,KAAKmC,KAAKtI,GAAUA,EAAMS,WAAY,GAE/D,GAAI0F,EAAKhE,OAAS,EAChB,KAAM,gBAGR0L,QAAQC,IAAI,QAAS,CACnBzQ,EAAK8K,MAAM1H,QACXpD,EAAK6K,WAAWzH,QAChBgK,EACAtE,EAAKhE,OAAS,EAAIgE,EAAK,GAAK4H,EAAAA,EAC5B5H,EAAKhE,OAAS,EAAIgE,EAAK,GAAK4H,EAAAA,EAC5BjF,GACAkF,EAAAA,GAAAA,GAAQ3Q,EAAK6K,WAAYqB,EAAgBwB,YAAY1N,EAAK6K,WAAWvC,UAAUC,WAC/E6D,EAAYsB,YAAY1N,EAAK8K,MAAMxC,UAAUC,YAG/C,MAAMqI,EAAOC,GAAAA,EAAAA,OACX,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACnE,CACE7Q,EAAK8K,MAAM1H,QACXpD,EAAK6K,WAAWzH,QAChBgK,EACAtE,EAAKhE,OAAS,EAAIgE,EAAK,GAAK4H,EAAAA,EAC5B5H,EAAKhE,OAAS,EAAIgE,EAAK,GAAK4H,EAAAA,EAC5BjF,GACAkF,EAAAA,GAAAA,GAAQ3Q,EAAK6K,WAAYqB,EAAgBwB,YAAY1N,EAAK6K,WAAWvC,UAAUC,aAInF2H,EAAOY,OACLP,EAAAA,GAA+B1N,GAAW,GAC1C2K,EAAAA,IACAuD,EAAAA,EAAAA,IAAU,EAACC,EAAAA,EAAAA,IAAQ,cAAeJ,KAClC,GACA,EACA,GAoBJ,OAjBI9B,IACFoB,EAAOe,cACLnQ,EAAOuM,EAAAA,GAAAA,MAAgB,GAAKnB,EAAgBwB,YAAY1N,EAAK6K,WAAWvC,UAAUC,UAClFqD,GAAsB9K,GAItBgO,GAEAqB,EADEpB,GACQ9N,GAAQ,kCAAoC,4BAE5C,iBAEH8N,KACToB,EAAUlP,GAAQ,qCAAuC,UAGpDkP,EA+BT,OACE,iCACE,iBAAKvR,UAAU,wCAAf,oBAA+DoB,EAAK8K,MAAMxC,UAAU9E,WAEpF,SAAC6D,EAAD,CACE9H,MAAM,OACNoD,MAAO3C,EAAK6K,WACZnI,MAAOwJ,EACP5E,SAAU6E,EACV5E,uBAAuB,OACvBC,cAAa,cAASxH,EAAK6K,WAAWvC,UAAU9E,OAAnC,oBACbiE,SAAUmE,EACVlE,YAAamE,EACblE,SAAS,UACTC,IAAKiF,EACL9E,SAAS,KAGX,SAACV,EAAD,CACE9H,MAAM,OACNoD,MAAO3C,EAAK8K,MACZpI,MAAO0J,EACP9E,SAAU+E,EACV9E,uBAAuB,KACvBC,cAAa,iBAAYxH,EAAK8K,MAAMxC,UAAU9E,OAAjC,OACbiE,SAAUuE,EACVtE,YAAauE,EACbtE,SAAS,MACTC,IAAK6G,KAGNK,KACC,SAACjO,EAAD,CACEI,MAAOA,GACP1B,MAAM,OACNuB,KAAMA,EACNC,QAASA,EACTtC,MAAK,wBAAmBuB,EAAK8K,MAAMxC,UAAU9E,OAAxC,gBAAsDxD,EAAK6K,WAAWvC,UAAU9E,OAAhF,eACLxC,KAAK,gIAIR+N,KACC,SAAChP,EAAD,CACER,MAAM,OACNS,KAAMA,EACNC,aAAcA,EACdC,gBAAiBA,EACjBC,iBAAiB,OAIpB2O,KACC,+BACE,gBAAKlQ,UAAU,OAAf,SACG,CAAC,OAAQ,MAAO,OAAQ,IAAK,OAAQ,MAAO,OAAQ,OAAOqM,KAAI,CAACiG,EAAWtM,KAC1E,UAACtC,EAAA,GAAD,CACE4F,QAAQ,WACR9B,KAAK,KACL7G,MAAM,OAENgD,QAAS,MAzFvB,SAAoB4O,GAClB,MAOMC,EAPuB3D,EAAepJ,IAC1CoJ,EAAeK,OACbqD,EAAWzD,YAAY1N,EAAK6K,WAAWvC,UAAUC,UACjD,IAAImF,YAAY1N,EAAK6K,WAAWvC,UAAUC,YAIAuF,QAAOC,EAAAA,EAAAA,IAAI,IAAIC,IAAI,MAAOhO,EAAKK,qBAiB7EgM,EAAe+E,EAAiB/I,QAAQrI,EAAK8K,MAAMxC,UAAUC,WAiE/C8I,CAAWH,GACXnQ,GAAQ,IAEVnC,UAAU,+BATZ,UAWGsS,EAXH,MAIOtM,UAgCf,SAAC,GAAD,CAAcyG,SAAUgE,MAExB,SAAC,GAAD,CAAchE,SAAUiE,KAEvBxO,GAAQG,KAAS,SAAC,EAAD,CAAaA,MAAOA,GAAOC,gBAAiBA,KAE5D4N,IACCC,KAAmB/O,EAAK4N,qBAAqBlL,MAAMhC,UACnDI,IAASoO,GAAsB,GAAKF,OACrC,SAAC,GAAD,CAAuBhE,kBAAmBA,MAG5C,SAAC1J,EAAD,CACE/B,MAAM,OACNgC,QAAUO,IACR,SAACW,EAAD,CAAoBC,MAAOwJ,EAAiBvJ,MAAO+J,EAAiB9J,QAASgJ,EAA7E,UACE,SAACtJ,EAAA,GAAD,CAAQC,QAAS,IAAMT,EAAO9B,EAAMiQ,IAAYxP,SAAUqP,GAA1D,SACGD,YC/Zf,MAAMyB,GAAyC,IAAI/F,EAAAA,GAAQ,EAAG,KAE/C,SAASgG,IAAM,KAAEvR,IAC9B,MAAM,QAAEyL,EAAF,QAAW5I,IAAYC,EAAAA,EAAAA,KACvB4I,GAAOC,EAAAA,GAAAA,OAGP,EAAC6F,EAAD,EAAgBC,IAAoB3F,EAAAA,EAAAA,UAAkB9L,EAAK8K,MAAMiB,aAAazL,GAAG,KACjF,EAACoR,EAAD,EAAiBC,IAA+B7F,EAAAA,EAAAA,WAAkB,IAElE,EAAC8F,EAAD,EAAaC,IAAsB/F,EAAAA,EAAAA,UAAS,KAC5C,EAACgG,EAAD,EAAcC,IAA4BjG,EAAAA,EAAAA,UAAS,KACnD,EAACkG,EAAD,EAAeC,IAAmBnG,EAAAA,EAAAA,WAAS,IAC3C,EAACoG,EAAD,EAAcC,IAAkBrG,EAAAA,EAAAA,WAAS,IACzC,EAAC7L,EAAD,EAAeC,IAAmB4L,EAAAA,EAAAA,WAAS,IAC3C,EAAChL,EAAD,EAAOC,IAAW+K,EAAAA,EAAAA,WAAS,GAE3BU,GAAaC,EAAAA,GAAAA,IAAYzM,EAAK8K,MAAM1H,eAAYU,EAChD4I,GAAkBD,EAAAA,GAAAA,IAAYzM,EAAK6K,WAAWzH,eAAYU,EAG1D6I,EAAcC,EAAAA,GAAQ/J,GAAW,GAAGO,UAAYpD,EAAK8K,MAAM1H,QAE3D2J,EAAUyE,GACZY,EAAAA,GAAAA,GAASpS,EAAK8K,MAAO9K,EAAK8K,MAAMiB,cAChCY,EAAW,OACXjB,QADW,IACXA,OADW,EACXA,EAAMoB,WACN9M,EAAK8K,MAAMiC,QAET3M,GAAsBJ,EAAKK,oBAAoBC,GAAG,IAAKL,EAEvDoS,EAAoBH,GACtB7D,EAAAA,EAAAA,IAAQrO,EAAKwO,wBAAwB9L,MAAOqK,GAAS1E,QAAQrI,EAAK8K,MAAMxC,UAAUC,UAClFqJ,EAEEU,EAAuBtS,EAAKwO,wBAAwB9L,MAAM6L,IAC9D8D,EAAkB3E,YAAY1N,EAAK8K,MAAMxC,UAAUC,WAG/CgK,EAA0BD,EAAqBxE,OAAO9N,EAAKO,oBAAoBwN,EAAAA,EAAAA,IAAI,IAAIC,IAAI,OAC3FwE,EAAwBF,EAAqBxE,OAAO9N,EAAKkO,kBAAkBH,EAAAA,EAAAA,IAAI,IAAIC,IAAI,OACvFyE,EAA0BH,EAAqBxE,OACnD1N,EAAsBJ,EAAKO,mBAAqBP,EAAKK,qBACrD0N,EAAAA,EAAAA,IAAI,IAAIC,IAAI,OAER0E,GAA2BhE,EAAAA,EAAAA,IAAQ6D,EAAyBC,EAAuBC,GACnFE,GAA0BjE,EAAAA,EAAAA,IAC9B1O,EAAK4N,qBAAqBlL,MAAM6L,IAAImE,EAAyB1E,IAAI,KAAK4E,IAAI,KAC1EpF,EAAAA,IAEIqF,EAAsBF,EAAwBtK,QAAQrI,EAAK6K,WAAWvC,UAAUC,UAEhFuK,GAAqBd,EAAea,EAAsBf,EAI1D5Q,IAAkB8L,EAAAA,EAAAA,IAAoCsE,IAEtDrE,IAAe/J,EAAAA,EAAAA,GAAelD,EAAKwO,wBAAwBuE,OAAQvG,GAEnEvL,IAAQ+R,EAAAA,GAAAA,GAAmBtG,EAAiBO,UAAiBnJ,GAE7D,cAAEiF,GAAF,YAAiBC,KAAgBC,EAAAA,EAAAA,UAAQ,KAC7C,IAAKhI,GAAO,MAAO,CAAE8H,mBAAejF,EAAWkF,iBAAalF,GAE5D,MAAMoF,GAAuBC,EAAAA,EAAAA,IAA4BlI,IACnD8H,EAAgB9H,GAAMmI,YAAYC,SAASH,GAEjD,MAAO,CAAEF,YADW/H,GAAM+H,YAAYM,SAASJ,GACzBH,cAAAA,KACrB,CAAC9H,KAQEgS,GACJnS,GAAQG,GACJA,GACGiS,gBAAgBhS,IAChBmH,QAAQrI,EAAK6K,WAAWvC,UAAUC,UAClCmF,YAAY1N,EAAK6K,WAAWvC,UAAUC,UACzCiF,EAAAA,GAIA2F,GAA2BnT,EAAK4N,qBAAqBlL,MAAM6L,IAC/DuE,GAAmBpF,YAAY1N,EAAK6K,WAAWvC,UAAUC,WAGrDsF,GAA0BsF,GAAyBrF,QAAOC,EAAAA,EAAAA,IAAI,IAAIC,IAAI,MAAOhO,EAAKO,oBAClF0N,GAAwBkF,GAAyBrF,QAAOC,EAAAA,EAAAA,IAAI,IAAIC,IAAI,MAAOhO,EAAKkO,kBAChFC,GAA0BgF,GAAyBrF,QACvDC,EAAAA,EAAAA,IAAI,IAAIC,IAAI,MACZ5N,EAAsBJ,EAAKO,mBAAqBP,EAAKK,qBAEjD+N,IAAuBC,EAAAA,EAAAA,IAAQR,GAAyBI,GAAuBE,IAC/EG,GAAoBF,GAAqBN,OAAO,KAAM,OAAOS,IAAIvO,EAAKwO,wBAAwB9L,OAG9FmM,KAFwBH,EAAAA,EAAAA,KAAQL,EAAAA,EAAAA,IAAQC,GAAmBtO,EAAK2O,mBAAoBnB,EAAAA,IAEvExN,EAAKwO,wBAAwB9L,MAC7C6L,IAAI8D,EAAkB3E,YAAY1N,EAAK8K,MAAMxC,UAAUC,WACvDuF,OAAOT,EAAAA,GAAAA,KAAe,uBAAwBe,KAE3CpD,GAAoB,IAAIlB,GAE1BuI,GAAqBS,MACvB9H,GAAkBb,eAChB,eACAnK,EAAKwP,cAAcC,KAAK/M,MACxB4L,GAAkBjK,IAAIgO,EAAkB3E,YAAY1N,EAAK8K,MAAMxC,UAAUC,WACzEvI,EAAK8K,OAEPE,GAAkBN,cAAc,SAAU1K,EAAK0P,OAAOhN,MAAOmM,KAG/D,MAAMxD,IAAW,IAAIrH,GAClBO,SACCoI,IAAgB6E,GAAiBU,EAFpB,+BAGWlS,EAAK8K,MAAMxC,UAAU9E,OAHhC,2DAGyFxD,EAAK8K,MAAMxC,UAAU9E,OAH9G,gKAKde,SACCuO,GAAmBpF,YAAY1N,EAAK6K,WAAWvC,UAAUC,UAAUjI,GAAGN,EAAK4N,qBAAqBlL,OAChG,kFAED6B,SACC8N,EAAkB3E,YAAY1N,EAAK8K,MAAMxC,UAAUC,UAAUjI,GAAGN,EAAKwO,wBAAwB9L,OAC7F,oFACA,IAAIe,EAAJ,OACEsJ,QADF,IACEA,OADF,EACEA,EAASvM,GAAG6R,EAAkB3E,YAAY1N,EAAK8K,MAAMxC,UAAUC,WADjE,gCAGIiJ,EAAgB,WAAa,SAHjC,wDAKE,IAGHjN,SACCuO,GACGpF,YAAY1N,EAAK6K,WAAWvC,UAAUC,UACtCjI,IAAGoO,EAAAA,EAAAA,IAAQ1O,EAAK4N,qBAAqBlL,MAAM6L,IAAImE,GAA2BlF,EAAAA,KAC7E,+DACA,IAAI/J,EACFqP,GAAmBpF,YAAY1N,EAAK6K,WAAWvC,UAAUC,UAAUjI,GAAGqS,GACtE,0EAIAS,IACHN,GAAmBpF,YAAY1N,EAAK6K,WAAWvC,UAAUC,UAAU7H,UACnEsR,GAAgBhS,EAAKqT,oBAAoB/S,GAAGkN,EAAAA,IAEzC8F,IAAiBjB,EAAkB3E,YAAY1N,EAAK8K,MAAMxC,UAAUC,UAAU7H,UAK7EsO,KAAgBC,EAAAA,EAAAA,MAIjBC,IAAsBC,EAAAA,EAAAA,IAAgBnG,IAE5C,IAAI6G,GAAa,gBAEbuD,GAEAvD,GADEyD,GACW,8BAEA,oBAENA,GACTzD,GAAa,QACJ/O,IACT+O,GAAa,mBAKf,MAAMC,IACFhP,IACCG,IACDoR,EAAkB3E,YAAY1N,EAAK8K,MAAMxC,UAAUC,UAAUwH,IAAI,IACjE+C,GAAmBpF,YAAY1N,EAAK6K,WAAWvC,UAAUC,UAAUwH,IAAI,MACrEiC,GAAgBhS,EAAKqT,oBAAoB3S,WAC7C2K,GAAS7G,MAAML,GAAYA,EAAQP,WAErC,SAAS2P,KACPpB,GAAe,GACfF,GAAgB,GAChBF,EAAyB,IACzBF,EAAmB,IAIrB7B,eAAeC,GAAUC,GACvB,IAAIC,EAAU,GAEd,GAAIrP,GAAQG,GAAO,EACH0P,EAAAA,GAAAA,GAAQ3Q,EAAK6K,WAAY7K,EAAK4N,qBAAqBlL,OAEjEwN,EAAOsD,iBAAiBxT,EAAKqT,qBAAqB,GAClDnD,EAAOuD,wBAAwBzT,EAAKqT,oBAAqBK,EAAAA,GAAsC7Q,GAAW,IAC1GqN,EAAOyD,WAAW3T,EAAK4T,gBAEvB,MAAM9K,EAAO7H,GAAM4H,MAAMC,KAAKmC,KAAKtI,GAAUA,EAAMS,WAAY,GAE/DoN,QAAQC,IAAI,QAAS,CACnBzQ,EAAK6K,WAAWzH,QAChBpD,EAAK8K,MAAM1H,QACX6P,GACAnK,EAAKhE,OAAS,EAAIgE,EAAK,GAAK4H,EAAAA,EAC5B5H,EAAKhE,OAAS,EAAIgE,EAAK,GAAK4H,EAAAA,EAC5BjF,EACAzL,EAAKqT,sBAGP,MAAMzC,EAAOC,GAAAA,EAAAA,OACX,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACnE,CACE7Q,EAAK6K,WAAWzH,QAChBpD,EAAK8K,MAAM1H,QACX6P,GACAnK,EAAKhE,OAAS,EAAIgE,EAAK,GAAK4H,EAAAA,EAC5B5H,EAAKhE,OAAS,EAAIgE,EAAK,GAAK4H,EAAAA,EAC5BjF,EACAzL,EAAKqT,sBAITnD,EAAOY,OACL4C,EAAAA,GAAsC7Q,GAAW,GACjD2K,EAAAA,IACAuD,EAAAA,EAAAA,IAAU,EAACC,EAAAA,EAAAA,IAAQ,cAAeJ,KAClC,GACA,EACA,GAGFV,EAAO2D,UAAU7T,EAAK4T,gBAAgB,GAEjClC,GACHxB,EAAO4D,wBAAwBtG,EAAAA,GAAMH,EAAAA,GAAAA,MAAgB,IAGvD8C,EAAU,iBASV,GAPI+B,GAAelS,EAAK4T,eAAetT,GAAG,IAAMyM,EAAQgH,IAAI/T,EAAKwO,wBAAwB9L,QACvFwN,EAAO2D,UAAU7T,EAAK4T,eAAgBpC,GACtCrB,EAAU,aACDkC,EAAkB3E,YAAY1N,EAAK8K,MAAMxC,UAAUC,UAAUjI,GAAG,KACzE4P,EAAO8D,MAAM3B,EAAkB3E,YAAY1N,EAAK8K,MAAMxC,UAAUC,UAAWiJ,GAC3ErB,EAAU,SAGV2C,GAAmBpF,YAAY1N,EAAK6K,WAAWvC,UAAUC,UAAUjI,GAAG,IACrE0R,GAAgBhS,EAAKqT,oBAAoB/S,GAAG,GAC7C,CACA,MAAM2T,EACJjC,IACCM,EAAqB5R,UACnBwR,GAAelS,EAAK4T,eAAetT,GAAG,IAAMyM,EAAQgH,IAAI/T,EAAKwO,wBAAwB9L,QACpF1C,EAAKqT,qBACL1C,EAAAA,GAAAA,GAAQ3Q,EAAK6K,WAAYiI,GAAmBpF,YAAY1N,EAAK6K,WAAWvC,UAAUC,WAExF2H,EAAOsD,iBAAiBS,EAAOvC,GAC/BvB,IAAYA,EAAU,QAAU,IAAM,oBAM1C,OAFAoD,KAEOpD,EAGT,OACE,iCACE,iBAAKvR,UAAU,wCAAf,mBAA8DoB,EAAK8K,MAAMxC,UAAU9E,WAEnF,SAAC6D,EAAD,CACE9H,MAAM,OACNoD,MAAO3C,EAAK8K,MACZpI,MAAO2P,EACP/K,SAAUuK,EACVtK,uBAAuB,OACvBC,cAAa,gBAAWxH,EAAK8K,MAAMxC,UAAU9E,OAAhC,SACbiE,SAAU+J,EACV9J,YAAa+J,EACb9J,SAAS,UACTC,IAAKmF,EACLlF,OAAQqK,EACRpK,UAAWqK,EACXpK,SAAUjH,IAASd,EAAKwO,wBAAwB9L,MAAMhC,SACtDD,SAAUK,GAAQd,EAAKwO,wBAAwB9L,MAAMhC,SACrDsH,eAAgBlH,GAAQd,EAAKwO,wBAAwB9L,MAAMhC,YAG7D,SAAC2G,EAAD,CACE9H,MAAM,OACNoD,MAAO3C,EAAK6K,WACZnI,MAAOoQ,GACPxL,SAAUyK,EACVxK,uBAAuB,KACvBC,cAAa,iBAAYxH,EAAK6K,WAAWvC,UAAU9E,OAAtC,OACbiE,SAAUiK,EACVhK,YAAaiK,EACb/J,IAAK+K,EACL9K,OAAQmK,EACRlK,UAAWmK,EACXlK,QACE/H,EAAKwO,wBAAwB9L,MAAM0H,GAAGiI,EAAkB3E,YAAY1N,EAAK8K,MAAMxC,UAAUC,YACzFvI,EAAKwO,wBAAwB9L,MAAMhC,SAErCD,SAAUK,GAAQd,EAAK4N,qBAAqBlL,MAAMhC,SAClDsH,eAAgBhI,EAAK4N,qBAAqBlL,MAAMhC,YAGhDV,EAAKwO,wBAAwB9L,MAAMhC,WACnC,SAACG,EAAD,CACEI,MAAOA,GACP1B,MAAM,OACNuB,KAAMA,EACNC,QAAU2B,IACR6Q,KACAxS,EAAQ2B,IAEVjE,MAAK,eAAUuB,EAAK6K,WAAWvC,UAAU9E,OAApC,2BAA6DxD,EAAK8K,MAAMxC,UAAU9E,OAAlF,cACLxC,KAAK,qJAIRoS,KACC,SAACrT,EAAD,CACER,MAAM,OACNS,KAAMA,EACNC,aAAcA,EACdC,gBAAiBA,EACjBC,iBAAiB,QAIrB,SAAC,GAAD,CAAckL,SAAUA,KAEvBvK,GAAQG,KAAS,SAAC,EAAD,CAAaA,MAAOA,GAAOC,gBAAiBA,KAE7DJ,IAASoO,GAAsB,GAAKF,MACnC,SAAC,GAAD,CAAuBhE,kBAAmBA,MAG5C,SAAC1J,EAAD,CACE/B,MAAM,OACNgC,QAAUO,IACR,SAACW,EAAD,CAAoBC,MAAO2P,EAAmB1P,MAAO6J,EAAY5J,QAAS4O,EAA1E,UACE,SAAClP,EAAA,GAAD,CAAQC,QAAS,IAAMT,EAAO9B,EAAMiQ,IAAYxP,SAAUqP,GAA1D,SACGD,YCxXA,SAASqE,IAAQ,KAAElU,IAChC,MAAM,QAAE6C,IAAYC,EAAAA,EAAAA,KACd0J,GAAaC,EAAAA,GAAAA,IAAYzM,EAAK8K,MAAM1H,eAAYU,GAEhD,KAAEtC,IAASC,EAAAA,EAAAA,OAGX,EAACgG,EAAD,EAAWC,IAAeoE,EAAAA,EAAAA,UAAkB9L,EAAK8K,MAAMiB,aAAazL,GAAG,KACvE,EAACoC,EAAD,EAAQ4E,IAAYwE,EAAAA,EAAAA,UAAS,IAE7BJ,GAAOC,EAAAA,GAAAA,MAGPgB,EAAcC,EAAAA,GAAQ/J,GAAW,GAAGO,UAAYpD,EAAK8K,MAAM1H,QAC3D2J,EAAUtF,EAAWzH,EAAK8K,MAAMiB,aAAeY,EAAW,OAAGjB,QAAH,IAAGA,OAAH,EAAGA,EAAMoB,WAAa9M,EAAK8K,MAAMiC,QAE3FnF,EAAMH,EAAWzH,EAAK8K,MAAMiB,aAAeY,EAAW,OAAGjB,QAAH,IAAGA,OAAH,EAAGA,EAAMoB,WAAa9M,EAAK8K,MAAMiC,QAEvF1B,EAAW,IAAIrH,EAErBqH,EAAShH,IAAT,OACE0I,QADF,IACEA,OADF,EACEA,EAASvM,GAAGkC,EAAMgL,YAAY1N,EAAK8K,MAAMxC,UAAUC,WACnD/G,EAAKa,EACH,wFAA0BoF,EAAW,WAAa,aAEpD,GAGF,MAAMuD,EAAoB,IAAIlB,EAE9B,GAAIpH,IAAU2I,EAASkE,OAAQ,CAC7B,MAAM4E,EAASzR,EAAMgL,YAAY1N,EAAK8K,MAAMxC,UAAUC,UAChD6L,EAAqBpU,EAAKqU,uBAAuB3R,MAAM2B,IAAI8P,GACjEnJ,EAAkBb,eAChB3I,EAAKa,EAAE,gBACPrC,EAAKqU,uBAAuB3R,MAC5B0R,EACApU,EAAK8K,OAEPE,EAAkBR,OAAOhJ,EAAKa,EAAE,oBAAiBrC,EAAKqU,uBAAuB3R,MAAO0R,EAAoBpU,EAAK8K,OAC7G,MAAMwJ,GAAiBvG,EAAAA,EAAAA,IAAI,IAAID,OAAO9N,EAAKuU,oBAAoB7R,MAAO1C,EAAKwU,iBAAiB9R,MAAM2B,IAAI8P,IACtGnJ,EAAkBN,cAAclJ,EAAKa,EAAE,iBAAcrC,EAAKyU,YAAY/R,MAAO4R,GACzEtU,EAAKK,oBAAoBK,UAC3BsK,EAAkB3G,IAChB,iBACA+D,EAAAA,EAAAA,IACEpI,EAAKK,oBAAoBgI,QAAQ,GAAKrI,EAAK6K,WAAWvC,UAAUC,SAAWvI,EAAK8K,MAAMxC,UAAUC,YAElGH,EAAAA,EAAAA,IACEpI,EAAKO,mBAAmB8H,QAAQ,GAAKrI,EAAK6K,WAAWvC,UAAUC,SAAWvI,EAAK8K,MAAMxC,UAAUC,WAEjGsB,EAAUS,IAGdU,EAAkBN,cAAclJ,EAAKa,EAAE,mBAAgBrC,EAAK0U,UAAUhS,MAAO1C,EAAK2U,iBAAiBjS,OAIrGsN,eAAeC,EAAUC,GAKvB,OAJIlQ,EAAKK,oBAAoBK,UAC3BwP,EAAOE,oBAAmB,EAAO5C,EAAAA,GAAMA,EAAAA,IAEzC0C,EAAO0E,SAASlS,EAAMgL,YAAY1N,EAAK8K,MAAMxC,UAAUC,UAAWd,GAClE,UAAUjG,EAAKa,EAAE,gBAAjB,YAAgCrC,EAAK8K,MAAMxC,UAAU9E,QAGvD,OACE,iCACE,iBAAK5E,UAAU,mCAAf,qBAA2DoB,EAAK8K,MAAMxC,UAAU9E,WAEhF,SAAC6D,EAAD,CACE9H,MAAM,OACNoD,MAAO3C,EAAK8K,MACZpI,MAAOA,EACP4E,SAAUA,EACVC,uBAAuB,OACvBC,cAAc,OACdC,SAAUA,EACVC,YAAaA,EACbC,SAAS,UACTC,IAAKA,EACLG,SAAS,KAGX,SAAC,GAAD,CAAcsD,SAAUA,KACxB,SAAC,GAAD,CAAuBL,kBAAmBA,KAE1C,SAAC1J,EAAD,CACE/B,MAAM,OACNgC,QAAUO,IACR,SAACW,EAAD,CAAoBC,MAAOA,EAAOC,MAAO6J,EAAY5J,QAAS6E,EAA9D,UACE,SAACnF,EAAA,GAAD,CACEC,QAAS,IAAMT,EAAO9B,EAAMiQ,GAC5BxP,SAAUiC,EAAMgL,YAAY1N,EAAK8K,MAAMxC,UAAUC,UAAUwH,IAAI,IAAM1E,EAASkE,OAFhF,SAIG/N,EAAKa,EAAE,yB,gBCjGP,SAASwS,IAAmB,KAAE7U,IAC3C,MAAM,QAAEyL,IAAY3I,EAAAA,EAAAA,MAGd,KAAEtB,KAFuBsT,EAAAA,GAAAA,OAEdrT,EAAAA,EAAAA,QAGX,EAACgG,EAAD,EAAWC,IAAeoE,EAAAA,EAAAA,UAAkB9L,EAAK8K,MAAMiB,aAAazL,GAAG,KACvE,EAACoC,EAAD,EAAQ4E,IAAYwE,EAAAA,EAAAA,UAAS,KAC7B,EAACjE,EAAD,EAASC,IAAagE,EAAAA,EAAAA,WAAS,IAE9BpK,EAAoBC,EAAsBC,EAAaC,EAAWC,IAAUC,EAAAA,EAAAA,MAG7E6F,GAAMyG,EAAAA,EAAAA,IAAQrO,EAAK2O,kBAAmB3O,EAAKqU,uBAAuB3R,OAClEqS,EAAelN,EAASD,EAAIS,QAAQrI,EAAK8K,MAAMxC,UAAUC,UAAY7F,EAErEsS,EAAWnN,GACbwG,EAAAA,EAAAA,IAAQrO,EAAKiV,kBAAmBjV,EAAKkV,2BACrCxS,EAAMgL,YAAY1N,EAAK8K,MAAMxC,UAAUC,UAAUuF,OAAO9N,EAAKmV,kBAAkBC,KAAMpV,EAAKwU,iBAAiB9R,OAEzG2I,GAAW,IAAIrH,GAClBK,IACCrE,EAAKqU,uBAAuB3R,MAAMlC,GAAGkC,EAAMgL,YAAY1N,EAAK8K,MAAMxC,UAAUC,WAC5E/G,EAAKa,EACH,yFACEoF,EAAW,WAAa,aAG5B,GAEDpD,IACCrE,EAAKkV,0BAA0B1U,GAAGwU,GAClCxT,EAAKa,EACH,2HAEF,GAGE2I,EAAoB,IAAIlB,EAC9B,GAAIiL,IAAiB1J,EAASkE,OAAQ,CACpC,MAAM4E,EAASY,EAAarH,YAAY1N,EAAK8K,MAAMxC,UAAUC,UACvD6L,EAAqBpU,EAAKqU,uBAAuB3R,MAAM6L,IAAI4F,GACjEnJ,EAAkBb,eAChB3I,EAAKa,EAAE,gBACPrC,EAAKqU,uBAAuB3R,MAC5B0R,EACApU,EAAK8K,OAEPE,EAAkBR,OAAOhJ,EAAKa,EAAE,oBAAiBrC,EAAKqU,uBAAuB3R,MAAO0R,EAAoBpU,EAAK8K,OAE7G,MAAMwJ,GAAiBvG,EAAAA,EAAAA,IAAI,IAAID,OAAO9N,EAAKuU,oBAAoB7R,MAAO1C,EAAKwU,iBAAiB9R,MAAM6L,IAAI4F,IACtGnJ,EAAkBN,cAAclJ,EAAKa,EAAE,iBAAcrC,EAAKyU,YAAY/R,MAAO4R,GAI/EtE,eAAeC,EAAUC,GACvB,MAAM8E,EAAWnN,GACbwG,EAAAA,EAAAA,IAAQrO,EAAKiV,kBAAmBjV,EAAKkV,2BACrCxS,EACGgL,YAAY1N,EAAK8K,MAAMxC,UAAUC,UACjCuF,OAAO9N,EAAKmV,kBAAkBC,KAAMpV,EAAKwU,iBAAiB9R,OAGjE,OADAwN,EAAOmF,YAAYL,EAAUvN,GAC7B,UAAUjG,EAAKa,EAAE,iBAAjB,YAAiCrC,EAAK8K,MAAMxC,UAAU9E,QAGxD,OACE,iCACE,iBAAK5E,UAAU,mCAAf,UACG4C,EAAKa,EAAE,iBADV,IACyBrC,EAAK8K,MAAMxC,UAAU9E,WAG9C,SAAC6D,EAAD,CACE9H,MAAM,OACNoD,MAAO3C,EAAK8K,MACZpI,MAAOqS,EACPzN,SAAUA,EACVC,uBAAuB,KACvBC,cAAc,KACdC,SAAUA,EACVC,YAAaA,EACbE,IAAKA,EACLC,OAAQA,EACRC,UAAWA,EACXC,SAAS,KAGX,SAAC,GAAD,CAAcsD,SAAUA,KACxB,SAAC,GAAD,CAAuBL,kBAAmBA,KAE1C,SAAC1J,EAAD,CACE/B,MAAM,OACNgC,QAAUO,IACR,SAACQ,EAAA,GAAD,CACEC,QAAS,IAAMT,EAAO9B,EAAMiQ,GAC5BxP,SAAUsU,EAAarH,YAAY1N,EAAK8K,MAAMxC,UAAUC,UAAUwH,IAAI,IAAM1E,EAASkE,OAFvF,SAIG/N,EAAKa,EAAE,0B,yFC9GpB,MAAMiT,EAAW,CACf,EAAG,aACH,EAAG,qBACH,EAAG,cACH,EAAG,WACH,EAAG,YAGU,SAAS3L,GAAqB,YAAEX,IAC7C,OACE,gBAAKpK,UAAS,4BAAuB0W,GAASnG,EAAAA,EAAAA,IAAgBnG,KAA9D,SACGA,EAAc,GAAH,OAAMA,EAAYK,UAAU,GAAGhB,QAAQ,GAAvC,KAA+C,Q,sECVjE,MAAMuB,GAAY2L,EAAAA,EAAAA,OAAK,EAAGtU,MAAAA,MAEtB,gBAAKrC,UAAU,0CAAf,SACGqC,EAAM4H,MAAMC,KAAKmC,KAAI,CAACtI,EAAOiC,EAAGkE,KAC/B,MAAM0M,EAAsB5Q,IAAMkE,EAAKhE,OAAS,EAC1C4E,GAAW+L,EAAAA,EAAAA,GAAe9S,GAChC,OACE,UAAC,EAAA+S,SAAD,YACE,gBAAK9W,UAAU,0BAAf,UACE,gBAAKA,UAAU,uCAAf,SAAuD8K,EAASlG,WAEjEgS,EAAa,MAAO,SAAC,MAAD,CAAkBlP,MAAO,GAAIC,OAAQ,OAJ7C3B,UAYzBgF,EAAUxC,YAAc,YAExB,O,yFCtBA,MAAMuO,EAA2B,IAAIpK,EAAAA,GAAQ,GAAI,KAC3CqK,EAAqB,IAAIrK,EAAAA,GAAQ,GAAI,KAE5B,SAASpK,EAAyBF,GAC/C,MAAM4U,GAA2B5M,EAAAA,EAAAA,UAAQ,IAClChI,EACE0U,EADYC,GAElB,CAAC3U,IACJ,OAAO+L,EAAAA,EAAAA,IAAoC6I,K,iJCb7C,G,SAAA,CAAgB,IAAM,8CAA8C,OAAS,IAAI,MAAQ,KAAK,YAAc,mP,sBCkB7F,SAASC,GAAO,KAC7BC,EAD6B,SAE7BpX,EAF6B,MAG7BqX,IAEA,MAAMC,GAASC,EAAAA,EAAAA,aACf,OACE,iBAAKtX,UAAU,gDAAf,WACE,SAACM,EAAA,EAAD,KACA,SAACiX,EAAA,EAAD,WACE,UAACC,EAAA,EAAD,CAAWxX,UAAU,6BAA6ByX,SAAS,MAA3D,WACE,iBAAKzX,UAAS,+BAAd,WACE,gBAAKA,UAAU,iEAAf,UACE,SAAC,UAAD,CAAM0X,KAAK,UAAX,UACE,cAAG1X,UAAU,+CAAb,UACE,SAAC2X,EAAA,EAAD,CAAOC,IAAKC,EAAWC,IAAI,QAAQnQ,OAAQ,GAAID,MAAO,aAI5D,gBAAK1H,UAAU,2CAAf,UACE,iBAAKA,UAAU,2CAAf,WACE,iBAAKA,UAAU,OAAf,WACE,SAAC+X,EAAA,EAAD,CAASL,KAAK,QAAd,UACE,cACE1X,UACE,4DACCqX,EAAOW,SAASC,WAAW,SACxB,qBACA,qCALR,UAQE,gBAAKjY,UAAU,8BAAf,uBAGJ,SAAC+X,EAAA,EAAD,CAASL,KAAK,UAAd,UACE,cACE1X,UACE,+CACCqX,EAAOW,SAASC,WAAW,WACxB,qBACA,qCALR,UAQE,gBAAKjY,UAAU,8BAAf,yBAIJ,SAAC+X,EAAA,EAAD,CAASL,KAAK,gBAAd,UACE,cACE1X,UACE,+CACCqX,EAAOW,SAASC,WAAW,iBACxB,qBACA,qCALR,UAQE,gBAAKjY,UAAU,8BAAf,4BAIN,gBAAKA,UAAU,oBAAf,UACE,SAAC+X,EAAA,EAAD,CAASL,KAAK,YAAd,UACE,eACE1X,UAAS,iEACa,cAApBqX,EAAOW,SAA2B,qBAAuB,qCAF7D,WAKE,gBACEhY,UAAU,oBACV0H,MAAO,GACPC,OAAQ,GACRF,MAAM,6BACNG,QAAQ,mBALV,UAOE,iBAAMsQ,EAAE,6zCAEV,gBAAKlY,UAAU,8BAAf,sCAiBZ,iBAAKA,UAAS,oCAAd,UACGmX,IACC,gBAAKnX,UAAS,gCAAmCC,MAAO,CAAEkY,UAAW,SAArE,SACGhB,KAGL,gBACEnX,UAAS,sBAAiBoX,EAAQ,8BAAgC,iBAClEnX,MAAO,CAAEmY,UAAW,SAFtB,SAIGrY,IAEFqX,IACC,gBAAKpX,UAAU,0CAA0CC,MAAO,CAAEkY,UAAW,SAA7E,SACGf,aAMX,SAACiB,EAAA,EAAD,KACA,SAACC,EAAA,EAAD,S,yDCpIN,SAASzS,IAA2Q,OAA9PA,EAAWC,OAAOC,QAAU,SAAU9E,GAAU,IAAK,IAAI+E,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQnF,EAAOmF,GAAOD,EAAOC,IAAY,OAAOnF,IAA2BuF,MAAMrB,KAAMc,WAEhT,SAASQ,EAAyBN,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE/E,EAEzF,SAAuCkF,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D/E,EAAS,GAAQ0F,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAanF,EAAOmF,GAAOD,EAAOC,IAAQ,OAAOnF,EAFxM6F,CAA8BX,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgBnF,EAAOmF,GAAOD,EAAOC,IAAU,OAAOnF,EAMne,IAAIsX,GAAe,IAAApR,aAAW,SAAUC,EAAMC,GAC5C,IAAIC,EAAaF,EAAKzG,MAClBA,OAAuB,IAAf2G,EAAwB,eAAiBA,EACjDC,EAAYH,EAAKI,KACjBA,OAAqB,IAAdD,EAAuB,GAAKA,EACnC1G,EAAO4F,EAAyBW,EAAM,CAAC,QAAS,SAEpD,OAAoB,gBAAoB,MAAOvB,EAAS,CACtDwB,IAAKA,EACLI,MAAO,6BACPC,MAAOF,EACPG,OAAQH,EACRI,QAAS,YACTC,KAAM,OACNC,OAAQnH,EACRoH,YAAa,IACbC,cAAe,QACfC,eAAgB,SACfpH,GAAoB,gBAAoB,OAAQ,CACjDqH,GAAI,IACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MACW,gBAAoB,WAAY,CAC/CC,OAAQ,uBAGZiQ,EAAahQ,UAAY,CACvB5H,MAAO,WACP6G,KAAM,cAAoB,CAAC,WAAkB,cAE/C+Q,EAAa/P,YAAc,eAC3B","sources":["webpack://_N_E/./src/components/Card/index.tsx","webpack://_N_E/./src/components/Checkbox/index.tsx","webpack://_N_E/./src/features/kashi/Checkbox.tsx","webpack://_N_E/./src/features/kashi/Button.tsx","webpack://_N_E/./src/entities/Warnings.ts","webpack://_N_E/./node_modules/react-feather/dist/icons/arrow-down-right.js","webpack://_N_E/./src/features/kashi/SmartNumberInput.tsx","webpack://_N_E/./src/features/kashi/TradeReview.tsx","webpack://_N_E/./src/entities/TransactionReview.ts","webpack://_N_E/./node_modules/react-feather/dist/icons/arrow-right.js","webpack://_N_E/./src/features/kashi/TransactionReview.tsx","webpack://_N_E/./src/features/kashi/WarningsList.tsx","webpack://_N_E/./src/features/kashi/Borrow.tsx","webpack://_N_E/./src/features/kashi/Repay.tsx","webpack://_N_E/./src/features/kashi/Deposit.tsx","webpack://_N_E/./src/features/kashi/Withdraw.tsx","webpack://_N_E/./src/features/legacy/swap/FormattedPriceImpact.tsx","webpack://_N_E/./src/features/legacy/swap/SwapRoute.tsx","webpack://_N_E/./src/hooks/useSwapSlippageTollerence.ts","webpack://_N_E/./public/kashi-logo.png","webpack://_N_E/./src/layouts/Kashi/index.tsx","webpack://_N_E/./node_modules/react-feather/dist/icons/arrow-up-right.js"],"sourcesContent":["import React from 'react'\nimport { classNames } from '../../functions/styling'\n\nfunction Header({ className, children }) {\n return (\n
{children}
\n )\n}\n\ntype CardProps = {\n header?: React.ReactChild\n footer?: React.ReactChild\n backgroundImage?: string\n title?: string\n description?: string\n} & React.HTMLAttributes\n\nfunction Card({\n header = undefined,\n footer = undefined,\n backgroundImage = '',\n title = '',\n description = '',\n children,\n className,\n}: CardProps) {\n return (\n \n {header && <>{header}}\n\n
\n {title &&
{title}
}\n {description &&
{description}
}\n {children}\n
\n\n {footer && <>{footer}}\n \n )\n}\n\nCard.Header = Header\n\nexport default Card\n","import QuestionHelper from '../QuestionHelper'\nimport React from 'react'\nimport Settings from '../Settings'\n\nexport type Color = 'pink' | 'blue'\n\nconst COLOR = {\n pink: 'checked:bg-pink checked:border-transparent focus:ring-pink',\n blue: 'checked:bg-blue checked:border-transparent focus:ring-blue',\n}\n\nexport interface CheckboxProps {\n color: Color\n set: (value: boolean) => void\n}\n\nfunction Checkbox({\n color,\n set,\n className = '',\n ...rest\n}: CheckboxProps & React.InputHTMLAttributes): JSX.Element {\n return (\n set(event.target.checked)}\n className={`appearance-none h-5 w-5 rounded-sm bg-dark-700 border-transparent disabled:bg-dark-1000 disabled:border-dark-800 ${COLOR[color]} ${className}`}\n {...rest}\n />\n )\n}\n\nexport default Checkbox\n","import Checkbox from '../../components/Checkbox'\nimport QuestionHelper from '../../components/QuestionHelper'\nimport React from 'react'\nimport Settings from '../../components/Settings'\nimport useSwapSlippageTolerance from '../../hooks/useSwapSlippageTollerence'\n\nexport function ExchangeRateCheckBox({ color, pair, updateOracle, setUpdateOracle, desiredDirection }: any) {\n const displayUpdateOracle = pair.currentExchangeRate.gt(0) ? updateOracle : true\n const show =\n displayUpdateOracle || desiredDirection === 'up'\n ? pair.oracleExchangeRate.lt(pair.currentExchangeRate)\n : pair.oracleExchangeRate.gt(pair.currentExchangeRate)\n\n return (\n show && (\n
\n \n Update exchange rate from the oracle\n \n
\n )\n )\n}\n\nexport function SwapCheckbox({ title, color, swap, setSwap, help, trade }: any) {\n const allowedSlippage = useSwapSlippageTolerance(trade)\n return (\n
\n
\n \n {title}\n \n
\n {swap && }\n
\n )\n}\n\nexport default Checkbox\n","import { ApprovalState, useApproveCallback } from '../../hooks/useApproveCallback'\nimport { BENTOBOX_ADDRESS, WNATIVE_ADDRESS } from '@sushiswap/core-sdk'\nimport useKashiApproveCallback, { BentoApprovalState } from '../../hooks/useKashiApproveCallback'\n\nimport Alert from '../../components/Alert'\nimport Button from '../../components/Button'\nimport Dots from '../../components/Dots'\nimport React from 'react'\nimport { t } from '@lingui/macro'\nimport { tryParseAmount } from '../../functions/parse'\nimport { useActiveWeb3React } from '../../services/web3'\nimport { useLingui } from '@lingui/react'\n\nexport function KashiApproveButton({ content, color }: any): any {\n const { i18n } = useLingui()\n const [kashiApprovalState, approveKashiFallback, kashiPermit, onApprove, onCook] = useKashiApproveCallback()\n const showApprove =\n (kashiApprovalState === BentoApprovalState.NOT_APPROVED || kashiApprovalState === BentoApprovalState.PENDING) &&\n !kashiPermit\n const showChildren = kashiApprovalState === BentoApprovalState.APPROVED || kashiPermit\n\n return (\n <>\n {approveKashiFallback && (\n \n )}\n\n {showApprove && (\n \n )}\n\n {showChildren && React.cloneElement(content(onCook), { color })}\n \n )\n}\n\nexport function TokenApproveButton({ children, value, token, needed, color }: any): any {\n const { i18n } = useLingui()\n const { chainId } = useActiveWeb3React()\n const [approvalState, approve] = useApproveCallback(\n tryParseAmount(value, token),\n chainId && BENTOBOX_ADDRESS[chainId]\n )\n\n const showApprove =\n chainId &&\n token &&\n token.address !== WNATIVE_ADDRESS[chainId] &&\n needed &&\n value &&\n (approvalState === ApprovalState.NOT_APPROVED || approvalState === ApprovalState.PENDING)\n\n return showApprove ? (\n \n ) : (\n React.cloneElement(children, { color })\n )\n}\n","export class Warning {\n active = false\n message = ''\n breaking = false\n or: Warning | undefined = undefined\n\n constructor(active: boolean, message: string, breaking = false, or?: Warning) {\n this.active = active\n this.message = message\n this.breaking = breaking\n this.or = or\n }\n}\n\nexport class Warnings extends Array {\n private _add(warning: Warning) {\n if (warning.active) {\n this.push(warning)\n } else {\n if (warning.or) {\n this._add(warning.or)\n }\n }\n }\n\n add(active: boolean, message: string, breaking = false, or?: Warning) {\n this._add(new Warning(active, message, breaking, or))\n return this\n }\n\n addWarning(active: boolean, message: string, or?: Warning) {\n this._add(new Warning(active, message, false, or))\n return this\n }\n\n addError(active: boolean, message: string, or?: Warning) {\n this._add(new Warning(active, message, true, or))\n return this\n }\n\n get broken(): boolean {\n return this.some((warning) => warning.breaking)\n }\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar ArrowDownRight = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"7\",\n y1: \"7\",\n x2: \"17\",\n y2: \"17\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"17 7 17 17 7 17\"\n }));\n});\nArrowDownRight.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nArrowDownRight.displayName = 'ArrowDownRight';\nexport default ArrowDownRight;","import { ArrowDownRight, ArrowUpRight } from 'react-feather'\n\nimport { BigNumber } from '@ethersproject/bignumber'\nimport Button from '../../components/Button'\nimport Input from '../../components/Input'\nimport React from 'react'\nimport { formatNumber } from '../../functions/format'\n\ntype SmartNumberInputProps = {\n color: 'blue' | 'pink'\n token: any\n value: string\n setValue: any\n\n useBentoTitleDirection: 'up' | 'down'\n useBentoTitle: string\n useBento: boolean\n setUseBento: any\n\n maxTitle?: string\n max: BigNumber\n pinMax?: boolean\n setPinMax?: any\n showMax?: boolean\n disabled?: boolean\n switchDisabled?: boolean\n}\n\nexport default function SmartNumberInput({\n color = 'blue',\n token,\n value,\n setValue,\n\n useBentoTitleDirection = 'down',\n useBentoTitle = '',\n useBento,\n setUseBento,\n\n maxTitle = 'Max',\n max,\n pinMax = false,\n setPinMax,\n showMax = false,\n disabled = false,\n switchDisabled = false,\n}: SmartNumberInputProps) {\n return (\n <>\n
\n
\n \n {useBentoTitleDirection == 'down' ? (\n \n ) : (\n \n )}\n \n {useBentoTitle}\n \n {\n setUseBento(!useBento)\n }}\n disabled={switchDisabled}\n >\n {useBento ? 'BentoBox' : 'Wallet'}\n \n \n
\n
\n {maxTitle} {formatNumber(max.toFixed(token.tokenInfo.decimals))}\n
\n
\n\n
\n {\n if (pinMax) {\n setValue('')\n }\n if (setPinMax) {\n setPinMax(false)\n }\n }}\n disabled={disabled}\n />\n {showMax && max.gt(0) && (\n {\n if (setPinMax) {\n setPinMax(true)\n } else {\n setValue(max.toFixed(token.tokenInfo.decimals))\n }\n }}\n className={'absolute right-4 focus:ring focus:ring-' + color}\n >\n MAX\n \n )}\n
\n \n )\n}\n","import { Currency, TradeType, Trade as V2Trade } from '@sushiswap/core-sdk'\nimport React, { useMemo } from 'react'\n\nimport FormattedPriceImpact from '../legacy/swap/FormattedPriceImpact'\nimport QuestionHelper from '../../components/QuestionHelper'\nimport SwapRoute from '../legacy/swap/SwapRoute'\nimport { computeRealizedLPFeePercent } from '../../functions/prices'\nimport { t } from '@lingui/macro'\nimport { useLingui } from '@lingui/react'\n\nfunction TradeReview({\n trade,\n allowedSlippage,\n}: {\n trade: V2Trade | undefined\n allowedSlippage: any\n}) {\n const { i18n } = useLingui()\n\n const showRoute = Boolean(trade && trade.route.path.length > 2)\n\n const { realizedLPFee, priceImpact } = useMemo(() => {\n if (!trade) return { realizedLPFee: undefined, priceImpact: undefined }\n\n const realizedLpFeePercent = computeRealizedLPFeePercent(trade)\n const realizedLPFee = trade.inputAmount.multiply(realizedLpFeePercent)\n const priceImpact = trade.priceImpact.subtract(realizedLpFeePercent)\n return { priceImpact, realizedLPFee }\n }, [trade])\n\n return (\n <>\n
Swap Review
\n {trade ? (\n
\n
\n
\n {i18n._(t`Minimum received`)}\n \n
\n
\n {`${trade.minimumAmountOut(allowedSlippage)?.toSignificant(4)} ${trade.outputAmount.currency.symbol}` ??\n '-'}\n
\n
\n
\n
\n {i18n._(t`Price Impact`)}\n \n
\n
\n \n
\n
\n
\n
\n Liquidity Provider Fee\n \n
\n
\n {realizedLPFee ? `${realizedLPFee.toSignificant(4)} ${trade.inputAmount.currency.symbol}` : '-'}\n
\n
\n {showRoute && (\n
\n
\n {i18n._(t`Route`)}\n \n
\n
\n \n
\n
\n )}\n
\n ) : (\n
{i18n._(t`No liquidity found to do swap`)}
\n )}\n \n )\n}\n\nexport default TradeReview\n","import { formatNumber, formatPercent } from '../functions/format'\n\nimport { BigNumber } from '@ethersproject/bignumber'\nimport { getUSDString } from '../functions/kashi'\n\nexport enum Direction {\n DOWN = -1,\n FLAT = 0,\n UP = 1,\n}\n\ninterface Line {\n name: string\n from: string\n to: string\n direction: Direction\n}\n\nexport class TransactionReview extends Array {\n public add(name: string, from: string, to: string, direction: Direction): this {\n this.push({\n name: name,\n from: from,\n to: to,\n direction: direction,\n })\n return this\n }\n\n public addTokenAmount(name: string, from: BigNumber, to: BigNumber, token: any): this {\n this.add(\n name,\n formatNumber(from.toFixed(token.tokenInfo.decimals)) + ' ' + token.tokenInfo.symbol,\n formatNumber(to.toFixed(token.tokenInfo.decimals)) + ' ' + token.tokenInfo.symbol,\n from.eq(to) ? Direction.FLAT : from.lt(to) ? Direction.UP : Direction.DOWN\n )\n return this\n }\n\n public addUSD(name: string, from: BigNumber, to: BigNumber, token: any): this {\n this.add(\n name,\n formatNumber(getUSDString(from, token), true),\n formatNumber(getUSDString(to, token), true),\n from.eq(to) ? Direction.FLAT : from.lt(to) ? Direction.UP : Direction.DOWN\n )\n return this\n }\n\n public addPercentage(name: string, from: BigNumber, to: BigNumber): this {\n this.add(\n name,\n formatPercent(from.toFixed(16)),\n formatPercent(to.toFixed(16)),\n from.eq(to) ? Direction.FLAT : from.lt(to) ? Direction.UP : Direction.DOWN\n )\n return this\n }\n\n public addRate(name: string, from: BigNumber, to: BigNumber, pair: any): this {\n this.add(\n name,\n formatNumber(from.toFixed(18 + pair.collateral.tokenInfo.decimals - pair.asset.tokenInfo.decimals)),\n formatNumber(to.toFixed(18 + pair.collateral.tokenInfo.decimals - pair.asset.tokenInfo.decimals)),\n from.eq(to) ? Direction.FLAT : from.lt(to) ? Direction.UP : Direction.DOWN\n )\n return this\n }\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar ArrowRight = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"5\",\n y1: \"12\",\n x2: \"19\",\n y2: \"12\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"12 5 19 12 12 19\"\n }));\n});\nArrowRight.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nArrowRight.displayName = 'ArrowRight';\nexport default ArrowRight;","import { ArrowDownRight, ArrowRight, ArrowUpRight } from 'react-feather'\nimport { Direction, TransactionReview } from '../../entities/TransactionReview'\n\nimport React from 'react'\n\nfunction TransactionReviewView({ transactionReview }: { transactionReview: TransactionReview }) {\n return (\n <>\n {transactionReview && transactionReview.length > 0 && (\n
\n
Transaction Review
\n {transactionReview.map((line, i) => {\n return (\n
\n
{line.name}:
\n
\n {line.from}\n {line.direction === Direction.FLAT ? (\n \n ) : line.direction === Direction.UP ? (\n \n ) : (\n \n )}\n {line.to}\n
\n
\n )\n })}\n
\n )}\n \n )\n}\n\nexport default TransactionReviewView\n","import Alert from '../../components/Alert'\nimport React from 'react'\nimport { Warnings } from '../../entities/Warnings'\n\nfunction WarningsList({ warnings }: { warnings: Warnings }) {\n return (\n <>\n {warnings.map((warning, i) => (\n \n ))}\n \n )\n}\n\nexport default WarningsList\n","import { ExchangeRateCheckBox, SwapCheckbox } from './Checkbox'\nimport { KashiApproveButton, TokenApproveButton } from './Button'\nimport { Percent, SUSHISWAP_MULTISWAPPER_ADDRESS, WNATIVE } from '@sushiswap/core-sdk'\nimport React, { useMemo, useState } from 'react'\nimport { Warning, Warnings } from '../../entities/Warnings'\nimport { ZERO, e10, maximum, minimum } from '../../functions/math'\nimport { computeRealizedLPFeePercent, warningSeverity } from '../../functions/prices'\nimport { hexConcat, hexlify } from '@ethersproject/bytes'\nimport { useExpertModeManager, useUserSlippageToleranceWithDefault } from '../../state/user/hooks'\n\nimport { AddressZero } from '@ethersproject/constants'\nimport { BigNumber } from '@ethersproject/bignumber'\nimport Button from '../../components/Button'\nimport { Field } from '../../state/swap/actions'\nimport KashiCooker from '../../entities/KashiCooker'\nimport SmartNumberInput from './SmartNumberInput'\nimport TradeReview from './TradeReview'\nimport { TransactionReview } from '../../entities/TransactionReview'\nimport TransactionReviewView from './TransactionReview'\nimport WarningsView from './WarningsList'\nimport { defaultAbiCoder } from '@ethersproject/abi'\nimport { toShare } from '../../functions/bentobox'\nimport { tryParseAmount } from '../../functions/parse'\nimport { useActiveWeb3React } from '../../services/web3'\nimport { useCurrency } from '../../hooks/Tokens'\nimport { useKashiInfo } from './context'\nimport { useV2TradeExactIn } from '../../hooks/useV2Trades'\n\ninterface BorrowProps {\n pair: any\n}\n\nconst DEFAULT_BORROW_SLIPPAGE_TOLERANCE = new Percent(50, 10_000)\n\nexport default function Borrow({ pair }: BorrowProps) {\n const { account, chainId } = useActiveWeb3React()\n const info = useKashiInfo()\n\n // State\n const [useBentoCollateral, setUseBentoCollateral] = useState(pair.collateral.bentoBalance.gt(0))\n const [useBentoBorrow, setUseBentoBorrow] = useState(true)\n const [collateralValue, setCollateralValue] = useState('')\n const [borrowValue, setBorrowValue] = useState('')\n const [swapBorrowValue, setSwapBorrowValue] = useState('')\n const [updateOracle, setUpdateOracle] = useState(false)\n const [swap, setSwap] = useState(false)\n\n const assetToken = useCurrency(pair.asset.address) || undefined\n const collateralToken = useCurrency(pair.collateral.address) || undefined\n\n // Calculated\n const assetNative = WNATIVE[chainId || 1].address === pair.collateral.address\n\n const collateralBalance = useBentoCollateral\n ? pair.collateral.bentoBalance\n : assetNative\n ? info?.ethBalance\n : pair.collateral.balance\n\n const displayUpdateOracle = pair.currentExchangeRate.gt(0) ? updateOracle : true\n\n // Swap\n // const [allowedSlippage] = useUserSlippageTolerance(); // 10 = 0.1%\n\n const allowedSlippage = useUserSlippageToleranceWithDefault(DEFAULT_BORROW_SLIPPAGE_TOLERANCE) // custom from users\n\n const parsedAmount = tryParseAmount(borrowValue, assetToken)\n\n const foundTrade = useV2TradeExactIn(parsedAmount, collateralToken)\n\n const { realizedLPFee, priceImpact } = useMemo(() => {\n if (!foundTrade) return { realizedLPFee: undefined, priceImpact: undefined }\n\n const realizedLpFeePercent = computeRealizedLPFeePercent(foundTrade)\n const realizedLPFee = foundTrade.inputAmount.multiply(realizedLpFeePercent)\n const priceImpact = foundTrade.priceImpact.subtract(realizedLpFeePercent)\n return { priceImpact, realizedLPFee }\n }, [foundTrade])\n\n const extraCollateral =\n swap && foundTrade ? BigNumber.from(foundTrade.minimumAmountOut(allowedSlippage).quotient.toString()) : ZERO\n\n // const extraCollateral = swap\n // ? computeSlippageAdjustedAmounts(foundTrade, allowedSlippage)\n // [Field.OUTPUT]?.toFixed(pair.collateral.tokenInfo.decimals)\n // .toBigNumber(pair.collateral.tokenInfo.decimals) || ZERO\n // : ZERO;\n\n const swapCollateral = collateralValue.toBigNumber(pair.collateral.tokenInfo.decimals)\n\n const nextUserCollateralValue = pair.userCollateralAmount.value\n .add(collateralValue.toBigNumber(pair.collateral.tokenInfo.decimals))\n .add(extraCollateral)\n\n // Calculate max borrow\n const nextMaxBorrowableOracle = nextUserCollateralValue.mulDiv(e10(16).mul('75'), pair.oracleExchangeRate)\n\n const nextMaxBorrowableSpot = nextUserCollateralValue.mulDiv(e10(16).mul('75'), pair.spotExchangeRate)\n\n const nextMaxBorrowableStored = nextUserCollateralValue.mulDiv(\n e10(16).mul('75'),\n displayUpdateOracle ? pair.oracleExchangeRate : pair.currentExchangeRate\n )\n\n const nextMaxBorrowMinimum = minimum(nextMaxBorrowableOracle, nextMaxBorrowableSpot, nextMaxBorrowableStored)\n\n const nextMaxBorrowSafe = nextMaxBorrowMinimum.mulDiv('95', '100').sub(pair.currentUserBorrowAmount.value)\n\n const nextMaxBorrowPossible = maximum(minimum(nextMaxBorrowSafe, pair.maxAssetAvailable), ZERO)\n\n const maxBorrow = nextMaxBorrowPossible.toFixed(pair.asset.tokenInfo.decimals)\n\n const nextBorrowValue = pair.currentUserBorrowAmount.value.add(borrowValue.toBigNumber(pair.asset.tokenInfo.decimals))\n const nextHealth = nextBorrowValue.mulDiv('1000000000000000000', nextMaxBorrowMinimum)\n\n const collateralValueSet = !collateralValue.toBigNumber(pair.collateral.tokenInfo.decimals).isZero()\n\n const borrowValueSet = !borrowValue.toBigNumber(pair.asset.tokenInfo.decimals).isZero()\n\n const trade = swap && borrowValueSet ? foundTrade : undefined\n\n const [isExpertMode] = useExpertModeManager()\n\n // const { priceImpactWithoutFee } = computeTradePriceBreakdown(trade);\n\n const priceImpactSeverity = warningSeverity(priceImpact)\n\n const borrowAmount = borrowValue.toBigNumber(pair.asset.tokenInfo.decimals)\n\n const collateralWarnings = new Warnings()\n\n collateralWarnings.add(\n collateralBalance?.lt(collateralValue.toBigNumber(pair.collateral.tokenInfo.decimals)),\n `Please make sure your ${\n useBentoCollateral ? 'BentoBox' : 'wallet'\n } balance is sufficient to deposit and then try again.`,\n true\n )\n\n const borrowWarnings = new Warnings()\n .add(\n nextMaxBorrowMinimum.lt(pair.currentUserBorrowAmount.value),\n 'You have surpassed your borrow limit and may be liquidated at any moment. Repay now or add collateral!',\n true,\n new Warning(\n nextMaxBorrowSafe.lt(0),\n 'You have surpassed your borrow limit and assets are at a high risk of liquidation.',\n true,\n new Warning(\n borrowValue.length > 0 && borrowAmount.gt(nextMaxBorrowMinimum.sub(pair.currentUserBorrowAmount.value)),\n \"You don't have enough collateral to borrow this amount.\",\n true,\n new Warning(\n borrowValue.length > 0 && borrowAmount.gt(nextMaxBorrowSafe),\n 'You will surpass your borrow limit and assets will be at a high risk of liquidation.',\n false\n )\n )\n )\n )\n .add(\n borrowValue.length > 0 && pair.maxAssetAvailable.lt(borrowValue.toBigNumber(pair.asset.tokenInfo.decimals)),\n 'Not enough liquidity in this pair.',\n true\n )\n\n // console.log('Oracle Discrepancy', {\n // name: pair.asset.tokenInfo.symbol + '-' + pair.collateral.tokenInfo.symbol,\n // borrowValueSet: borrowValueSet,\n // displayUpdateOracle: displayUpdateOracle,\n // currentExchangeRate: pair.currentExchangeRate.toFixed(\n // pair.asset.tokenInfo.decimals\n // ),\n // oracleExchangeRate: pair.oracleExchangeRate.toFixed(\n // pair.asset.tokenInfo.decimals\n // ),\n // diff:\n // pair.currentExchangeRate.toFixed(pair.asset.tokenInfo.decimals) /\n // pair.oracleExchangeRate.toFixed(pair.asset.tokenInfo.decimals),\n // })\n\n const transactionReview = new TransactionReview()\n if ((collateralValue || borrowValue) && !collateralWarnings.broken && (!borrowWarnings.broken || !borrowValue)) {\n if (collateralValueSet) {\n transactionReview.addTokenAmount(\n 'Collateral',\n pair.userCollateralAmount.value,\n nextUserCollateralValue,\n pair.collateral\n )\n transactionReview.addUSD(\n 'Collateral USD',\n pair.userCollateralAmount.value,\n nextUserCollateralValue,\n pair.collateral\n )\n }\n if (borrowValueSet) {\n transactionReview.addTokenAmount('Borrowed', pair.currentUserBorrowAmount.value, nextBorrowValue, pair.asset)\n transactionReview.addUSD('Borrowed USD', pair.currentUserBorrowAmount.value, nextBorrowValue, pair.asset)\n }\n if (displayUpdateOracle) {\n transactionReview.addRate('Exchange Rate', pair.currentExchangeRate, pair.oracleExchangeRate, pair)\n }\n transactionReview.addTokenAmount(\n 'Borrow Limit',\n pair.maxBorrowable.safe.value,\n nextMaxBorrowSafe.sub(borrowValue.toBigNumber(pair.asset.tokenInfo.decimals)),\n pair.asset\n )\n transactionReview.addPercentage('Limit Used', pair.health.value, nextHealth)\n transactionReview.addPercentage('Borrow APR', pair.interestPerYear.value, pair.currentInterestPerYear.value)\n }\n\n let actionName = 'Nothing to do'\n\n if (collateralValueSet) {\n if (borrowValueSet) {\n actionName = trade ? 'Borrow, swap and add collateral' : 'Add collateral and borrow'\n } else {\n actionName = 'Add collateral'\n }\n } else if (borrowValueSet) {\n actionName = trade ? 'Borrow, swap and add as collateral' : 'Borrow'\n }\n\n if (swap && priceImpactSeverity > 3 && !isExpertMode) {\n actionName = 'Price Impact High'\n } else if (swap && priceImpactSeverity > 2) {\n actionName = actionName + ' anyway'\n }\n\n const actionDisabled =\n (collateralValue.toBigNumber(pair.collateral.tokenInfo.decimals).lte(0) &&\n borrowValue.toBigNumber(pair.asset.tokenInfo.decimals).lte(0)) ||\n collateralWarnings.broken ||\n (borrowValue.length > 0 && borrowWarnings.broken) ||\n (swap && priceImpactSeverity > 3 && !isExpertMode) ||\n (pair.userCollateralAmount.value.isZero() && !collateralValueSet)\n\n // Handlers\n async function onExecute(cooker: KashiCooker): Promise {\n let summary = ''\n\n if (borrowValueSet) {\n if (displayUpdateOracle) {\n cooker.updateExchangeRate(true, ZERO, ZERO)\n }\n\n if (swap && !useBentoCollateral) {\n cooker.bentoDepositCollateral(collateralValue.toBigNumber(pair.collateral.tokenInfo.decimals))\n }\n\n cooker.borrow(\n borrowValue.toBigNumber(pair.asset.tokenInfo.decimals),\n swap || useBentoBorrow,\n swap ? SUSHISWAP_MULTISWAPPER_ADDRESS[chainId || 1] : ''\n )\n }\n if (borrowValueSet && trade) {\n const path = trade.route.path.map((token) => token.address) || []\n\n if (path.length > 4) {\n throw 'Path too long'\n }\n\n console.log('debug', [\n pair.asset.address,\n pair.collateral.address,\n extraCollateral,\n path.length > 2 ? path[1] : AddressZero,\n path.length > 3 ? path[2] : AddressZero,\n account,\n toShare(pair.collateral, collateralValue.toBigNumber(pair.collateral.tokenInfo.decimals)),\n borrowValue.toBigNumber(pair.asset.tokenInfo.decimals),\n ])\n\n const data = defaultAbiCoder.encode(\n ['address', 'address', 'uint256', 'address', 'address', 'address', 'uint256'],\n [\n pair.asset.address,\n pair.collateral.address,\n extraCollateral,\n path.length > 2 ? path[1] : AddressZero,\n path.length > 3 ? path[2] : AddressZero,\n account,\n toShare(pair.collateral, collateralValue.toBigNumber(pair.collateral.tokenInfo.decimals)),\n ]\n )\n\n cooker.action(\n SUSHISWAP_MULTISWAPPER_ADDRESS[chainId || 1],\n ZERO,\n hexConcat([hexlify('0x3087d742'), data]),\n false,\n true,\n 1\n )\n }\n if (collateralValueSet) {\n cooker.addCollateral(\n swap ? BigNumber.from(-1) : collateralValue.toBigNumber(pair.collateral.tokenInfo.decimals),\n useBentoCollateral || swap\n )\n }\n\n if (collateralValueSet) {\n if (borrowValueSet) {\n summary = trade ? 'Borrow, swap and add collateral' : 'Add collateral and borrow'\n } else {\n summary = 'Add collateral'\n }\n } else if (borrowValueSet) {\n summary = trade ? 'Borrow, swap and add as collateral' : 'Borrow'\n }\n\n return summary\n }\n\n function onMultiply(multiplier: string) {\n const multipliedCollateral = swapCollateral.add(\n swapCollateral.mulDiv(\n multiplier.toBigNumber(pair.collateral.tokenInfo.decimals),\n '1'.toBigNumber(pair.collateral.tokenInfo.decimals)\n )\n )\n\n const multipliedBorrow = multipliedCollateral.mulDiv(e10(16).mul('75'), pair.currentExchangeRate)\n\n // console.log({\n // original: swapCollateral.toFixed(pair.collateral.tokenInfo.decimals),\n // multiplied: swapCollateral\n // .add(\n // swapCollateral.mulDiv(\n // multiplier.toBigNumber(pair.collateral.tokenInfo.decimals),\n // '1'.toBigNumber(pair.collateral.tokenInfo.decimals)\n // )\n // )\n // .toFixed(pair.collateral.tokenInfo.decimals),\n // borrow: multipliedBorrow.toFixed(pair.asset.tokenInfo.decimals),\n // })\n\n // console.log('multipliedBorrow:', multipliedBorrow)\n\n setBorrowValue(multipliedBorrow.toFixed(pair.asset.tokenInfo.decimals))\n }\n\n return (\n <>\n
Borrow {pair.asset.tokenInfo.symbol}
\n\n \n\n \n\n {collateralValueSet && (\n \n )}\n\n {borrowValueSet && (\n \n )}\n\n {collateralValueSet && (\n <>\n
\n {['0.25', '0.5', '0.75', '1', '1.25', '1.5', '1.75', '2.0'].map((multipler, i) => (\n {\n onMultiply(multipler)\n setSwap(true)\n }}\n className=\"mr-4 text-md focus:ring-pink\"\n >\n {multipler}x\n \n ))}\n\n {/*
\n {\n onMultiply(e.target.value)\n }}\n min=\"0\"\n max=\"2\"\n step=\"0.01\"\n className=\"w-full slider\"\n />\n
\n
1x
\n
2x
\n
3x
\n
\n
*/}\n
\n \n )}\n\n \n\n \n\n {swap && trade && }\n\n {(collateralValueSet ||\n (borrowValueSet && !pair.userCollateralAmount.value.isZero()) ||\n (swap && (priceImpactSeverity < 3 || isExpertMode))) && (\n \n )}\n\n (\n \n \n \n )}\n />\n \n )\n}\n","import { ExchangeRateCheckBox, SwapCheckbox } from './Checkbox'\nimport { KashiApproveButton, TokenApproveButton } from './Button'\nimport {\n Percent,\n SUSHISWAP_MULTISWAPPER_ADDRESS,\n SUSHISWAP_MULTI_EXACT_SWAPPER_ADDRESS,\n WNATIVE,\n} from '@sushiswap/core-sdk'\nimport React, { useContext, useMemo, useState } from 'react'\nimport { Warning, Warnings } from '../../entities/Warnings'\nimport { ZERO, e10, maximum, minimum } from '../../functions/math'\nimport { computeRealizedLPFeePercent, warningSeverity } from '../../functions/prices'\nimport { hexConcat, hexlify } from '@ethersproject/bytes'\nimport { toAmount, toShare } from '../../functions/bentobox'\nimport {\n useExpertModeManager,\n useUserSlippageTolerance,\n useUserSlippageToleranceWithDefault,\n} from '../../state/user/hooks'\nimport { useV2TradeExactIn, useV2TradeExactOut } from '../../hooks/useV2Trades'\n\nimport { AddressZero } from '@ethersproject/constants'\nimport { BigNumber } from '@ethersproject/bignumber'\nimport Button from '../../components/Button'\nimport { Field } from '../../state/swap/actions'\nimport { KashiCooker } from '../../entities'\nimport SmartNumberInput from './SmartNumberInput'\nimport TradeReview from './TradeReview'\nimport { TransactionReview } from '../../entities/TransactionReview'\nimport TransactionReviewView from './TransactionReview'\nimport WarningsView from './WarningsList'\nimport { defaultAbiCoder } from '@ethersproject/abi'\nimport { tryParseAmount } from '../../functions/parse'\nimport { useActiveWeb3React } from '../../services/web3'\nimport { useCurrency } from '../../hooks/Tokens'\nimport { useKashiInfo } from './context'\n\ninterface RepayProps {\n pair: any\n}\n\nconst DEFAULT_KASHI_REPAY_SLIPPAGE_TOLERANCE = new Percent(5, 100)\n\nexport default function Repay({ pair }: RepayProps) {\n const { account, chainId } = useActiveWeb3React()\n const info = useKashiInfo()\n\n // State\n const [useBentoRepay, setUseBentoRepay] = useState(pair.asset.bentoBalance.gt(0))\n const [useBentoRemove, setUseBentoRemoveCollateral] = useState(true)\n\n const [repayValue, setRepayAssetValue] = useState('')\n const [removeValue, setRemoveCollateralValue] = useState('')\n const [pinRemoveMax, setPinRemoveMax] = useState(false)\n const [pinRepayMax, setPinRepayMax] = useState(false)\n const [updateOracle, setUpdateOracle] = useState(false)\n const [swap, setSwap] = useState(false)\n\n const assetToken = useCurrency(pair.asset.address) || undefined\n const collateralToken = useCurrency(pair.collateral.address) || undefined\n\n // Calculated\n const assetNative = WNATIVE[chainId || 1].address === pair.asset.address\n\n const balance = useBentoRepay\n ? toAmount(pair.asset, pair.asset.bentoBalance)\n : assetNative\n ? info?.ethBalance\n : pair.asset.balance\n\n const displayUpdateOracle = pair.currentExchangeRate.gt(0) ? updateOracle : true\n\n const displayRepayValue = pinRepayMax\n ? minimum(pair.currentUserBorrowAmount.value, balance).toFixed(pair.asset.tokenInfo.decimals)\n : repayValue\n\n const nextUserBorrowAmount = pair.currentUserBorrowAmount.value.sub(\n displayRepayValue.toBigNumber(pair.asset.tokenInfo.decimals)\n )\n\n const nextMinCollateralOracle = nextUserBorrowAmount.mulDiv(pair.oracleExchangeRate, e10(16).mul('75'))\n const nextMinCollateralSpot = nextUserBorrowAmount.mulDiv(pair.spotExchangeRate, e10(16).mul('75'))\n const nextMinCollateralStored = nextUserBorrowAmount.mulDiv(\n displayUpdateOracle ? pair.oracleExchangeRate : pair.currentExchangeRate,\n e10(16).mul('75')\n )\n const nextMinCollateralMinimum = maximum(nextMinCollateralOracle, nextMinCollateralSpot, nextMinCollateralStored)\n const nextMaxRemoveCollateral = maximum(\n pair.userCollateralAmount.value.sub(nextMinCollateralMinimum.mul(100).div(95)),\n ZERO\n )\n const maxRemoveCollateral = nextMaxRemoveCollateral.toFixed(pair.collateral.tokenInfo.decimals)\n\n const displayRemoveValue = pinRemoveMax ? maxRemoveCollateral : removeValue\n\n // Swap\n // const [allowedSlippage] = useUserSlippageTolerance(); // 10 = 0.1%\n const allowedSlippage = useUserSlippageToleranceWithDefault(DEFAULT_KASHI_REPAY_SLIPPAGE_TOLERANCE)\n\n const parsedAmount = tryParseAmount(pair.currentUserBorrowAmount.string, assetToken)\n\n const trade = useV2TradeExactOut(collateralToken, parsedAmount) || undefined\n\n const { realizedLPFee, priceImpact } = useMemo(() => {\n if (!trade) return { realizedLPFee: undefined, priceImpact: undefined }\n\n const realizedLpFeePercent = computeRealizedLPFeePercent(trade)\n const realizedLPFee = trade.inputAmount.multiply(realizedLpFeePercent)\n const priceImpact = trade.priceImpact.subtract(realizedLpFeePercent)\n return { priceImpact, realizedLPFee }\n }, [trade])\n\n // const maxAmountIn = swap\n // ? computeSlippageAdjustedAmounts(foundTrade, allowedSlippage)\n // [Field.INPUT]?.toFixed(pair.collateral.tokenInfo.decimals)\n // .toBigNumber(pair.collateral.tokenInfo.decimals) || ZERO\n // : ZERO;\n\n const maxAmountIn =\n swap && trade\n ? trade\n .maximumAmountIn(allowedSlippage)\n .toFixed(pair.collateral.tokenInfo.decimals)\n .toBigNumber(pair.collateral.tokenInfo.decimals)\n : ZERO\n\n // const nextUserCollateralValue = pair.userCollateralAmount.value.add(collateralValue.toBigNumber(pair.collateral.tokenInfo.decimals)).add(extraCollateral)\n\n const nextUserCollateralAmount = pair.userCollateralAmount.value.sub(\n displayRemoveValue.toBigNumber(pair.collateral.tokenInfo.decimals)\n )\n\n const nextMaxBorrowableOracle = nextUserCollateralAmount.mulDiv(e10(16).mul('75'), pair.oracleExchangeRate)\n const nextMaxBorrowableSpot = nextUserCollateralAmount.mulDiv(e10(16).mul('75'), pair.spotExchangeRate)\n const nextMaxBorrowableStored = nextUserCollateralAmount.mulDiv(\n e10(16).mul('75'),\n displayUpdateOracle ? pair.oracleExchangeRate : pair.currentExchangeRate\n )\n const nextMaxBorrowMinimum = minimum(nextMaxBorrowableOracle, nextMaxBorrowableSpot, nextMaxBorrowableStored)\n const nextMaxBorrowSafe = nextMaxBorrowMinimum.mulDiv('95', '100').sub(pair.currentUserBorrowAmount.value)\n const nextMaxBorrowPossible = maximum(minimum(nextMaxBorrowSafe, pair.maxAssetAvailable), ZERO)\n\n const nextHealth = pair.currentUserBorrowAmount.value\n .sub(displayRepayValue.toBigNumber(pair.asset.tokenInfo.decimals))\n .mulDiv(BigNumber.from('1000000000000000000'), nextMaxBorrowMinimum)\n\n const transactionReview = new TransactionReview()\n\n if (displayRepayValue || displayRemoveValue) {\n transactionReview.addTokenAmount(\n 'Borrow Limit',\n pair.maxBorrowable.safe.value,\n nextMaxBorrowSafe.add(displayRepayValue.toBigNumber(pair.asset.tokenInfo.decimals)),\n pair.asset\n )\n transactionReview.addPercentage('Health', pair.health.value, nextHealth)\n }\n\n const warnings = new Warnings()\n .addError(\n assetNative && !useBentoRepay && pinRepayMax,\n `You cannot MAX repay ${pair.asset.tokenInfo.symbol} directly from your wallet. Please deposit your ${pair.asset.tokenInfo.symbol} into the BentoBox first, then repay. Because your debt is slowly accrueing interest we can't predict how much it will be once your transaction gets mined.`\n )\n .addError(\n displayRemoveValue.toBigNumber(pair.collateral.tokenInfo.decimals).gt(pair.userCollateralAmount.value),\n 'You have insufficient collateral. Please enter a smaller amount or repay more.'\n )\n .addError(\n displayRepayValue.toBigNumber(pair.asset.tokenInfo.decimals).gt(pair.currentUserBorrowAmount.value),\n \"You can't repay more than you owe. To fully repay, please click the 'max' button.\",\n new Warning(\n balance?.lt(displayRepayValue.toBigNumber(pair.asset.tokenInfo.decimals)),\n `Please make sure your ${\n useBentoRepay ? 'BentoBox' : 'wallet'\n } balance is sufficient to repay and then try again.`,\n true\n )\n )\n .addError(\n displayRemoveValue\n .toBigNumber(pair.collateral.tokenInfo.decimals)\n .gt(maximum(pair.userCollateralAmount.value.sub(nextMinCollateralMinimum), ZERO)),\n 'Removing this much collateral would put you into insolvency.',\n new Warning(\n displayRemoveValue.toBigNumber(pair.collateral.tokenInfo.decimals).gt(nextMaxRemoveCollateral),\n 'Removing this much collateral would put you very close to insolvency.'\n )\n )\n\n const removeValueSet =\n !displayRemoveValue.toBigNumber(pair.collateral.tokenInfo.decimals).isZero() ||\n (pinRemoveMax && pair.userCollateralShare.gt(ZERO))\n\n const repayValueSet = !displayRepayValue.toBigNumber(pair.asset.tokenInfo.decimals).isZero()\n\n // const trade = swap ? foundTrade : undefined;\n // const trade = swap && removeValueSet ? foundTrade : undefined\n\n const [isExpertMode] = useExpertModeManager()\n\n // const { priceImpactWithoutFee } = computeTradePriceBreakdown(trade);\n\n const priceImpactSeverity = warningSeverity(priceImpact)\n\n let actionName = 'Nothing to do'\n\n if (removeValueSet) {\n if (repayValueSet) {\n actionName = 'Repay and remove collateral'\n } else {\n actionName = 'Remove collateral'\n }\n } else if (repayValueSet) {\n actionName = 'Repay'\n } else if (swap) {\n actionName = 'Automatic repay'\n }\n\n // const actionDisabled = false\n\n const actionDisabled =\n (!swap &&\n !trade &&\n displayRepayValue.toBigNumber(pair.asset.tokenInfo.decimals).lte(0) &&\n displayRemoveValue.toBigNumber(pair.collateral.tokenInfo.decimals).lte(0) &&\n (!pinRemoveMax || pair.userCollateralShare.isZero())) ||\n warnings.some((warning) => warning.breaking)\n\n function resetRepayState() {\n setPinRepayMax(false)\n setPinRemoveMax(false)\n setRemoveCollateralValue('')\n setRepayAssetValue('')\n }\n\n // Handlers\n async function onExecute(cooker: KashiCooker) {\n let summary = ''\n\n if (swap && trade) {\n const share = toShare(pair.collateral, pair.userCollateralAmount.value)\n\n cooker.removeCollateral(pair.userCollateralShare, true)\n cooker.bentoTransferCollateral(pair.userCollateralShare, SUSHISWAP_MULTI_EXACT_SWAPPER_ADDRESS[chainId || 1])\n cooker.repayShare(pair.userBorrowPart)\n\n const path = trade.route.path.map((token) => token.address) || []\n\n console.log('debug', [\n pair.collateral.address,\n pair.asset.address,\n maxAmountIn,\n path.length > 2 ? path[1] : AddressZero,\n path.length > 3 ? path[2] : AddressZero,\n account,\n pair.userCollateralShare,\n ])\n\n const data = defaultAbiCoder.encode(\n ['address', 'address', 'uint256', 'address', 'address', 'address', 'uint256'],\n [\n pair.collateral.address,\n pair.asset.address,\n maxAmountIn,\n path.length > 2 ? path[1] : AddressZero,\n path.length > 3 ? path[2] : AddressZero,\n account,\n pair.userCollateralShare,\n ]\n )\n\n cooker.action(\n SUSHISWAP_MULTI_EXACT_SWAPPER_ADDRESS[chainId || 1],\n ZERO,\n hexConcat([hexlify('0x3087d742'), data]),\n true,\n false,\n 1\n )\n\n cooker.repayPart(pair.userBorrowPart, true)\n\n if (!useBentoRemove) {\n cooker.bentoWithdrawCollateral(ZERO, BigNumber.from(-1))\n }\n\n summary = 'Repay All'\n } else {\n if (pinRepayMax && pair.userBorrowPart.gt(0) && balance.gte(pair.currentUserBorrowAmount.value)) {\n cooker.repayPart(pair.userBorrowPart, useBentoRepay)\n summary = 'Repay Max'\n } else if (displayRepayValue.toBigNumber(pair.asset.tokenInfo.decimals).gt(0)) {\n cooker.repay(displayRepayValue.toBigNumber(pair.asset.tokenInfo.decimals), useBentoRepay)\n summary = 'Repay'\n }\n if (\n displayRemoveValue.toBigNumber(pair.collateral.tokenInfo.decimals).gt(0) ||\n (pinRemoveMax && pair.userCollateralShare.gt(0))\n ) {\n const share =\n pinRemoveMax &&\n (nextUserBorrowAmount.isZero() ||\n (pinRepayMax && pair.userBorrowPart.gt(0) && balance.gte(pair.currentUserBorrowAmount.value)))\n ? pair.userCollateralShare\n : toShare(pair.collateral, displayRemoveValue.toBigNumber(pair.collateral.tokenInfo.decimals))\n\n cooker.removeCollateral(share, useBentoRemove)\n summary += (summary ? ' and ' : '') + 'Remove Collateral'\n }\n }\n\n resetRepayState()\n\n return summary\n }\n\n return (\n <>\n
Repay {pair.asset.tokenInfo.symbol}
\n\n \n\n \n\n {!pair.currentUserBorrowAmount.value.isZero() && (\n {\n resetRepayState()\n setSwap(value)\n }}\n title={`Swap ${pair.collateral.tokenInfo.symbol} collateral for ${pair.asset.tokenInfo.symbol} and repay`}\n help=\"Swapping your removed collateral tokens and repay allows for reducing your borrow by using your collateral and/or to unwind leveraged positions.\"\n />\n )}\n\n {removeValueSet && (\n \n )}\n\n \n\n {swap && trade && }\n\n {swap && (priceImpactSeverity < 3 || isExpertMode) && (\n \n )}\n\n (\n \n \n \n )}\n />\n \n )\n}\n","import { Direction, TransactionReview } from '../../entities/TransactionReview'\nimport { KashiApproveButton, TokenApproveButton } from './Button'\nimport React, { useState } from 'react'\nimport { ZERO, e10 } from '../../functions/math'\n\nimport Button from '../../components/Button'\nimport KashiCooker from '../../entities/KashiCooker'\nimport SmartNumberInput from './SmartNumberInput'\nimport TransactionReviewList from './TransactionReview'\nimport { WNATIVE } from '@sushiswap/core-sdk'\nimport { Warnings } from '../../entities/Warnings'\nimport WarningsList from './WarningsList'\nimport { formatNumber } from '../../functions/format'\nimport { t } from '@lingui/macro'\nimport { useActiveWeb3React } from '../../services/web3'\nimport { useCurrency } from '../../hooks/Tokens'\nimport { useKashiInfo } from './context'\nimport { useLingui } from '@lingui/react'\n\nexport default function Deposit({ pair }: any): JSX.Element {\n const { chainId } = useActiveWeb3React()\n const assetToken = useCurrency(pair.asset.address) || undefined\n\n const { i18n } = useLingui()\n\n // State\n const [useBento, setUseBento] = useState(pair.asset.bentoBalance.gt(0))\n const [value, setValue] = useState('')\n\n const info = useKashiInfo()\n\n // Calculated\n const assetNative = WNATIVE[chainId || 1].address === pair.asset.address\n const balance = useBento ? pair.asset.bentoBalance : assetNative ? info?.ethBalance : pair.asset.balance\n\n const max = useBento ? pair.asset.bentoBalance : assetNative ? info?.ethBalance : pair.asset.balance\n\n const warnings = new Warnings()\n\n warnings.add(\n balance?.lt(value.toBigNumber(pair.asset.tokenInfo.decimals)),\n i18n._(\n t`Please make sure your ${useBento ? 'BentoBox' : 'wallet'} balance is sufficient to deposit and then try again.`\n ),\n true\n )\n\n const transactionReview = new TransactionReview()\n\n if (value && !warnings.broken) {\n const amount = value.toBigNumber(pair.asset.tokenInfo.decimals)\n const newUserAssetAmount = pair.currentUserAssetAmount.value.add(amount)\n transactionReview.addTokenAmount(\n i18n._(t`Balance`),\n pair.currentUserAssetAmount.value,\n newUserAssetAmount,\n pair.asset\n )\n transactionReview.addUSD(i18n._(t`Balance USD`), pair.currentUserAssetAmount.value, newUserAssetAmount, pair.asset)\n const newUtilization = e10(18).mulDiv(pair.currentBorrowAmount.value, pair.currentAllAssets.value.add(amount))\n transactionReview.addPercentage(i18n._(t`Borrowed`), pair.utilization.value, newUtilization)\n if (pair.currentExchangeRate.isZero()) {\n transactionReview.add(\n 'Exchange Rate',\n formatNumber(\n pair.currentExchangeRate.toFixed(18 + pair.collateral.tokenInfo.decimals - pair.asset.tokenInfo.decimals)\n ),\n formatNumber(\n pair.oracleExchangeRate.toFixed(18 + pair.collateral.tokenInfo.decimals - pair.asset.tokenInfo.decimals)\n ),\n Direction.UP\n )\n }\n transactionReview.addPercentage(i18n._(t`Supply APR`), pair.supplyAPR.value, pair.currentSupplyAPR.value)\n }\n\n // Handlers\n async function onExecute(cooker: KashiCooker): Promise {\n if (pair.currentExchangeRate.isZero()) {\n cooker.updateExchangeRate(false, ZERO, ZERO)\n }\n cooker.addAsset(value.toBigNumber(pair.asset.tokenInfo.decimals), useBento)\n return `${i18n._(t`Deposit`)} ${pair.asset.tokenInfo.symbol}`\n }\n\n return (\n <>\n
Deposit {pair.asset.tokenInfo.symbol}
\n\n \n\n \n \n\n (\n \n onCook(pair, onExecute)}\n disabled={value.toBigNumber(pair.asset.tokenInfo.decimals).lte(0) || warnings.broken}\n >\n {i18n._(t`Deposit`)}\n \n \n )}\n />\n \n )\n}\n","import React, { useState } from 'react'\nimport { e10, minimum } from '../../functions/math'\n\nimport Button from '../../components/Button'\nimport { KashiApproveButton } from './Button'\nimport KashiCooker from '../../entities/KashiCooker'\nimport SmartNumberInput from './SmartNumberInput'\nimport { TransactionReview } from '../../entities/TransactionReview'\nimport TransactionReviewView from './TransactionReview'\nimport { Warnings } from '../../entities/Warnings'\nimport WarningsView from './WarningsList'\nimport { t } from '@lingui/macro'\nimport { useActiveWeb3React } from '../../services/web3'\nimport { useKashiApprovalPending } from '../../state/application/hooks'\nimport useKashiApproveCallback from '../../hooks/useKashiApproveCallback'\nimport { useLingui } from '@lingui/react'\n\nexport default function LendWithdrawAction({ pair }: any): JSX.Element {\n const { account } = useActiveWeb3React()\n const pendingApprovalMessage = useKashiApprovalPending()\n\n const { i18n } = useLingui()\n\n // State\n const [useBento, setUseBento] = useState(pair.asset.bentoBalance.gt(0))\n const [value, setValue] = useState('')\n const [pinMax, setPinMax] = useState(false)\n\n const [kashiApprovalState, approveKashiFallback, kashiPermit, onApprove, onCook] = useKashiApproveCallback()\n\n // Calculated\n const max = minimum(pair.maxAssetAvailable, pair.currentUserAssetAmount.value)\n const displayValue = pinMax ? max.toFixed(pair.asset.tokenInfo.decimals) : value\n\n const fraction = pinMax\n ? minimum(pair.userAssetFraction, pair.maxAssetAvailableFraction)\n : value.toBigNumber(pair.asset.tokenInfo.decimals).mulDiv(pair.currentTotalAsset.base, pair.currentAllAssets.value)\n\n const warnings = new Warnings()\n .add(\n pair.currentUserAssetAmount.value.lt(value.toBigNumber(pair.asset.tokenInfo.decimals)),\n i18n._(\n t`Please make sure your ${\n useBento ? 'BentoBox' : 'wallet'\n } balance is sufficient to withdraw and then try again.`\n ),\n true\n )\n .add(\n pair.maxAssetAvailableFraction.lt(fraction),\n i18n._(\n t`The isn't enough liquidity available at the moment to withdraw this amount. Please try withdrawing less or later.`\n ),\n true\n )\n\n const transactionReview = new TransactionReview()\n if (displayValue && !warnings.broken) {\n const amount = displayValue.toBigNumber(pair.asset.tokenInfo.decimals)\n const newUserAssetAmount = pair.currentUserAssetAmount.value.sub(amount)\n transactionReview.addTokenAmount(\n i18n._(t`Balance`),\n pair.currentUserAssetAmount.value,\n newUserAssetAmount,\n pair.asset\n )\n transactionReview.addUSD(i18n._(t`Balance USD`), pair.currentUserAssetAmount.value, newUserAssetAmount, pair.asset)\n\n const newUtilization = e10(18).mulDiv(pair.currentBorrowAmount.value, pair.currentAllAssets.value.sub(amount))\n transactionReview.addPercentage(i18n._(t`Borrowed`), pair.utilization.value, newUtilization)\n }\n\n // Handlers\n async function onExecute(cooker: KashiCooker) {\n const fraction = pinMax\n ? minimum(pair.userAssetFraction, pair.maxAssetAvailableFraction)\n : value\n .toBigNumber(pair.asset.tokenInfo.decimals)\n .mulDiv(pair.currentTotalAsset.base, pair.currentAllAssets.value)\n\n cooker.removeAsset(fraction, useBento)\n return `${i18n._(t`Withdraw`)} ${pair.asset.tokenInfo.symbol}`\n }\n\n return (\n <>\n
\n {i18n._(t`Withdraw`)} {pair.asset.tokenInfo.symbol}\n
\n\n \n\n \n \n\n (\n onCook(pair, onExecute)}\n disabled={displayValue.toBigNumber(pair.asset.tokenInfo.decimals).lte(0) || warnings.broken}\n >\n {i18n._(t`Withdraw`)}\n \n )}\n />\n \n )\n}\n","import { ONE_BIPS } from '../../../constants'\nimport { Percent } from '@sushiswap/core-sdk'\nimport React from 'react'\nimport { warningSeverity } from '../../../functions/prices'\n\nconst SEVERITY = {\n 0: 'text-green',\n 1: 'text-high-emphesis',\n 2: 'text-yellow',\n 3: 'text-red',\n 4: 'text-red',\n}\n\nexport default function FormattedPriceImpact({ priceImpact }: { priceImpact?: Percent }) {\n return (\n
\n {priceImpact ? `${priceImpact.multiply(-1).toFixed(2)}%` : '-'}\n
\n )\n}\n","import { Currency, Trade, TradeType } from '@sushiswap/core-sdk'\nimport React, { Fragment, memo } from 'react'\n\nimport { ChevronRightIcon } from '@heroicons/react/outline'\nimport { unwrappedToken } from '../../../functions/currency/wrappedCurrency'\n\nconst SwapRoute = memo(({ trade }: { trade: Trade }) => {\n return (\n
\n {trade.route.path.map((token, i, path) => {\n const isLastItem: boolean = i === path.length - 1\n const currency = unwrappedToken(token)\n return (\n \n
\n
{currency.symbol}
\n
\n {isLastItem ? null : }\n
\n )\n })}\n
\n )\n})\n\nSwapRoute.displayName = 'SwapRoute'\n\nexport default SwapRoute\n","import { Currency, Percent, Trade, TradeType } from '@sushiswap/core-sdk'\n\nimport { useMemo } from 'react'\nimport { useUserSlippageToleranceWithDefault } from '../state/user/hooks'\n\nconst V2_SWAP_DEFAULT_SLIPPAGE = new Percent(50, 10_000) // .50%\nconst ONE_TENTHS_PERCENT = new Percent(10, 10_000) // .10%\n\nexport default function useSwapSlippageTolerance(trade: Trade | undefined): Percent {\n const defaultSlippageTolerance = useMemo(() => {\n if (!trade) return ONE_TENTHS_PERCENT\n return V2_SWAP_DEFAULT_SLIPPAGE\n }, [trade])\n return useUserSlippageToleranceWithDefault(defaultSlippageTolerance)\n}\n","export default {\"src\":\"/_next/static/media/kashi-logo.f3f27417.png\",\"height\":465,\"width\":1819,\"blurDataURL\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAACCAMAAABSSm3fAAAAGFBMVEWO0+uQ1OyS2/Cf4vVjweBzx+Ryw99ft9KVoV0CAAAACHRSTlNVTZ+HJT1BY+aNFMcAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAaSURBVAiZY2BmYmFhZGRkZWBmYmdlYGBgAwABngAtcL+7IAAAAABJRU5ErkJggg==\"};","import Container from '../../components/Container'\nimport Footer from '../../components/Footer'\nimport Header from '../../components/Header'\nimport Image from '../../components/Image'\nimport Link from 'next/link'\nimport Main from '../../components/Main'\nimport NavLink from '../../components/NavLink'\nimport Popups from '../../components/Popups'\nimport React from 'react'\nimport kashiLogo from '../../../public/kashi-logo.png'\nimport { useRouter } from 'next/router'\n\ninterface LayoutProps {\n left?: JSX.Element\n children?: React.ReactChild | React.ReactChild[]\n right?: JSX.Element\n}\n\nexport default function Layout({\n left = undefined,\n children = undefined,\n right = undefined,\n}: LayoutProps): JSX.Element {\n const router = useRouter()\n return (\n
\n
\n
\n \n
\n
\n \n \n \"Kashi\"\n \n \n
\n
\n \n
\n
\n
\n {left && (\n
\n {left}\n
\n )}\n \n {children}\n
\n {right && (\n
\n {right}\n
\n )}\n
\n \n \n \n