{"version":3,"file":"static/js/16.85803faf837989eb4cae.chunk.js","mappings":";gYAQA,QAAgBA,GACZC,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKC,UAAW,GAAGF,EAAME,8BACxBF,aAAK,EAALA,EAAOG,MAAOF,EAAAA,cAAA,OAAKC,UAAW,GAAGF,EAAME,2BAA4BF,aAAK,EAALA,EAAOG,UC4D9EC,gnBAAL,SAAKA,GACDA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,+CACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,oBACH,CAPD,CAAKA,IAAAA,EAAO,KAyBN,MAAOC,UAA0BJ,IAAAA,UAwBnCK,YAAYN,GACRO,MAAMP,GAxBH,KAAAQ,MAAiC,CACpCC,QAAQ,EACRC,MAAO,GACPC,SAAU,GACVC,gBAAiB,GACjBC,QAAST,EAAQU,OACjBC,gBAAiB,KACjBC,kBAAmB,GAGhB,KAAAC,qBAAuC,CAC1CC,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCE,GAAI,CAAEJ,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,IAEvCG,UAAU,GAGP,KAAAC,gBAAqDzB,IAAAA,YAE3C,KAAA0B,iBAAuD1B,IAAAA,YAwEvD,KAAA2B,kBAAoB,KACjC,MACIC,WAAW,sBAAEC,EAAqB,2BAAEC,EAA0B,uBAAEC,IAChEC,KAAKjC,MAET,OACIC,IAAAA,cAAA,QACIC,UAAU,wCAAuC,aACrC4B,EACZI,KAAK,mCACLC,KAAK,OACLC,aAAa,MACbC,SAAUJ,KAAKK,iBAEdL,KAAKzB,MAAMI,iBAAmB2B,EAAAA,gBAAgBC,YAAYP,KAAKzB,MAAMI,kBAClEX,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,SAAOC,UAAW,2CAA4CuC,QAAS,6CAClET,GAEL/B,IAAAA,cAAA,UACIyC,GAAG,6CACHxC,UAAU,kFACVyC,SAAUV,KAAKW,2BAEdX,KAAKY,qBAIlB5C,IAAAA,cAAA,OAAKC,UAAU,qEACXD,IAAAA,cAAA,SACI6C,KAAK,OACLC,WAAS,eACGhB,EACZ7B,UAAU,0DACV8C,YAAajB,EACbkB,MAAOhB,KAAKzB,MAAME,MAClBiC,SAAUV,KAAKiB,eACfC,IAAKlB,KAAKP,gBACV0B,UAAW,MAEfnD,IAAAA,cAAA,UAAQC,UAAU,0CAAyC,aAAa4B,EAAuBuB,MAAM,aAEtG,EAIE,KAAAf,gBAAmBgB,IAChCA,EAAMC,iBAEN,MAAM7C,EAAQ8C,IAAIvB,KAAM,gCAAiC,MAEpDvB,IAILuB,KAAKwB,SAAS,CACV5C,QAAST,EAAQsD,UAGrBzB,KAAK0B,kBAAkBjD,GAClBkD,MAAKC,IACoB,IAAlBA,EAAOC,OACP7B,KAAKwB,SAAS,CACV9C,SAAUkD,EACVhD,QAAST,EAAQ2D,WAGrB9B,KAAKwB,SAAS,CACV9C,SAAUkD,EACVhD,QAAST,EAAQ4D,iBAI5BC,OAAMC,IACHjC,KAAKwB,SAAS,CACV5C,QAAST,EAAQ+D,OACnB,IACJ,EAGO,KAAAC,yBAA4Bd,IACzCrB,KAAKwB,SAAS,CACVY,kBAAmBf,EAAMgB,OAAOrB,OAClC,EAGW,KAAAsB,cAAgBC,UAC7B,MAAM,cACFC,EACAC,SACIC,aAAa,UAAEC,KAEnB3C,KAAKjC,MAAM6E,QACTC,EAAgB,IAAIC,EAAAA,qBAAqBC,EAAQC,SAAUL,EAAW,QAAIM,EAAWjD,KAAKjC,MAAM6E,QAAQH,SACxGS,QAAuBC,EAAAA,EAAAA,oBAAmBN,EAAeL,GAE/D,IAAKU,EAED,OADAlD,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,oCAC5BoB,QAAQC,QAAQ,IAG3B,MAAMC,QAAmBvD,KAAKwD,sBAAsBT,GAQpD,OANA/C,KAAKwB,SAAS,CACViC,0BAA2BF,EAC3B3E,QAAST,EAAQuF,qBACjB5E,gBAAiBoE,IAGdK,CAAU,EAGJ,KAAAtC,eAAkBI,IAC/BrB,KAAKwB,SAAS,CACV/C,MAAO4C,EAAMgB,OAAOrB,OACtB,EAGW,KAAA2C,0BAA4B,KACzC3D,KAAKwB,SAAS,CACV5C,QAAST,EAAQ4D,aACnB,EAGW,KAAA6B,qBAAwB3D,IACrC,MAAM4D,EAAa5D,GAAQ6D,SAAS7D,EAAK8D,QAAQ,IAAIC,OAAOhE,KAAKzB,MAAME,MAAO,KAAM,oBAEpF,OACIT,IAAAA,cAAA,OACIC,UAAU,0CAEVgG,wBAAyB,CAAEC,OAAQL,GAAc,KACnD,EAIO,KAAAM,iBAAmB,IACzBnE,KAAKjC,MAAM6B,UAAUwE,0BACvBL,QAAQ,UAAW/D,KAAKzB,MAAMG,SAASmD,OAAOwC,YAC9CN,QAAQ,YAAa,GAAG/D,KAAKjC,MAAM6B,UAAU0E,4BAA4BtE,KAAKzB,MAAMG,SAASmD,OAAS,EAAI,IAAM,MAuExG,KAAA0C,0BAA4BhC,UACzC,MAAM,gBACFiC,EACA5B,SAAS,cAAEJ,GAAe,oCAC1BiC,GACAzE,KAAKjC,MACH2G,EAAY1E,KAAKzB,MAAMQ,kBACvB4F,EAAQF,EACR,IAAIG,EAAAA,4BACAJ,EACAK,EAAO9B,QAAQC,SACf6B,EAAOC,SACPD,EAAO9B,QAAQgC,sBAAwB,KACvCN,EACAC,GAEJ,IAAIE,EAAAA,4BACAJ,EACAK,EAAO9B,QAAQC,SACf6B,EAAOC,SACPD,EAAO9B,QAAQgC,sBAAwB,MAE3CnD,QAAeoD,EAAAA,EAAAA,wBAAuBL,EAAOnC,GAOnD,OANAxC,KAAKwB,SAAS,CACVhD,QAAQ,EACRyG,YAAY,IAGhBC,OAAOC,SAASC,SACTxD,CAAM,EAuCA,KAAAjB,0BAA6BU,IAC1CrB,KAAKwB,SAAS,CACVzC,kBAAmBsG,OAAOC,SAASjE,EAAMgB,OAAOrB,MAAO,KACzD,EA+CW,KAAAuE,oBAAsB,KACnC,GAAIvF,KAAKzB,MAAMC,OAAQ,CACnB,MAAMgH,GAAUC,EAAAA,EAAAA,kBAAiB,QAASzF,KAAKjC,MAAM2H,iBAAmB,uBAAwB,KAChGC,EAAAA,EAAAA,kBAAiB3F,KAAKjC,MAAM2H,iBAAmBF,EAAS,wBACxDxF,KAAK4F,eACL5F,KAAKN,iBAAiBmG,QAASC,QAGnC9F,KAAKwB,SAAS,CACVhD,QAASwB,KAAKzB,MAAMC,OACpBI,QAAST,EAAQU,SAGjBmB,KAAKzB,MAAM0G,aACXC,OAAOC,SAASC,SAChBpF,KAAKwB,SAAS,CACVyD,YAAY,KA5ZxB,CAEOc,sBAAmB,IAAAC,EACM,QAA5BA,EAAAhG,KAAKP,gBAAgBoG,eAAO,IAAAG,GAA5BA,EAA8BF,OAClC,CAEOG,oBACHjG,KAAK4F,cACT,CAEOM,uBAAoB,IAAAC,EACK,QAA5BA,EAAAnG,KAAKP,gBAAgBoG,eAAO,IAAAM,GAA5BA,EAA8BL,OAClC,CAEcM,oBACV,OAAOpG,KAAKzB,MAAMK,UAAYT,EAAQuF,oBAC1C,CAEO2C,sBAAsBC,EAAoCC,GAC7D,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,QAAUuI,CAInD,CAEOE,SACH,MACI5G,WAAW,qBAAE6G,EAAoB,kBAAEC,IACnC1G,KAAKjC,MAEH4I,EAAUC,EAAAA,EAAA,GACT5G,KAAKjC,OAAK,IACbE,UAAW,2BACX4I,OAAQ7G,KAAKuF,oBACb/G,OAAQwB,KAAKzB,MAAMC,OACnBsI,UAAWL,IAGf,OACIzI,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAC+I,EAAAA,MAAKC,OAAAC,OAAA,GAAKN,GACP3I,IAAAA,cAACkJ,EAAAA,YAAW,CAACL,OAAQ7G,KAAKuF,qBACrBvF,KAAKoG,eACFpI,IAAAA,cAAA,UACI6C,KAAK,SACL5C,UAAU,yBAAwB,aACtByI,EACZS,QAASnH,KAAK2D,4BAGrB8C,GAEJzG,KAAKoH,kBAEVpJ,IAAAA,cAAA,UACI6C,KAAK,SACL5C,UAAU,2CAA0C,aACxCwI,EACZU,QAASnH,KAAKuF,oBACdrE,IAAKlB,KAAKN,kBAEV1B,IAAAA,cAAA,aACCyI,GAIjB,CAgJQW,iBACJ,OAAQpH,KAAKzB,MAAMK,SACf,KAAKT,EAAQuF,qBACT,MAAM,gBAAE5E,EAAe,0BAAE2E,GAA8BzD,KAAKzB,MACtD8I,EAAST,EAAAA,EAAA,GACR5G,KAAKjC,OAAK,IACbuJ,cAAetH,KAAKjC,MAAMuJ,eAAiBtH,KAAKhB,qBAChD+D,QAASjE,EACTyE,WAAYE,EACZ8D,qBAAsBvH,KAAKuE,0BAC3BiD,wBAAyBxH,KAAKmC,yBAC9BsF,oBAAqBzH,KAAK4D,qBAC1B8D,WAAY1H,KAAKL,sBAGrB,OAAO3B,IAAAA,cAAC0F,EAAoBsD,OAAAC,OAAA,GAAKI,IAErC,KAAKlJ,EAAQ4D,YACT,MAAM4F,EAAYf,EAAAA,EAAA,GACX5G,KAAKjC,OAAK,IACbuJ,cAAetH,KAAKjC,MAAMuJ,eAAiBtH,KAAKhB,qBAChD4I,aAAc5H,KAAKsC,cACnB5D,SAAUsB,KAAKzB,MAAMG,SACrB+I,oBAAqBzH,KAAK4D,qBAC1B8D,WAAY1H,KAAKL,oBACjBkI,sBAAuB7H,KAAKmE,mBAGhC,OACInG,IAAAA,cAAC8J,EAAAA,UAAS,KACN9J,IAAAA,cAAC+D,EAAWiF,OAAAC,OAAA,GAAKU,KAI7B,KAAKxJ,EAAQsD,QACT,OACIzD,IAAAA,cAAC8J,EAAAA,UAAS,KACL9H,KAAKL,oBACN3B,IAAAA,cAAC+J,EAAO,CAAC9J,UAAU,2BAA2BC,IAAK8B,KAAKjC,MAAM6B,UAAUoI,4BAIpF,KAAK7J,EAAQ2D,SACT,MAAM,0BAAEmG,EAAyB,+BAAEC,GAAmClI,KAAKjC,MAAM6B,UAEjF,OACI5B,IAAAA,cAAC8J,EAAAA,UAAS,KACN9J,IAAAA,cAAA,KAAGC,UAAU,iDAAiD+B,KAAKmE,oBAClEnE,KAAKL,oBACN3B,IAAAA,cAACmK,EAAiB,CAAClG,MAAOgG,EAA2B/J,IAAKgK,KAItE,KAAK/J,EAAQ+D,MACT,OACIlE,IAAAA,cAAC8J,EAAAA,UAAS,KACL9H,KAAKL,oBACN3B,IAAAA,cAAA,OAAKC,UAAU,mBAAkB,YAAW,aACvC+B,KAAKjC,MAAM6B,UAAUwI,qBAKtC,QACI,OAAOpK,IAAAA,cAAC8J,EAAAA,UAAS,KAAE9H,KAAKL,qBAEpC,CAsCQiG,eACJ,MAAM,oCAAEnB,EAAmC,SAAE4D,GAAarI,KAAKjC,MAGzDY,EAAkB8F,GAAuC4D,EAAWA,EAAW,GAG/E3D,GAAY4D,EAAAA,EAAAA,IAAatI,KAAKjC,MAAM6E,QAAQH,UAClD8F,EAAAA,EAAAA,mBAAkB7D,GAElB1E,KAAKwB,SAAS,CACV7C,gBAAiBA,EACjBI,kBAAmB2F,GAE3B,CAEQ9D,mBACJ,MAAM,gBAAEjC,EAAe,kBAAEI,GAAsBiB,KAAKzB,MACpD,OAAII,GAAmB2B,EAAAA,gBAAgBC,YAAY5B,GACxCA,EAAgB6J,KAAKC,IAExB,MAAMC,EAAaD,EAAezF,WAAajE,EAC/C,OACIf,IAAAA,cAAA,UAAQgD,MAAOyH,EAAezF,SAAU2F,IAAKF,EAAezF,SAAU4F,SAAUF,EAAU,gBAAiBA,GACtGD,EAAeI,KACX,IAId,EACX,CAQQnH,kBAAkBoH,GACtB,MACIlG,SAAS,cACLJ,EACAC,SACIC,aAAa,UAAEC,MAGvB3C,KAAKjC,OACH,kBAAEgB,GAAsBiB,KAAKzB,MAC7BwK,EAA6C,CAAC,EAcpD,OAZAA,EAAoBC,QAAU,CAC1BC,UAAWtG,EACXuG,UAAWnK,GAMXgK,EAAoBI,mBAAoB,EAE5CJ,EAAoBK,gBAAkB,IAAIN,MAEnCO,EAAAA,EAAAA,uBAAsB,CAAEC,cAAe9G,GAAiBuG,EACnE,CAEQxG,4BAA4BQ,GAChC,MACIH,SAAS,cACLJ,EACAC,SACIC,aAAa,UAAEC,MAGvB3C,KAAKjC,MACH0C,EAAKsC,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,SAEvE,OAAOwG,EAAAA,EAAAA,iCACH,IAAIC,EAAAA,qCAAqChJ,EAAIkC,EAAW,GAAI3C,KAAKjC,MAAM6E,QAAQH,SAC/ED,EAER,GA5XUkH,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,kCC/FP,MAAOC,UAAiB5L,EAAAA,cAG1BK,YAAYN,EAAuBQ,GAC/BD,MAAMP,GAHO,KAAA8L,WAAiD7L,EAAAA,YA2CjD,KAAA8L,WAAczI,IAC3BrB,KAAKwB,SAAS,CAAEuI,cAAe1I,EAAMgB,OAAOrB,QAExChB,KAAKjC,MAAM2C,UACXV,KAAKjC,MAAM2C,SAAS,CAChBsJ,WAAYhK,KAAKjC,MAAMiM,WACvBC,SAAU5I,EAAMgB,OAAOrB,MACvBkJ,cAAe7I,EAAMgB,OAAO8H,aA9CpCnK,KAAKzB,MAAQ,CACTwL,cAAe,GAEvB,CAEO9D,oBACCjG,KAAK6J,WAAWhE,UAChB7F,KAAK6J,WAAWhE,QAAQkE,cAAgB,EAEhD,CAEOvD,SACH,MAAM,WAAEwD,EAAU,aAAEI,EAAY,aAAEC,GAAiBrK,KAAKjC,MAExD,OACIC,EAAAA,cAAA,UACIyC,GAAI,uBAAuBuJ,IAC3B9I,IAAKlB,KAAK6J,WAAU,aACRQ,EACZpM,UAAU,uBACVyC,SAAUV,KAAK8J,YAEdM,EAAa5B,KACT8B,GACGA,GACItM,EAAAA,cAAA,UACIgD,MAAOsJ,EAAK7J,GACZkI,IAAK2B,EAAK7J,GACVmI,UAAW5I,KAAKzB,MAAMwL,gBAAmBO,EAAK7J,GAAE,iBAChCT,KAAKzB,MAAMwL,gBAAmBO,EAAK7J,IAElD6J,EAAKtJ,SAMlC,EC3EG,MAAMmH,EAAqBpK,GAC9BC,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKC,UAAU,8CACfD,EAAAA,cAAA,OAAKC,UAAU,4CAA4CF,EAAMkE,OACjEjE,EAAAA,cAAA,OAAKC,UAAU,iEAAiEF,EAAMG,oBCqB9F,IAAqBqM,EAArB,cAAmDvM,EAAAA,cAS/CK,YAAYN,GACRO,MAAMP,GAHO,KAAAyM,SAA8CxM,EAAAA,YA2G9C,KAAAyM,aAAe,KAC5B,MAAMC,OAA8BzH,IAAnBjD,KAAKjC,MAAM4M,IAAoB,EAAI3K,KAAKjC,MAAM4M,IAE3DC,MAAM5K,KAAKzB,MAAMsM,eAAiB7K,KAAKzB,MAAMsM,aAAeH,EAC5D1K,KAAKjC,MAAM2C,UAAYV,KAAKjC,MAAM2C,SAASgK,GAE3C1K,KAAKjC,MAAM2C,UAAYV,KAAKjC,MAAM2C,SAASV,KAAKzB,MAAMsM,eA7G1D7K,KAAKzB,MAAQ,CAAEsM,aAAc9M,EAAM+M,cAAgB,GACnD9K,KAAK+K,cAAgB/K,KAAK+K,cAAcC,KAAKhL,OAE7CiL,EAAAA,EAAAA,KACI,IAAMjL,KAAKjC,MAAM+M,eACjB,KACI9K,KAAKwB,SAAS,CAAEqJ,aAAc7K,KAAKjC,MAAM+M,cAAgB,GAAI,GAGzE,CAEOtE,SACH,MAAM0E,EAA8B,GAAGlL,KAAKjC,MAAMoN,+CAC5CC,EAA6B,GAAGpL,KAAKjC,MAAMsN,+CAC3CC,EAAWtL,KAAKjC,MAAM+M,eAAiB9K,KAAKjC,MAAM4M,IAClDY,EAAcvL,KAAKjC,MAAM+M,eAAiB9K,KAAKjC,MAAMyN,IACrDC,EAAezL,KAAKzB,MAAMsM,aAChC,IAAIa,EAAa,GACbJ,EAEAI,EAAa,WACN1L,KAAKjC,MAAMuN,WAElBI,EAAa,cAEjB,MAAMC,EAAoBC,GAAmB,KACzC5L,KAAK6L,qBAAqBD,EAAO,EAGrC,OACI5N,EAAAA,cAAA,OAAKC,UAAU,YACXD,EAAAA,cAAA,UACIsN,SAAUtL,KAAKjC,MAAMuN,UAAYA,EACjCQ,MAAOR,EAAW,GAAKtL,KAAKjC,MAAMgO,yBAClC9N,UAAW,gCAAgCyN,IAC3CvE,QAASwE,GAAkB,GAAE,8BAEjB,GAAG3L,KAAKjC,MAAMgO,2BAC1BC,UAAW,EACX5K,MAAM,aAENpD,EAAAA,cAAA,QAAMC,UAAWiN,KAErBlN,EAAAA,cAAA,SACI6C,KAAK,SACL5C,UAAU,iBACVgO,QAAQ,SACRjL,MAAOyK,EACP/K,SAAUV,KAAK+K,cACfmB,OAAQlM,KAAKyK,aAAY,YACf,SAAQ,aACN,GAAGzK,KAAKjC,MAAMoO,yBAC1BjM,KAAK,aAAY,gBACF,EAAC,gBACDF,KAAKjC,MAAMyN,IAAG,gBACdC,EACfvK,IAAKlB,KAAKwK,SACVc,SAAUtL,KAAKjC,MAAMuN,WAEzBtN,EAAAA,cAAA,UACIsN,SAAUtL,KAAKjC,MAAMuN,UAAYC,EACjCO,MAAOP,EAAc,GAAKvL,KAAKjC,MAAMqO,yBACrCnO,UAAW,iCAAgCsN,EAAc,WAAa,IACtEpE,QAASwE,EAAiB,GAAE,8BAEhB,GAAG3L,KAAKjC,MAAMqO,2BAC1BJ,UAAW,EACX5K,MAAM,aAENpD,EAAAA,cAAA,QAAMC,UAAWmN,KAIjC,CAEQS,qBAAqBD,GACzB,MAAMS,EAAkBrM,KAAKzB,MAAMsM,aAAee,EAE9CS,GAAmB,GAAKA,GAAmBrM,KAAKjC,MAAMyN,KACtDxL,KAAKjC,MAAM2C,UAAYV,KAAKjC,MAAM2C,SAAS2L,EAEnD,CAEQtB,cAAcuB,GAClB,MAAMb,EAAepG,OAAOC,SAASgH,EAAEjK,OAAOrB,MAAO,IAC/C0J,OAA8BzH,IAAnBjD,KAAKjC,MAAM4M,IAAoB,EAAI3K,KAAKjC,MAAM4M,IACzD4B,EACFvM,KAAKwK,UAAYxK,KAAKwK,SAAS3E,SAAW7F,KAAKwK,SAAS3E,mBAAmB2G,kBAAoBxM,KAAKwK,SAAS3E,QAE7G4F,EAAezL,KAAKjC,MAAMyN,IAC1BxL,KAAKwB,SAAS,CAAEqJ,aAAc7K,KAAKjC,MAAMyN,MAEzCxL,KAAKwB,SAAS,CAAEqJ,aAAcY,IAAgB,KAC1CgB,KAAS,KACA7B,MAAM5K,KAAKzB,MAAMsM,eAAmB7K,KAAKzB,MAAMsM,aAAeH,IAAa6B,IAC5EA,EAAaG,aAAa,gBAAiBjB,EAAapH,YACxDkI,EAAaG,aAAa,QAASjB,EAAapH,eAErD,IALHoI,EAKS,GAGrB,GA/GclC,EAAAoC,aAAwC,CAClDhC,IAAK,EACLQ,oBAAqB,eACrBE,oBAAqB,eAJRd,GAAqBb,EAAAA,EAAAA,IAAA,CADzCkD,EAAAA,IACoBrC,klBCwBf,MAAO7G,UAA6B1F,IAAAA,UAGtCK,YAAYN,GACRO,MAAMP,GAHF,KAAA8O,mBAAyB,CAAC,EA6LjB,KAAAC,oBAAuBC,GACpC/M,KAAKjC,MAAM6B,UAAUoN,sBAAsBjJ,QAAQ,mBAAoBgJ,GAE1D,KAAAE,sBAAwB1K,UAErCvC,KAAKwB,SAAS,CACV0L,QAAQ,EACRC,qBAAqB,EACrBC,OAAMxG,EAAAA,EAAA,GAAO5G,KAAKzB,MAAM6O,QAAM,IAAEC,SAAKpK,MAGzC,MAAMqK,EAAoBtN,KAAKzB,MAAMgF,WAChCiF,KAAI+E,GAAaA,EAAUC,mBAAmBnJ,aAC9CoJ,QAAO5M,IAASb,KAAK6M,mBAAmBhM,KAE7Cb,KAAKwB,SAAS,CACV4L,OAAQ,CAAEG,UAAWD,KAErBA,EAAkBzL,OAAS,EAC3B7B,KAAKwB,SAAS,CACV0L,QAAQ,IAKhBlN,KAAKjC,MACAwJ,qBAAoBX,EAAC,CAAC,EAAI5G,KAAKzB,QAC/BoD,MAAK+L,IAEEA,EAAOC,eACP3N,KAAKwB,SAAS,CACV0L,QAAQ,EACRC,qBAAqB,OAIhCnL,OAAMC,IACH,MAAM,4BAAE2L,EAA2B,0BAAEC,GAA8B7N,KAAKjC,MAAM6B,UAC9E,IAAIkO,EAGAA,EADqB,wDAArB7L,EAAMA,MAAMhC,KACG2N,EAEAC,EAGnB7N,KAAKwB,SAAS,CACV0L,QAAQ,EACRE,OAAMxG,EAAAA,EAAA,GAAO5G,KAAKzB,MAAM6O,QAAM,IAAEC,IAAKS,MAEzC9N,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,sCAAsC,GAC3E,EAGO,KAAA8L,kBAAqBC,IAClChO,KAAKwB,SAAS,CACVsD,SAAUkJ,EACVC,WAAYD,EAAWhO,KAAKjC,MAAMgF,QAAQmL,OAC5C,EAGW,KAAAC,sBAAwB,CACrCC,EACAC,KAEA,GAAIA,GAAcD,EAAqBE,gBACnC,OAAOF,EAAqBE,gBAAgBC,MAAKhB,GAAaA,EAAUvK,YAAcqL,GAG1E,EAIH,KAAAG,oBAAsBjM,UAAyD,IAAAkM,EAC5F,MAAM,QAAE1L,EAAO,WAAEQ,EAAU,QAAEX,GAAY5C,KAAKjC,OACxC,cACFyE,EACAC,SACIC,aAAa,UAAEC,KAEnBC,EAGE8L,EAA6C,QAApBD,EAAGzO,KAAKzB,MAAM6O,cAAM,IAAAqB,GAAW,QAAXA,EAAjBA,EAAmBlB,iBAAS,IAAAkB,OAAA,EAA5BA,EAA8BhB,QAAOhN,GAAMA,IAAOkO,EAAU3E,WAAW3F,aAEzGrE,KAAKwB,SAAS,CACV0L,QAAQ,EACRC,qBAAqB,EACrByB,gBAAgB,EAChBxB,OAAQ,CAAEC,SAAKpK,EAAWsK,UAAWmB,KAIzC1O,KAAK6M,mBAAmB8B,EAAU3E,aAAe2E,EAAU1E,SAE3D,MAAM4E,EAAmBtL,aAAU,EAAVA,EACnBiF,KAAI+E,IACK,CACHC,mBAAoBD,EAAUC,mBAC9BsB,eACI9O,KAAKmO,sBAAsBZ,EAAWvN,KAAK6M,mBAAmBU,EAAUC,sBACxED,EAAUuB,eACdC,oBAAqBxB,EAAUwB,wBAGtCtB,QAAOF,GACGA,GAAaA,EAAUuB,iBAGhCE,QAAuB7L,EAAAA,EAAAA,oBACzB,IAAIL,EAAAA,qBACAC,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,SAC5DL,EACAkM,OACA5L,EACAjD,KAAKjC,MAAM6E,QAAQH,SAEvBD,GAGJ,IAAKwM,EAID,YAHAhP,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MACzB,gDAAgDc,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,YAKpH,MAAMiM,EAAiB,IAAIxF,EAAAA,qCACvBuF,EAAehM,SACfL,EACAkM,EACA7O,KAAKjC,MAAM6E,QAAQH,SAEjByM,QAA0B1F,EAAAA,EAAAA,iCAAgCyF,EAAgBzM,GAEhF,IAAK0M,EAKD,OAJAlP,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,qEACnCjC,KAAKwB,SAAS,CACVoN,gBAAgB,IAKxB,MAAMO,EAAoB,IAAIC,EAAAA,6CAC1BrM,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,SAC5DL,GAIE0M,QAA6BC,EAAAA,EAAAA,4CAA2CH,EAAmB3M,GAC3F+M,EAAa,IAAIC,EAAAA,6BAA6BzM,EAAQC,SAAUL,GAChE8M,QAAqBC,EAAAA,EAAAA,4BAA2BH,EAAY/M,GAElE,IAAKiN,EAKD,OAJAzP,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,gEACnCjC,KAAKwB,SAAS,CACVoN,gBAAgB,IAKxB5O,KAAKwB,SAAS,CACVoN,gBAAgB,EAChBe,yBAA2BN,GAAwBA,EAAqB,SAAOpM,EAC/E2M,YAAaH,EAAaI,WAAa9M,EAAQmL,OAC/C3K,WAAY2L,EAAkBY,MAAK,CAACC,EAAGC,IAAMD,EAAEvC,mBAAqBwC,EAAExC,qBACtEzK,QAASiM,GACX,EAGW,KAAAiB,iBAAmB,CAACC,EAAuBtQ,KACxD,OAAQsQ,GACJ,KAAK,EACD,OAAOtQ,EAAUuQ,0BACrB,KAAK,EACD,OAAOvQ,EAAUwQ,kCACrB,KAAK,EACD,OAAOxQ,EAAUyQ,yBACrB,KAAK,EACD,OAAOzQ,EAAU0Q,0BACrB,QACI,MAAO,KA7WftQ,KAAKzB,MAAQ,CACTuG,SAAU,EACV8K,UAAW7R,EAAMgF,QAAQmL,MACzBD,WAAYlQ,EAAMgF,QAAQmL,MAC1BnL,QAAShF,EAAMgF,QACfQ,WAAYxF,EAAMwF,WAAWuM,MAAK,CAACC,EAAGC,IAAMD,EAAEvC,mBAAqBwC,EAAExC,qBACrEX,mBAAoB,CAAC,EACrB+B,gBAAgB,EAChBzB,qBAAqB,EAE7B,CAEO9G,sBAAsBC,EAAuCC,GAChE,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,QAAUuI,CAInD,CAEOE,SAAM,IAAA+J,EAAAC,EAAAC,EAAAC,EAAAC,EACT,MACI/N,SACIJ,eACIoO,gBAAgB,YAAElO,IAEtBD,SAAS,aAAEoO,IAEfjR,WAAW,sBACPkR,EAAqB,8BACrBC,EAA6B,yBAC7BhF,EAAwB,yBACxBK,EAAwB,oBACxB4E,EAAmB,kCACnBC,EAAiC,gBACjCC,GACH,cACD5J,EAAa,oBACbG,GACAzH,KAAKjC,OACH,eAAE6Q,EAAc,QAAE7L,EAAO,SAAE+B,EAAQ,UAAE8K,EAAS,WAAE3B,EAAU,oBAAEd,EAAmB,OAAEC,GAAWpN,KAAKzB,MACjG4S,EAA0BnR,KAAKjC,MAAM0G,oCAAsC,0BAA4B,GAC7G,OACIzG,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAC8J,EAAAA,UAAS,KACL9H,KAAKjC,MAAM2J,WACZ1J,IAAAA,cAAA,OAAKC,UAAU,4CACXD,IAAAA,cAAA,OAAKC,UAAU,8DACXD,IAAAA,cAAA,OAAKC,UAAU,8DACXD,IAAAA,cAACoT,EAAAA,GAAK,CACFC,QAAqB,QAAdd,EAAExN,EAAQ8F,YAAI,IAAA0H,EAAAA,EAAI,QACzBK,eAAgB5Q,KAAKjC,MAAM6E,QAAQJ,cAAcoO,eACjDU,IAA6B,QAA1Bd,EAAEzN,aAAO,EAAPA,EAASwO,uBAAe,IAAAf,EAAAA,EAAI,GACjCgB,YAKK,QALMf,GACPgB,EAAAA,EAAAA,qBACI1O,aAAO,EAAPA,EAAS2O,OACThP,EAC8B,QADnBgO,EACX1Q,KAAKjC,MAAM6E,QAAQH,QAAQkP,WAAG,IAAAjB,GAAQ,QAARA,EAA9BA,EAAgC7L,cAAM,IAAA6L,OAAA,EAAtCA,EAAwCkB,yBAC3C,IAAAnB,EAAAA,EAAI,GAETxS,UAAU,YACVqJ,cAAeA,EACfuJ,aAAcA,EACdgB,oBAAoB,UAExB7T,IAAAA,cAAA,OAAKC,UAAU,iDACXD,IAAAA,cAAA,OAAKC,UAAU,yCAAyC8E,aAAO,EAAPA,EAAS2O,QAChEjK,EAAiC,QAAdkJ,EAAC5N,aAAO,EAAPA,EAAS8F,YAAI,IAAA8H,EAAAA,EAAI,IACtC3S,IAAAA,cAAA,OAAKC,UAAU,iDACV8S,EACA,IACA/Q,KAAK8R,aAAalC,IAEvB5R,IAAAA,cAAA,OAAKC,UAAU,0CACVgT,EACA,IACAlO,aAAO,EAAPA,EAASgC,wBAItB/G,IAAAA,cAAA,OAAKC,UAAU,wDAAwD+B,KAAK+R,wBAEhF/T,IAAAA,cAAA,OAAKC,UAAU,sBACXD,IAAAA,cAAA,WAAMgT,GACNhT,IAAAA,cAACuM,EAAqB,CAClB9J,GAAG,qDACHqK,aAAchG,EACdpE,SAAUV,KAAK+N,kBACf5B,uBAAuB,mCACvBX,IAAK,IACLO,yBAA0BA,EAC1BK,yBAA0BA,MAItCpO,IAAAA,cAAA,OAAKC,UAAW,kDAAkDkT,KAC7DD,EACA,IACAlR,KAAK8R,aAAa7D,KAG3BjQ,IAAAA,cAACgU,EAAAA,YAAW,KACP7E,GACGnP,IAAAA,cAAA,OACIC,UAAU,oEAAmE,YACnE,YACViC,KAAK,SAELlC,IAAAA,cAAA,sBAAkB,SACjBgC,KAAKiS,4BAGb7E,aAAM,EAANA,EAAQC,MACLrP,IAAAA,cAAA,OAAKC,UAAU,kEACXD,IAAAA,cAAA,QAAMC,UAAU,2BAA0B,cAAa,SACtDmP,EAAOC,KAGhBrP,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAWkU,IAAW,0DAA2D,CAAE,UAAWnS,KAAKzB,MAAM2O,SAAS,aACtG4D,EACZ3J,QAASnH,KAAKiN,sBACd3B,SAAUsD,GAETkC,IAKrB,CAEQmB,0BACJ,MAAMG,EAAyBpS,KAAKzB,MAAMgF,WACrCiF,KAAI+E,IAAY,IAAA8E,EACb,IAAIC,EAAmC,QAA5BD,EAAG9E,EAAUe,uBAAe,IAAA+D,GAEtC,QAFsCA,EAAzBA,EAA2B9D,MACrCvN,GAASA,EAAMgC,WAAahD,KAAK6M,mBAAmBU,EAAUC,6BACjE,IAAA6E,OAAA,EAFaA,EAEXE,MAIH,OAHqC,IAAjChF,EAAUC,qBACV8E,EAAU,QAAQA,KAEfA,CAAO,IAEjB7E,QAAOzM,GAASA,IAErB,OAAOhB,KAAKjC,MAAM6B,UAAU4S,0BACvBzO,QAAQ,UAAW/D,KAAKzB,MAAMuG,SAAST,YACvCN,QAAQ,yBAA0B,GAAG/D,KAAKzB,MAAMwE,QAAQ8F,SAAS7B,OAAOyL,OAAOL,GAAwBM,KAAK,QACrH,CAEQX,sBACJ,MAAM,WAAExO,GAAevD,KAAKzB,OACtB,UAAEqB,GAAcI,KAAKjC,MAE3B,OAAOwF,aAAU,EAAVA,EAAYiF,KAAK+E,IAAmC,IAAAoF,EACvD,MAAM,gBAAErE,EAAe,mBAAEd,GAAuBD,EAK1CR,EAAgB/M,KAAKiQ,iBAAiBzC,EAAoB5N,GAC1DwK,EAAqCkE,EAAkBA,EAAgB9F,KALtDxH,IAA4B,CAC/CP,GAAIO,EAAMgC,SACVhC,MAAOA,EAAMuR,OAAS,OAG4F,GAGtH,OAFAnI,EAAawI,QAAQ,CAAEnS,GAAI,EAAGO,MAAO,YAAY+L,MAG7C/O,IAAAA,cAAA,OAAK2K,IAAK6E,GACNxP,IAAAA,cAAA,WAAM+O,IACY,QAAjB4F,EAAA3S,KAAKzB,MAAM6O,cAAM,IAAAuF,GAAW,QAAXA,EAAjBA,EAAmBpF,iBAAS,IAAAoF,OAAA,EAA5BA,EAA8BE,SAASrF,EAAmBnJ,cACvDrG,IAAAA,cAAC8U,EAAAA,MAAK,CAAC1R,MAAM,SAAS2R,WAAS,eAAa/S,KAAK8M,oBAAoBC,IACjE/O,IAAAA,cAAA,OAAKC,UAAU,oBAAmB,cAAa,QAC3CD,IAAAA,cAAA,QAAMC,UAAU,6BAChBD,IAAAA,cAAA,YAAOgC,KAAK8M,oBAAoBC,MAI5C/O,IAAAA,cAAC4L,EAAQ,CACLI,WAAYwD,EACZnD,aAAcrK,KAAKiQ,iBAAiBzC,EAAoB5N,GACxDwK,aAAcA,EACd1J,SAAUV,KAAKwO,sBAEjB,GAGlB,CA2LQsD,aAAakB,GACjB,MACIpQ,SACIqQ,kBAAkB,eACdC,EAAc,aAGdC,KAGRnT,KAAKjC,MAET,OAAOmV,EAAeF,EAAMI,QAAQ,GAAID,EAC5C,ECpaG,MAAMpR,EAAehE,IACxB,MAAM,SACFW,EACAkE,SACIJ,eACIoO,gBAAgB,YAAElO,IAEtBD,SAAS,aAAEoO,GACXoC,kBAAkB,eACdC,EAAc,aAGdC,IAEP,aACDvL,EAAY,oBACZH,EAAmB,sBACnBI,EACAjI,WAAW,wBAAEyT,GAAyB,cACtC/L,GACAvJ,EAEJ,OACIC,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,KAAGC,UAAU,gDAA+C,YAAW,aAClE4J,KAEJ9J,EAAM2J,WACP1J,IAAAA,cAAA,OAAKC,UAAU,0CACVS,EAAS8J,KAAI,CAACzF,EAA8BuQ,KAAiB,IAAAC,EAAA9C,EAAA+C,EAC1D,MAAM,MAAEtF,EAAK,OAAEwD,EAAM,KAAE7I,EAAI,gBAAE0I,GAAoBxO,EAC3CiQ,EAAQE,EAAehF,EAAMkF,QAAQ,GAAID,GACzCM,EAAyE,QAAvDF,GAAGG,EAAAA,EAAAA,kBAAiBnC,QAAAA,EAAmB,GAAI7O,UAAY,IAAA6Q,EAAAA,EAAI,GAC7EI,EAA2G,QAAhGlD,GAAGgB,EAAAA,EAAAA,qBAAoBC,EAAQhP,EAAsC,QAA3B8Q,EAAEzV,EAAM6E,QAAQH,QAAQkP,WAAG,IAAA6B,GAAQ,QAARA,EAAzBA,EAA2B3O,cAAM,IAAA2O,OAAA,EAAjCA,EAAmC5B,yBAAiB,IAAAnB,EAAAA,EAAI,GAErH,OACIzS,IAAAA,cAAA,OAAK2K,IAAK,WAAW2K,IAASrV,UAAU,qCACpCD,IAAAA,cAAA,OAAKC,UAAU,8DACXD,IAAAA,cAACoT,EAAAA,GAAK,CACFC,QAASxI,QAAAA,EAAQ,QACjB+H,eAAgB7S,EAAM6E,QAAQJ,cAAcoO,eAC5CU,IAAKmC,EACLjC,YAAamC,EACb1V,UAAU,YACV4S,aAAcA,EACdvJ,cAAeA,EACfuK,oBAAoB,UAExB7T,IAAAA,cAAA,OAAKC,UAAU,gDAA+C,YAAW,UACrED,IAAAA,cAAA,OAAKC,UAAU,yCAAyCyT,GACvDjK,EAAoBoB,QAAAA,EAAQ,MAGrC7K,IAAAA,cAAA,OAAKC,UAAU,sDACXD,IAAAA,cAAA,YAAOgV,GACPhV,IAAAA,cAAC4V,EAAmB,CAAC7Q,QAASA,EAAS8Q,WAAYR,EAAyBzL,aAAcA,KAE5F,KAInB,EAULgM,EAAuB7V,IACzB,MAAOmP,EAAQ4G,IAAWC,EAAAA,EAAAA,WAAS,IAC7B,QAAEhR,EAAO,WAAE8Q,EAAU,aAAEjM,GAAiB7J,EACxCiW,EAAkBhW,IAAAA,aAAkBuE,UACtCuR,GAAS5G,SACHtF,EAAa7E,GACnB+Q,GAAS5G,EAAO,GACjB,CAACtF,EAAcsF,EAAQnK,IAE1B,OACI/E,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAWkU,IAAW,mDAAoD,CAAE,UAAWjF,IAAS,aACpF,GAAGnK,EAAQ8F,QAASgL,IAChC1M,QAAS6M,GAERH,EACI,ECvE8B7V,EAAAA,4OCTzC,MAAOiW,UAAiCjW,EAAAA,cAA9CK,kCACW,KAAAE,MAAwC,CAC3C2V,eAAe,EACfC,kBAAkB,GAkHL,KAAAC,WAAc/S,IAC3BrB,KAAKwB,SAAS,CACV0S,eAAe,IAGnBlU,KAAKjC,MAAMsW,sBAEXrU,KAAKwB,SAAS,CACV0S,eAAe,GACjB,EAGW,KAAAI,cAAiBjT,IAC9BrB,KAAKwB,SAAS,CACV2S,kBAAkB,IAGtBnU,KAAKjC,MAAMwW,mBAAmB,CAEtC,CAlIWC,gCACHzW,EACAQ,GAEA,MAAMkW,EAAgB1W,EAAM0W,cAAc5S,OAC1C,IAAI0E,uWAASK,CAAA,GAAQrI,GAKrB,OAJAgI,EAAY,CACR2N,cAAiC,IAAlBO,EACfN,iBAAoC,IAAlBM,GAEflO,CACX,CAEOC,SAAM,IAAAkO,EACT,MAAM,qBACFjO,EAAoB,sBACpB5G,EAAqB,qBACrB8U,EAAoB,2BACpB7U,EAA0B,uBAC1BC,EAAsB,wBACtBsT,EAAuB,sBACvBvC,EAAqB,8BACrBC,EAA6B,eAC7B6D,EAAc,yBACd7I,EAAwB,yBACxBK,EAAwB,oBACxB4E,EAAmB,kCACnBC,EAAiC,0BACjChJ,EAAyB,+BACzBC,EAA8B,mBAC9BE,EAAkB,0BAClB+H,EAAyB,kCACzBC,EAAiC,yBACjCC,EAAwB,0BACxBC,EAAyB,2BACzBuE,EAA0B,8BAC1BC,EAA6B,0BAC7B1Q,EAAyB,0BACzBE,EAAyB,0BACzBkO,EAAyB,gBACzBtB,EAAe,yBACflJ,EAAwB,4BACxB4F,EAA2B,0BAC3BC,EAAyB,sBACzBb,GACAhN,KAAKjC,MAAM6B,UAETmV,EAAe,CACjBnS,QAAS5C,KAAKjC,MAAM6E,QACpB8C,iBAAkB1F,KAAKjC,MAAM2H,iBAC7B9F,UAAW,CACP6G,uBACA5G,wBACA8U,uBACA7U,6BACAC,yBACAsT,0BACAvC,wBACAC,gCACA6D,iBACA7I,2BACAK,2BACA4E,sBACAC,oCACAhJ,4BACAC,iCACAE,qBACA+H,4BACAC,oCACAC,2BACAC,4BACAlM,4BACAE,4BACAkO,4BACAtB,kBACAlJ,2BACA4F,8BACAC,4BACAb,yBAEJ1F,cAAetH,KAAKjC,MAAM8G,OAAOyC,cACjC9C,gBAAiBxE,KAAKjC,MAAMyG,gBAC5BC,oCAAqCzE,KAAKjC,MAAM0G,oCAChD4D,SAAkC,QAA1BqM,EAAE1U,KAAKjC,MAAMiX,KAAK3M,gBAAQ,IAAAqM,OAAA,EAAxBA,EAA0B9S,QAGxC,OACI5D,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAACI,EAAiB4I,OAAAC,OAAA,GAAK8N,IACvB/W,EAAAA,cAACkU,EAAAA,OAAM,CACH/K,QAASnH,KAAKoU,WACd9I,SAAUtL,KAAKzB,MAAM2V,cACrBjW,UAAU,sBAAqB,aACnB4W,GAEZ7W,EAAAA,cAAA,cACEgC,KAAKjC,MAAMkX,gBAAkBJ,GAEnC7W,EAAAA,cAACkU,EAAAA,OAAM,CACH/K,QAASnH,KAAKsU,cACdhJ,SAAUtL,KAAKzB,MAAM4V,iBACrBlW,UAAU,kBAAiB,aACf6W,GAEZ9W,EAAAA,cAAA,cACEgC,KAAKjC,MAAMkX,gBAAkBH,GAI/C,+lBCnBJ,IAAMI,EAAN,cAAiClX,EAAAA,UAY7BK,YAAYN,EAAsDQ,GAC9DD,MAAMP,GAqRO,KAAAoX,yCAA2C,KACxD,IAAI1Q,GAAsC,EACR,IAAA2Q,EAA9BpV,KAAKjC,MAAMiX,KAAKK,eAChB5Q,GACuC,QAAnC2Q,EAAApV,KAAKjC,MAAMiX,KAAKK,aAAazT,cAAM,IAAAwT,GAElC,QAFkCA,EAAnCA,EAAqC7G,MACjC+G,GAA4B,2DAAjBA,EAAQzM,cACtB,IAAAuM,OAAA,EAFDA,EAEGG,aAAa,GAExB,OAAO9Q,CAAmC,EAG7B,KAAA+Q,mBAAqB,KAClC,MAAM,QAAE5S,EAAO,UAAEhD,GAAcI,KAAKjC,OAC9B,UAAEqF,GAAcR,GAChB,6BAAE6S,EAA4B,6BAAEC,GAAiC9V,EACjE+V,EAAQ3V,KAAKzB,MAAMqX,iBACnBC,EAAmBF,GAASA,EAAM9T,QAAU8T,EAAMlI,QAAOqI,GAAQA,EAAKC,YAAWvN,KAAIsN,GAAQA,EAAKE,kBAExG,GAAIH,GAAoBA,EAAiBhU,OAAS,EAAG,CACjD,MAAMoU,EAAgBJ,EAAiB,GAAGlI,cAEpCuI,EAAoC,KAC1CC,EAAAA,EAAAA,6BAA4B,CAAE7M,cAAe1G,EAAQJ,eAAiByT,EAAgBJ,GACjFlU,MAAKY,UACFvC,KAAKwB,SAAS,CACV4U,YAAaV,EACbW,gBAAiB,UACjBC,aAAc,eACd9X,QAAQ,UAGN,IAAI6E,SAAQC,GAAWiT,WAAWjT,EAAS4S,KACjDhR,OAAOC,SAASC,QAAQ,IAE3BpD,OAAMC,IACHmB,EAAUoT,QAAQ,4EAClBpT,EAAUnB,MAAMA,GAChBjC,KAAKwB,SAAS,CACV4U,YAAaX,EACbY,gBAAiB,UACjBC,aAAc,eACd9X,QAAQ,GACV,MAKD,KAAAiY,yBAA2B,KAAa,IAAAC,EACrD,IAAIC,GAAMC,EAAAA,EAAAA,IAAW,gBAAiB5W,KAAKjC,MAAM6E,QAAQJ,gBAAkB,GAE3E,OADAmU,EAAMA,EAAI9D,SAAS,KAAO8D,EAAIE,OAAO,EAAGF,EAAIG,QAAQ,MAAQH,EAC3B,QAAjCD,EAAI1W,KAAKjC,MAAMiX,KAAK+B,qBAAa,IAAAL,GAAQ,QAARA,EAA7BA,EAA+B9U,cAAM,IAAA8U,GAArCA,EAAuCM,YAAYC,GAC5C,GAAGN,QAAU3W,KAAKjC,MAAMiX,KAAK+B,cAAcnV,OAAOoV,YAAYC,KAElE,EAAE,EAGI,KAAAC,qBAAuB3U,UACpC,MACMkS,EADQzU,KAAKzB,MAAMqX,iBACGnI,QAAOqI,GAAQA,EAAKC,YAChD,GAAItB,EAAc5S,OAAS,EACvB,IAAK,MAAMsV,KAAe1C,EAAe,KAAA2C,EAAAC,EAAAC,EAAAC,EAAAC,EACrC,MAAMC,EAAwD,QAAjDL,EAA0B,QAA1BC,EAAGF,EAAYO,mBAAW,IAAAL,OAAA,EAAvBA,EAAyBM,eAAejG,cAAM,IAAA0F,EAAAA,EAAI,GAC5DrU,EAAiD,QAA1CuU,EAA0B,QAA1BC,EAAGJ,EAAYO,mBAAW,IAAAH,OAAA,EAAvBA,EAAyBI,sBAAc,IAAAL,EAAAA,EAAI,CACvDtU,SAAU,EACV4U,iBAAkB,EAClB/H,UAAW,EACX3B,MAAO,EACP2J,cAAe,GAEb/S,EAA+C,QAAvC0S,EAAGL,EAAYnB,gBAAgB8B,gBAAQ,IAAAN,EAAAA,EAAI,EACzD,GAAIxX,KAAKmV,2CAA4C,CACjD,MAAMzQ,EAAYyS,EAAYnB,gBAAgB9M,gBACxClJ,KAAK+X,cAAchV,EAAS+B,EAAU2S,EAAS/S,cAE/C1E,KAAK+X,cAAchV,EAAS+B,EAAU2S,GAIxD,OAAOpU,QAAQC,aAAQ,EAAO,EA2DjB,KAAA0U,eAAkBC,GAC3BC,EAAAA,GAASC,UACF,IAAIC,IAAIlT,OAAOC,SAASkT,MAE5B,IAAID,IAAIH,EAAWtB,IAAI2B,WAAWD,MAM5B,KAAAE,eAAiB,KAC9BvY,KAAKwB,SAAS,CACViW,QAASzX,KAAKzB,MAAMkZ,QACpBrB,YAAapW,KAAKzB,MAAM6X,YACxBC,gBAAiBrW,KAAKzB,MAAM8X,gBAC5BC,aAActW,KAAKzB,MAAM+X,aACzB9X,OAAQwB,KAAKzB,MAAMC,OACnBga,gCAAgC,GAClC,EAGW,KAAAC,6BAA+B,KAA6B,IAAAC,EACzE,IAAK1Y,KAAKzB,MAAMoa,0BACZ,OAAO,KAEX,MAAMlU,GAC0B,QAA5BiU,EAAA1Y,KAAKjC,MAAMiX,KAAKK,oBAAY,IAAAqD,GAAQ,QAARA,EAA5BA,EAA8B9W,cAAM,IAAA8W,GAA4F,QAA5FA,EAApCA,EAAsCnK,MAAK+G,GAA4B,2DAAjBA,EAAQzM,cAAkE,IAAA6P,OAAA,EAAhIA,EACMnD,aAAa,EAEvB,OACIvX,EAAAA,cAAC4a,EAAAA,sBAAqB,CAClB3a,UAAU,gCACVwC,GAAIT,KAAKjC,MAAM0C,GACfoY,SAAU7Y,KAAKjC,MAAM8a,SACrBjW,QAAS5C,KAAKjC,MAAM6E,QACpBkW,cAAe9Y,KAAK+Y,0CACpB/D,KAAMhV,KAAKzB,MAAMoa,0BACjBK,UAAWhZ,KAAKzB,MAAMia,+BACtBS,QAASjZ,KAAKuY,eACd9T,oCAAqCA,GACvC,EAaO,KAAAyU,kBAAoB,KACjC,MAAM,OAAErU,EAAM,QAAEjC,EAAO,KAAEoS,EAAI,UAAEpV,GAAcI,KAAKjC,MAC5CgZ,EAAgB/B,GAAQA,EAAK+B,eAAiB/B,EAAK+B,cAAcnV,OACvE,IAAKmV,EACD,OAAO,KAGX,MAAMoC,EAAUnZ,KAAKgY,eAAepV,EAAQH,SACtC2W,EAAevU,EAAOuU,cAAgB,GAEtCC,EADoBrZ,KAAKsZ,wBACOF,EAChCG,EAAaxC,GAAiBA,EAAcyC,WAC5CC,EAAe7Z,EAAU8Z,gBACzBC,EAAW/Z,EAAUga,YAE3B,OAAIL,GAAcH,EACP,KAIPpb,EAAAA,cAAC6b,EAAAA,uBAAsB,CACnB5b,UAAW,GAAG+B,KAAK/B,wBACnBiC,KAAK,aAAY,aACLN,EAAUka,oBACtBnD,IAAKwC,EAAQd,KACb0B,IAAI,OACJC,MAAOT,EACPH,aAAcA,EACda,aAAcZ,EACdI,aAAczZ,KAAKka,YAAYT,GAC/BE,SAAU3Z,KAAKma,YAAYR,GAC3BS,kBAAmBX,EACnBY,cAAeV,GACjB,EAkFO,KAAAW,wBAA2Bvc,IACxC,IAAIQ,EAAQ,CACRgc,oBAAqBva,KAAKzB,MAAMgc,oBAEhCxc,IACAQ,EAAKqI,EAAAA,EAAA,GACErI,GACA,CACCic,qBAAqBC,EAAAA,EAAAA,6BAA4B1c,MAI7DiC,KAAKwB,SAASjD,EAAM,EAIP,KAAAmc,yBAA2B,CACxCC,EACA/X,EACA8B,KAEA,MAAMkW,GAAaC,EAAAA,EAAAA,mBAAkBF,EAAgB/X,EAAQJ,mBAAeS,GAC5E,IAAK6X,EAAAA,iBAAiBC,mBAAmBH,SAA6B3X,IAAdyB,EAAyB,CAC7E,MAAMsW,EAAc,IAAI5C,IAAIwC,EAAY1V,OAAOC,SAASkT,MAExD,OADA2C,EAAYC,aAAaC,IAAI,YAAa,GAAGxW,QAAAA,EAAa,KACnDsW,EAAY3C,KAGvB,OAAOuC,CAAU,EAIJ,KAAAO,WAAa,KAC1Bnb,KAAKwB,SAAS,CACVhD,QAAQ,GACV,EAGW,KAAA4c,gBAAkB7Y,MAAOkV,EAAiB3S,EAAkB/G,KACzE,MAAM,QAAE6E,EAAO,KAAEoS,EAAI,UAAE5R,EAAS,OAAEyB,EAAM,UAAEjF,GAAcI,KAAKjC,OACvD,cAAEgZ,GAAkB/B,EAE1B,GAAIpS,GACImU,SAAAA,EAAenV,OAAQ,CACvB,MAAMyZ,EAAyBtE,EAAcnV,OAAO0Z,mBACpD,GAAID,EAAwB,CACxB,MAAME,EAAiBF,EAAuBG,WACzC7F,GAA6BA,EAAMK,gBAAgByF,SAAWhE,IAE7DiE,EAAkB9U,EAAA,GAAQyU,EAAuBE,IACvD,GAAIF,EAAuBE,GAAgBvF,gBAAgB8B,WAAahT,EACpE,OAEJ,MAAM6W,EAAeD,EAAmB1F,gBAAgB8B,SACxD4D,EAAmB1F,gBAAgB8B,SAAWhT,EAC9C,MAAM,YAAE4S,GAAyBgE,EAAT5F,GAAI8F,EAAAA,EAAAA,GAAKF,EAAkBG,GAG/C9d,IACAA,EAAM+G,SAAWA,EACjB9E,KAAKwB,SAAS,CACVgZ,qBAAqBC,EAAAA,EAAAA,6BAA4B1c,MAIzDiC,KAAKwB,SAAS,CACVsa,6BAA6B,KAGjCC,EAAAA,EAAAA,6BAA4B,CAAEzS,cAAe1G,EAAQJ,eAAiBuU,EAAcnV,OAAOoV,YAAYC,GAAI,CACvGnB,EAAKE,kBAEJrU,MAAKqa,IASF,GARAhc,KAAKwB,SAAS,CACViW,UACArB,YAAa,GACbC,gBAAiB,UACjBC,aAAc,eACdwF,6BAA6B,EAC7Btd,QAAQ,IAERwd,EAAM,CACN,MAAMC,EAAUD,EAAKzN,MAAKoH,GAASA,EAAM8F,SAAWhE,IACpD4D,EAAuBE,GAAgBvF,gBAAkBiG,EACzD,MAAMC,EAAe,IAAIb,GACzBa,EAAaX,GAAkB,CAAE7D,cAAa1B,gBAAiBiG,GAC/D,MAAME,EAAoBvV,EAAAA,EAAA,GAAQmQ,EAAcnV,QAAM,IAAEwa,iBAAkBF,IAC1EtZ,EAAQJ,cAAc6Z,OAClB,IAAIC,EAAAA,8BAA8B1Z,EAAQJ,cAAcoO,eAAgB/L,GACxEsX,OAIXna,OAAMC,IACHmB,EAAUoT,QAAQ,6DAClBpT,EAAUnB,MAAMA,GAChB,MAAMmU,EAAcxW,EAAU2c,mCAC1Bxe,GACAA,IAAUA,EAAMiY,gBAAgB8B,SAAW6D,GAC3C3b,KAAKwB,SAAS,CACViW,UACArB,cACAC,gBAAiB,SACjBC,aAAc,8BACdwF,6BAA6B,EAC7Btd,QAAQ,EACRgc,qBAAqBC,EAAAA,EAAAA,6BAA4B1c,OAGrD2d,EAAmB1F,gBAAgB8B,SAAW6D,EAC9C3b,KAAKwB,SAAS,CACViW,UACArB,cACAC,gBAAiB,SACjBC,aAAc,8BACdwF,6BAA6B,EAC7Btd,QAAQ,WASvB,KAAAuZ,cAAgBxV,MAC7BQ,EACA+B,EACA2S,EACA/S,KAEA,MAAM,QAAE9B,EAAO,KAAEoS,EAAI,UAAEpV,EAAS,UAAEwD,GAAcpD,KAAKjC,OAC/C,KAAEye,GAASxH,GACX,qBAAEyH,EAAoB,0BAAEC,GAA8B9c,EAE5D,GAAIgD,GACI4Z,EAAK5a,OAAQ,CACb,MAAM+a,EAAwB,CAC1B5Z,UACA6Z,MAAO9X,EACPJ,mBAGE8X,EAAK5a,OACNib,iBAAiBF,GACjBhb,MAAMC,IACH,GAAsB,YAAlBA,EAAO8L,OACP,OAAOgC,EAAAA,EAAAA,4BACH,IAAIF,EAAAA,6BACAzM,EAAQC,SACRhD,KAAKjC,MAAM6E,QAAQJ,cAAcoO,eAAelO,YAAYC,UAC5DI,GAEJ/C,KAAKjC,MAAM6E,QAAQJ,eACrBb,MAAKmb,IACH,IAAKA,EACD,OAAOC,EAAAA,GAAYC,OAAO,oCAG9B,MAAMC,EAAsD,iBAAzCra,EAAQ+O,IAAI9M,OAAOqY,kBAetC,OAdAld,KAAKwB,SAAS,CACViW,UACArB,YAAa,GACbC,gBAAiB,UACjBC,aAAc,eACd9X,QAAQ,EACRga,gCAAiCyE,EACjCtE,0BAA2B,CACvB5V,UACA0M,aAAcqN,EACdhY,YAEJyV,oBAAoB,IAEjBwC,EAAAA,GAAYzZ,SAAS,IAGhC,OAAQ1B,EAAOub,WACX,IAAK,cACD,GAAIva,EAAQ+O,IAAI9M,OAAOuY,2BAA4B,KAAAC,EAAAC,EAC/C,MAAMC,GACS,QAAXF,EAAAb,EAAK5a,cAAM,IAAAyb,OAAA,EAAXA,EAAab,KAAKgB,aACP,QADgBF,EAC3Bd,EAAK5a,cAAM,IAAA0b,GAAsE,QAAtEA,EAAXA,EAAad,KAAKgB,UAAUjP,MAAK3M,GAAUA,EAAO6b,YAAc1a,EAAQC,kBAAS,IAAAsa,OAAA,EAAjFA,EAAmFxF,UACjF4F,EAAiB,oBAAoB9a,EAAQ+O,IAAI9M,OAAOuY,+DAgB9D,OAfApd,KAAKwB,SAAS,CACViW,UACArB,iBACyBnT,IAArBsa,GACMd,EACK1Y,QAAQ,gBAAiBwZ,EAAiBlZ,YAC1CN,QACG,gBACAnB,EAAQ+O,IAAI9M,OAAOuY,2BAA2B/Y,aAEtDqZ,EACVrH,gBAAiB,SACjBC,aAAc,8BACd9X,QAAQ,IAELue,EAAAA,GAAYzZ,UAChB,CACH,MAAMoa,EAAiB,yFAQvB,OAPA1d,KAAKwB,SAAS,CACViW,UACArB,YAAasH,EACbrH,gBAAiB,SACjBC,aAAc,8BACd9X,QAAQ,IAELue,EAAAA,GAAYzZ,UAE3B,IAAK,gBAAiB,IAAAqa,EAQlB,OAPA3d,KAAKwB,SAAS,CACViW,UACArB,aAAgC,QAAnBuH,EAAA/b,EAAOgc,oBAAY,IAAAD,OAAA,EAAnBA,EAAqBE,mBAAoBnB,EACtDrG,gBAAiB,SACjBC,aAAc,8BACd9X,QAAQ,IAELue,EAAAA,GAAYzZ,UAEvB,QASI,OARAF,EAAU0a,MAAM,mFAChB9d,KAAKwB,SAAS,CACViW,UACArB,YAAasG,EACbrG,gBAAiB,SACjBC,aAAc,8BACd9X,QAAQ,IAELue,EAAAA,GAAYzZ,cAIlCtB,OAAOC,IACJmB,EAAUoT,QAAQvU,EAAM8b,SACxB3a,EAAU0a,MAAM,yFACZhD,EAAAA,iBAAiBC,mBAAmB9Y,EAAM8b,SAC1C/d,KAAKwB,SAAS,CACViW,UACArB,YAAanU,EAAM8b,QACnB1H,gBAAiB,SACjBC,aAAc,8BACd9X,QAAQ,IAGZwB,KAAKwB,SAAS,CACViW,UACArB,YAAasG,EACbrG,gBAAiB,SACjBC,aAAc,8BACd9X,QAAQ,SAQnB,KAAAwf,kCAAoCzb,UACjD,MAAM,QAAEK,EAAO,KAAEoS,EAAI,UAAE5R,GAAcpD,KAAKjC,OACpC,cAAEgZ,GAAkB/B,EAE1B,GAAIpS,GAAWA,EAAQJ,cAAe,CAClC,MAAM0T,EAAoC,IAE1C,GADkBtT,EAAQH,QAAQwb,KAAKC,iBAAmBtb,EAAQH,QAAQwb,KAAKE,OAC3EC,MAAarH,GAAAA,EAAenV,QAAUkU,EAAM,CAC5C,MAAMuI,QAAsBC,EAAAA,EAAAA,kBAAgBC,EAAAA,EAAAA,4BAA2B3b,EAAQJ,eAAgBI,EAAQJ,eACvG,IAAIiC,GAAsC,EACM,IAAA+Z,EAAhD,GAAIle,EAAAA,gBAAgBC,YAAY8d,GAC5B5Z,GAGK,QAFD+Z,EAAAH,EAAc9P,MACT8G,GAAqD,2DAAtBA,EAAaxM,cAChD,IAAA2V,OAAA,EAFDA,EAEGjJ,aAAa,EAExB,MAAM7Q,GAAY4D,EAAAA,EAAAA,IAAa1F,EAAQJ,cAAcoO,gBACjDnM,IACAqR,EAAKE,gBAAgB9M,UAAYxE,IAErCyR,EAAAA,EAAAA,6BAA4B,CAAE7M,cAAe1G,EAAQJ,eAAiBsT,EAAKE,gBAAgBrI,cAAgB,CACvGmI,EAAKE,kBAEJrU,MAAKY,gBAEI,IAAIc,SAAQC,GAAWiT,WAAWjT,EAAS4S,KACjDhR,OAAOC,SAASC,QAAQ,IAE3BpD,OAAMC,IACHmB,EAAUoT,QAAQ,4EAClBpT,EAAUnB,MAAMA,EAAM,SAG9BmB,EAAUoT,QACN,qHAMC,KAAAiI,gBAAkBlc,UAC/B2C,OAAOC,SAASC,SACT/B,QAAQC,WAGF,KAAAob,gBAAkB,KAC/B,MAAM,QAAE9b,EAAO,KAAEoS,EAAI,UAAE5R,EAAS,UAAExD,GAAcI,KAAKjC,OAC/C,cAAEgZ,GAAkB/B,EAE1B,GAAIpS,GAAWA,EAAQJ,cAAe,CAElC,GADkBI,EAAQH,QAAQwb,KAAKC,iBAAmBtb,EAAQH,QAAQwb,KAAKE,OAC9DpH,GAAiBA,EAAcnV,OAAQ,EACpD+c,EAAAA,EAAAA,aAAY,CAAErV,cAAe1G,EAAQJ,eAAiBuU,EAAcnV,OAAOoV,aACtErV,OACAK,OAAOC,IAAiB,IAAA2c,EACrBxb,EAAUoT,QAAQ,qDAClBpT,EAAUnB,MAAMA,GAChBjC,KAAKwB,SAAS,CACViW,SAA6B,QAApBmH,EAAA7H,EAAcnV,cAAM,IAAAgd,OAAA,EAApBA,EAAsB5H,YAAYC,KAAM,GACjDb,YAAaxW,EAAUif,8BACvBxI,gBAAiB,SACjBC,aAAc,8BACd9X,QAAQ,GACV,IAEV,MAAMsgB,GAAUlI,EAAAA,EAAAA,IAAW,oBAAqB5W,KAAKjC,MAAM6E,QAAQJ,eAC/Dsc,GACA5Z,OAAOC,SAAS8B,OAAO6X,QAG3B1b,EAAUoT,QAAQ,uFAGtBpT,EAAUoT,QAAQ,sDAQT,KAAAuI,aAAe,KAC5B,MAAM,QAAEnc,GAAY5C,KAAKjC,MAGzB,GAAI6E,EAAQH,SAAWG,EAAQH,QAAQuc,QAA0C,WAAhCpc,EAAQH,QAAQuc,OAAOC,KACpE,MAAO,KAGX,GAAI/G,EAAAA,GAASC,WAAajT,OAAOga,WAAY,CACzC,MAAMrO,EAAejO,EAAQH,QAAQoO,aACrC,GAAIA,EACA,OAAIA,EAAa3R,IAAMgG,OAAOga,YAAcrO,EAAa3R,GAAGE,EACjD,KACAyR,EAAasO,IAAMja,OAAOga,YAAcrO,EAAasO,GAAG/f,EACxD,KACAyR,EAAauO,IAAMla,OAAOga,YAAcrO,EAAauO,GAAGhgB,EACxD,KACAyR,EAAavR,IAAM4F,OAAOga,YAAcrO,EAAavR,GAAGF,EACxD,KAEJ,KAIf,MAAO,IAAI,EAQE,KAAA8a,YAAemF,GAExBrhB,EAAAA,cAAA,OAAKC,UAAU,wBACXD,EAAAA,cAAA,QAAMC,UAAW,GAAG+B,KAAKjC,MAAM8G,OAAO5G,6BAA4B,cAAc,SAChFD,EAAAA,cAAA,QAAMC,UAAU,aAAaohB,IAUxB,KAAAlF,YAAemF,GAExBthB,EAAAA,cAAA,OAAKC,UAAU,wBACXD,EAAAA,cAAA,QAAMC,UAAU,aAAaqhB,GAC7BthB,EAAAA,cAAA,QAAMC,UAAW,GAAG+B,KAAKjC,MAAM8G,OAAO5G,8BAA6B,cAAc,UA38BzF+B,KAAK/B,UAAY,oBACjB+B,KAAKuf,UACDxhB,EAAM6E,QAAQH,SAAW1E,EAAM6E,QAAQH,QAAQuc,QAAgD,WAAtCjhB,EAAM6E,QAAQH,QAAQuc,OAAOC,KAAoB,KAAO,KACrHjf,KAAKwf,gBAAkBxf,KAAKwf,gBAAgBxU,KAAKhL,MAEjDA,KAAKzB,MAAQ,CACTkZ,QAAS,GACTrB,YAAa,GACbC,gBAAiB,UACjBC,aAAc,eACd9X,QAAQ,EACRga,gCAAgC,EAChCiH,qCAAqC,EACrC7J,iBAAkB,GAClB2E,oBAAoB,EACpBuB,6BAA6B,GAEjC9b,KAAK0F,kBAAmBga,EAAAA,EAAAA,oBACpB1f,KAAKjC,MAAM6E,QAAQH,QAAQkd,kBAC3B3f,KAAKjC,MAAM6hB,aACX5f,KAAKjC,MAAMqF,WAEfpD,KAAKwf,mBAEDtH,EAAAA,GAASC,WAAcnY,KAAKjC,MAAM6E,QAAQH,QAAQwb,KAAKC,iBAAoBle,KAAKjC,MAAM6E,QAAQH,QAAQod,OAAOC,UAC7G5a,OAAOC,SAAS8B,OAAOjH,KAAKjC,MAAM6E,QAAQH,QAAQwb,KAAK8B,WAAa,IAE5E,CAjCcC,eACV,MAA0B,OAAnBhgB,KAAKuf,WAAyC,OAAnBvf,KAAKuf,SAC3C,CAkCOhd,0BACHvC,KAAKwB,SAAS,CAAC,GACf,MAAMuV,QAAsB/W,KAAKjC,MAAMiX,KAAK+B,cAC5C/W,KAAKjC,MAAM8G,OAAOob,QAASC,MAAOnJ,aAAa,EAAbA,EAAeC,YAAYnO,OAAQ,GACrE7I,KAAKwB,SAAS,CACVoU,iBAAkBmB,aAAa,EAAbA,EAAeuE,qBAGjCpD,EAAAA,GAASC,YACTjT,OAAOib,iBAAiB,SAAUngB,KAAKwf,iBACvCxf,KAAKwf,kBAEb,CAEOY,uBACClI,EAAAA,GAASC,WACTjT,OAAOmb,oBAAoB,SAAUrgB,KAAKwf,gBAElD,CAEOnZ,sBACHC,EACAC,GAEA,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,QAAUuI,CAInD,CAEOE,SACH,MAAM,QAAEyZ,EAAO,UAAEhiB,GAAc+B,KAAKjC,MAAM8G,QACpC,4BAAEyb,EAA2B,+BAAEC,GAAmCvgB,KAAKjC,MAAM6B,WAC7E,cAAEmX,EAAa,KAAEyF,GAASxc,KAAKjC,MAAMiX,KAE3C,GAAoB,YAAhBwH,EAAK9O,QAAwB8S,EAAAA,iBAAiBC,kBAAkB1J,IAA2C,YAAzBA,EAAcrJ,OAAsB,CACtH,MAAMgT,EAAU9Z,EAAAA,EAAA,GACR5G,KAAKjC,OAAuD,IAChEmX,mBAAoB,CAChByL,YAAa3gB,KAAKjC,MAClBE,UAAWkU,IAAWnS,KAAK/B,UAAWA,IAE1CyP,OAAQ,UACRkT,cAAe5iB,EAAAA,cAAC+J,EAAO,CAAC9J,UAAW+B,KAAK/B,UAAWC,IAAK8B,KAAKjC,MAAM6B,UAAUoI,2BAC7EiY,QAASA,GAAWjiB,EAAAA,cAAC6iB,EAAAA,QAAO7Z,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0BgiB,IAC1ErgB,UAAWI,KAAKjC,MAAM6B,YAE1B,OAAOI,KAAKjC,MAAM+iB,WAAWJ,GAGjC,GAAoB,WAAhBlE,EAAK9O,QAAgD,WAAzBqJ,EAAcrJ,OAAqB,CAC/D,MAAMgT,EAAU9Z,EAAAA,EAAA,GACR5G,KAAKjC,OAAuD,IAChEmX,mBAAoB,CAChByL,YAAa3gB,KAAKjC,MAClBE,UAAWkU,IAAW,GAAGnS,KAAK/B,YAAaA,IAE/CyP,OAAQ,SACRkT,cAAe5iB,EAAAA,cAAC+iB,EAAAA,gCAA+B,CAACC,UAAU,SAASd,KAAMK,IACzEN,QAASA,GAAWjiB,EAAAA,cAAC6iB,EAAAA,QAAO7Z,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0BgiB,IAC1ErgB,UAAWI,KAAKjC,MAAM6B,YAG1B,OAAOI,KAAKjC,MAAM+iB,WAAWJ,GAGjC,MAAMO,EAAsBlK,GAAiBA,EAAcnV,OACrD0Z,EAAqB2F,GAAuBA,EAAoB3F,mBAEtE,IAAK2F,IAAwB3F,GAAoD,IAA9BA,EAAmBzZ,OAAc,CAChF,GAAIof,IAAwBjhB,KAAKkhB,gBAAkBhJ,EAAAA,GAASC,UAExD,OADAjT,OAAOC,SAASkT,KAAOrY,KAAKyW,2BACrB,KAGX,MAAM0K,EAAcva,EAAAA,EAAA,GACZ5G,KAAKjC,OAAuD,IAChEmX,mBAAoB,CAChByL,YAAa3gB,KAAKjC,MAClBE,UAAWkU,IAAW,GAAGnS,KAAK/B,YAAaA,IAE/CyP,OAAQ,QACRkT,cAAe5iB,EAAAA,cAAC+iB,EAAAA,gCAA+B,CAACC,UAAU,QAAQd,KAAMI,IACxEL,QAASA,GAAWjiB,EAAAA,cAAC6iB,EAAAA,QAAO7Z,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0BgiB,IAC1ErgB,UAAWI,KAAKjC,MAAM6B,UACtBwhB,aACIH,GACAjhB,KAAKqhB,4BAA4BJ,EAAqBjhB,KAAKmV,4CAC/DmM,qBAAsBL,GAAuBjhB,KAAKuhB,6BAA6BN,EAAoBjK,YAAYC,IAC/GuK,qBAAsB,CAClBvjB,UAAW,GAAG+B,KAAK/B,uBACnBwjB,IAAK,SAIb,OAAOzhB,KAAKjC,MAAM+iB,WAAWK,GAGjC,MAAM9Z,EAAST,EAAAA,EAAA,GACP5G,KAAKjC,OAAuD,IAChEmX,mBAAoB,CAChByL,YAAa3gB,KAAKjC,MAClBE,UAAWkU,IAAW,GAAGnS,KAAK/B,YAAaA,IAE/CyP,OAAQ,UACRgU,sBAAuB1hB,KAAKzB,MAAMC,QAC9BR,EAAAA,cAAA,OAAKC,UAAW,GAAG+B,KAAK/B,6BACpBD,EAAAA,cAAC8U,EAAAA,MAAK,CAAC1R,MAAOpB,KAAKzB,MAAM8X,gBAAiB7X,OAAQwB,KAAKzB,MAAMC,OAAQqI,OAAQ7G,KAAKmb,YAC9End,EAAAA,cAAA,oBAAgB,aAAagC,KAAKzB,MAAM6X,eAIpD6J,QAASA,GAAWjiB,EAAAA,cAAC6iB,EAAAA,QAAO7Z,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0BgiB,IAC1EuB,qBAAsB,CAClBvjB,UAAW,GAAG+B,KAAK/B,uBACnBwjB,IAAK,OAETE,cAAe,CACX1jB,UAAW,GAAG+B,KAAK/B,mBACnBwjB,IAAK,QACLvhB,KAAM,QAEV0hB,iBAAkB,CACd3jB,UAAW,GAAG+B,KAAK/B,uBACnBwjB,IAAK,MAETI,qBAAsB7hB,KAAK8hB,yBAAyB9hB,KAAKjC,MAAM6B,WAC/D+X,eAAgB,CACZ1Z,UAAW,GAAG+B,KAAK/B,6BACnBwjB,IAAK,KAETM,WAAY/hB,KAAKgiB,qBACjBC,UAAW,CAAEC,eAAgBC,IAASniB,KAAKob,gBAAiB,MAC5DgG,aAAcphB,KAAKqhB,4BAA4BJ,EAAqBjhB,KAAKmV,4CACzEiN,WAAYpiB,KAAKkZ,oBACjBmJ,sBAAuBriB,KAAKyY,+BAC5B6I,qBAAsBthB,KAAKuhB,6BAA6BN,EAAoBjK,YAAYC,IACxFsD,mBAAoBva,KAAKzB,MAAMgc,mBAC/B+H,uBAAwBtiB,KAAKsa,wBAC7BE,oBAAqBxa,KAAKzB,MAAMic,oBAChCwF,SAAUhgB,KAAKggB,WAGnB,OAAOhgB,KAAKjC,MAAM+iB,WAAWzZ,EACjC,CAEOkb,SAASzM,EAAmCC,GAC/CD,EAAKC,UAAYA,EAEjB,MAAMyM,EACFxiB,KAAKzB,MAAMqX,iBAAiBpN,KAAIzF,IAAU,IAAA0f,EAAAC,EAItC,OAHuB,QAAnBD,EAAA1f,EAAQ2U,mBAAW,IAAA+K,OAAA,EAAnBA,EAAqB9K,eAAejG,WAA2B,QAArBgR,EAAK5M,EAAK4B,mBAAW,IAAAgL,OAAA,EAAhBA,EAAkB/K,eAAejG,UAChFoE,EAAKC,UAAYA,GAEdhT,CAAO,KACZ,GAEV/C,KAAKwB,SAAS,CACVoU,iBAAkB4M,GAE1B,CAEOG,YAAY5M,GACf,MAAMyM,EACFxiB,KAAKzB,MAAMqX,iBAAiBpN,KAAIsN,IAC5BA,EAAKC,UAAYA,EACVD,MACL,GAEV9V,KAAKwB,SAAS,CACVoU,iBAAkB4M,GAE1B,CAEQV,yBAAyBliB,GAC7B,MAAM,aACFgjB,EAAY,kBACZC,EAAiB,YACjBC,EAAW,qBACXC,EAAoB,eACpBC,EAAc,oBACdC,EAAmB,mBACnBC,EAAkB,kBAClBC,EAAiB,uBACjBC,GACAxjB,EACEyjB,EAA2C,CAC7CT,aAAcA,EACdU,cAAeT,EACfU,YAAaT,EACbU,iBAAkBT,EAClBU,WAAYT,EACZU,gBAAiBT,EACjBU,eAAgBT,EAChBC,oBACAxN,MAAO3V,KAAKzB,MAAMqX,iBAClBoK,SAAUhgB,KAAKggB,SACfpY,aAAemO,IACX/V,KAAK2iB,YAAY5M,EAAU,EAE/BtR,oCAAqCzE,KAAKmV,2CAC1CiO,uBAAwBA,GAG5B,OAAOplB,EAAAA,cAAC4lB,EAAAA,0BAAyB5c,OAAAC,OAAA,GAAKoc,GAC1C,CAEQ9B,6BAA6B/c,GACjC,OACIxG,EAAAA,cAACiW,EAAwBjN,OAAAC,OAAA,GACjBjH,KAAKjC,MAAK,CACdyG,gBAAiBA,EACjBiQ,cAAezU,KAAKzB,MAAMqX,kBAAoB5V,KAAKzB,MAAMqX,iBAAiBnI,QAAOqI,GAAQA,EAAKC,YAC9F1B,oBAAqBrU,KAAKkX,qBAC1B3C,kBAAmBvU,KAAKwV,mBACxBP,eAAgBjV,KAAKggB,SACrBvb,oCAAqCzE,KAAKmV,2CAC1CzP,iBAAkB1F,KAAK0F,mBAGnC,CAEQme,2CACJ,MAAO,CACHC,mBAAoB9jB,KAAKjC,MAAM6B,UAAUkkB,mBACzCC,6BAA8B/jB,KAAKjC,MAAM6B,UAAUmkB,6BACnDC,mCAAoChkB,KAAKjC,MAAM6B,UAAUokB,mCACzDC,mCAAoCjkB,KAAKjC,MAAM6B,UAAUqkB,mCACzDC,sCAAuClkB,KAAKjC,MAAM6B,UAAUskB,sCAC5DC,kCAAmCnkB,KAAKjC,MAAM6B,UAAUukB,kCAEhE,CAEQpL,0CACJ,MAAO,CACH+K,mBAAoB9jB,KAAKjC,MAAM6B,UAAUkkB,mBACzCC,6BAA8B/jB,KAAKjC,MAAM6B,UAAUmkB,6BACnDK,iCAAkCpkB,KAAKjC,MAAM6B,UAAUwkB,iCACvDC,oCAAqCrkB,KAAKjC,MAAM6B,UAAUykB,oCAC1DC,iCAAkCtkB,KAAKjC,MAAM6B,UAAU0kB,iCACvDC,cAAevkB,KAAKjC,MAAM6B,UAAU2kB,cACpCC,kBAAmBxkB,KAAKjC,MAAM6B,UAAU4kB,kBACxCC,iBAAkBzkB,KAAKjC,MAAM6B,UAAU6kB,iBAE/C,CAmFQpD,4BACJtK,EACAtS,GAEA,MAAM,GAAEhE,EAAE,SAAEoY,EAAQ,QAAEjW,EAAO,UAAEhD,GAAcI,KAAKjC,OAC5C,2BACF2mB,EAA0B,yBAC1BC,EAAwB,yBACxBC,EAAwB,sBACxBC,EAAqB,wBACrBC,EAAuB,wBACvBC,EAAuB,wBACvBC,EAAuB,0BACvBC,GACArlB,EAEEslB,EAAmD,CACrDlQ,KAAM,CAAE+B,iBACRtW,KACAoY,WACAjW,UACA8C,iBAAkB1F,KAAK0F,iBACvByf,SAAU,CACNC,iBAAkBplB,KAAKye,gBACvB4G,iBAAkBrlB,KAAK0e,iBAE3Bja,sCACA6gB,iCAAkCtlB,KAAKulB,0CAA0C3lB,GACjFA,UAAW,CACP8kB,6BACAC,2BACAC,2BACAE,0BACAC,0BACAC,0BACAH,wBACAI,4BACAO,gCAAiCxlB,KAAK6jB,6CAI9C,OAAO4B,EAAAA,EAAAA,0BAAyBP,EACpC,CAEQK,0CAA0C3lB,GAC9C,MAAO,CACH8lB,yBAA0B9lB,EAAU+lB,6BACpCC,wBAAyBhmB,EAAUimB,mBACnCC,2BAA4BlmB,EAAUimB,mBACtCE,yBAA0B,GAC1BC,yBAA0BpmB,EAAUomB,yBACpCC,yBAA0BrmB,EAAUsmB,8BACpCC,+BAAgCvmB,EAAUwmB,eAElD,CA8CQlF,eACJ,OAAwC,IAAjClhB,KAAKsZ,uBAChB,CAEQA,wBACJ,MAAMF,EAAepZ,KAAKjC,MAAM8G,OAAOuU,cAAgB,GACvD,OAAQpZ,KAAKjC,MAAM6E,QAAQH,QAAQhE,QAAUuB,KAAKjC,MAAM6E,QAAQH,QAAQhE,MAAM4nB,KAAOjN,GAAiB,CAC1G,CAuCQ4I,qBACJ,MAAM,iBACFsE,EAAgB,eAChBC,EAAc,uBACdC,EAAsB,UACtBC,EAAS,kBACTjC,EAAiB,iBACjBC,EAAgB,oCAChBiC,EAAmC,sCACnCC,EAAqC,0BACrCxW,EAAyB,yBACzBE,EAAwB,0BACxBC,EAAyB,uBACzBnE,EAAsB,iBACtBya,EAAgB,yBAChBxa,EAAwB,yBACxBL,EAAwB,+BACxB8a,EAA8B,8BAC9BC,GACA9mB,KAAKjC,MAAM6B,WAET,QAAEgD,EAAO,UAAEQ,EAAS,KAAE4R,GAAShV,KAAKjC,OACpC,SAAEsK,GAAa2M,GACf,cAAE1N,GAAkBtH,KAAKjC,MAAM8G,OAErC,OAAO7E,KAAKzB,MAAMqX,iBAAiBpN,KAAI,CAACsN,EAAMxC,KAAS,IAAAyT,EACnD,MAAMC,EAA+C,CACjDC,kBAAmBnR,EACnBE,gBAAiBF,EAAKE,gBACtBhD,MAAuB,QAAlB+T,EAAEjR,EAAK4B,mBAAW,IAAAqP,OAAA,EAAhBA,EAAkBG,aACzBjlB,MAAO6T,EAAK7T,MACZklB,cAAerR,EAAKqR,cACpBvkB,UACAkZ,4BAA6B9b,KAAKzB,MAAMud,4BACxClB,WAAY9E,EAAK4B,YACX1X,KAAK0a,yBAAyB5E,EAAK4B,YAAYC,eAAgB/U,EAASkT,EAAKE,gBAAgB9M,WAC7F,GACN5B,gBACAlE,YACAgkB,SAAUpnB,KAAKjC,MAAM0C,GACrB4mB,eAAgBrnB,KAAKjC,MAAM8a,SAC3B/T,SAAUgR,EAAKE,gBAAgB8B,SAC/BqN,SAAU,CACNmC,WAAYtnB,KAAK+X,cACjBwP,aAAcvnB,KAAKge,kCACnBwJ,iBAAkBxnB,KAAKob,gBACvBmH,SAAUviB,KAAKuiB,SAASvX,KAAKhL,OAEjCJ,UAAW,CACP0mB,mBACAC,iBACAC,yBACArW,4BACAE,2BACAC,4BACAiU,cAAekC,EACfjC,oBACAC,mBACAtY,yBACAsb,iCAAkCd,EAClCe,mBAAoBhB,EACpBE,mBACAxa,2BACAL,2BACA8a,iCACAC,iCAEJxT,QACA0M,SAAUhgB,KAAKggB,SACfsC,uBAAwBtiB,KAAKsa,wBAC7B7V,oCAAqCzE,KAAKmV,2CAC1C9M,SAAUA,GAAYA,EAASzG,QAGnC,OAAO+lB,EAAAA,EAAAA,uBAAsBX,EAAqB,GAE1D,CAkVQxH,kBACJxf,KAAKuf,UAAYvf,KAAK+e,cAC1B,IA/5BArV,EAAAA,EAAAA,IAAA,CADCke,EAAAA,IAAU,iCAGDle,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,8BAoCTD,EAAAA,EAAAA,IAAA,CADCme,EAAAA,IAAM,sCA3CL3S,GAAkBxL,EAAAA,EAAAA,IAAA,CADvBkD,EAAAA,IACKsI,GA+9BN,qFCnlCA,MAgHM4S,EAAcA,CAAC/kB,EAAsCglB,EAAuBnG,KAC9E,IAAK7e,EACD,OAAO,KAGX,MAAM,IACF4F,EAAG,WACHqf,EAAU,mBACVC,EAAkB,aAClBrF,EAAY,aACZnT,EAAY,cACZ6T,EAAa,eACb4E,EAAc,aACdC,EAAY,YACZC,EAAW,qBACXC,EAAoB,oBACpBC,EAAmB,gBACnB5E,EAAe,MACf6E,EAAK,SACLvI,EAAQ,kBACRwI,EAAiB,oCACjB/jB,EAAmC,SACnC6G,GACAvI,EAYE0lB,EAViBnd,EACjB,CACIod,cAAe,OACfC,QAAS,IAEb,CACID,cAAe,OACfC,QAAS,GAKnB,OACI3qB,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,CAAC0B,IAAKA,EAAK1K,UAAW,GAAG2jB,EAAkB3jB,aAAiB2jB,GAC7D5jB,EAAAA,cAAA,UAAKgqB,IACHhI,GAAYvb,GAAuCzG,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiBR,GACjFjqB,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiB7F,GAC3B5C,EACGhiB,EAAAA,cAAA,UACIA,EAAAA,cAAA,WAAMslB,GACNtlB,EAAAA,cAAA,OAAK6qB,MAAOJ,GACPV,EAAa,IAAG,IAChBrE,IAIT1lB,EAAAA,cAAA,UAAKslB,IAEPtD,GAAYhiB,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiBL,IACxCpI,GAAYhiB,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiBhZ,IACxCuQ,GAAYhiB,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiBJ,IACxCrI,GAAYhiB,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiBH,GACzCtI,GAAYhiB,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiBF,IACvCvI,IAAavb,GACXzG,EAAAA,cAAA,MAAI6qB,MAAOJ,GACNP,EACAC,GAGTnqB,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiBD,GACzB,EAIf,EArLmEzqB,IAC/D,MAAM,mBACFmX,EAAkB,OAClBxH,EAAM,cACNkT,EAAa,QACbX,EAAO,cACP0B,EAAa,qBACbE,EAAoB,WACpBE,EAAU,iBACVH,EAAgB,sBAChBF,EAAqB,qBACrBF,EAAoB,aACpBJ,EAAY,WACZgB,EAAU,sBACVC,EAAqB,qBACrBf,EAAoB,mBACpB/G,EAAkB,oBAClBC,EAAmB,uBACnB8H,EACA1iB,WAAW,eACPwmB,EAAc,kBACdvD,EAAiB,YACjBC,EAAW,qBACXC,EAAoB,eACpBC,EAAc,oBACdC,EAAmB,uBACnBG,IAEJrlB,EAEE+qB,EAAgB9qB,EAAAA,aAAkB,KACpCskB,GAA0BA,OAAuBrf,EAAU,GAC5D,CAACqf,IAEJ,OACItkB,EAAAA,cAAC+qB,EAAAA,OAAM/hB,OAAAC,OAAA,GAAKiO,GACP+K,EACAuB,GACGxjB,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKua,GACLJ,aAAY,EAAZA,EAAc4H,iBACd5H,aAAY,EAAZA,EAAc6H,eACd7H,aAAY,EAAZA,EAAc8H,eACd9H,aAAY,EAAZA,EAAc+H,oBACb5O,GAAsBmH,GAG/BJ,EACW,YAAX5T,GAAwBkT,EACxBe,GAAiBI,GAAcA,EAAWlgB,OAAS,GAChD7D,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,8BACZD,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAK0a,GACLE,EACD7jB,EAAAA,cAAA,aACK+jB,GACGA,EAAWvZ,KAAIzF,GACJ+kB,EAAY/kB,EAASkgB,EAAqBrB,OAIhEQ,GAGRC,EACDrkB,EAAAA,cAAC+I,EAAAA,MAAK,CACFqiB,cAAc,sCACdtoB,WAAS,EACTuoB,MAAM,EACNC,gBAAgB,aAChB9qB,OAAQ+b,EACR1T,OAAQiiB,GAER9qB,EAAAA,cAACkJ,EAAAA,YAAW,CAACL,OAAQiiB,GAAa,mBAClC9qB,EAAAA,cAAC8J,EAAAA,UAAS,KACN9J,EAAAA,cAAA,UACIA,EAAAA,cAAA,UAAKwc,aAAmB,EAAnBA,EAAqBoI,cAC1B5kB,EAAAA,cAAA,MAAIC,UAAU,gBACVD,EAAAA,cAAA,YAAO8kB,EAAW,KACjBtI,aAAmB,EAAnBA,EAAqB4N,aAE1BpqB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOolB,EAAsB,KAC5B5I,aAAmB,EAAnBA,EAAqByN,oBAE1BjqB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAO6kB,EAAiB,KACvBrI,aAAmB,EAAnBA,EAAqB8I,eAE1BtlB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAO+kB,EAAoB,KAC1B,IACAvI,aAAmB,EAAnBA,EAAqB/K,cAE1BzR,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOglB,EAAc,KACpB,IACAxI,aAAmB,EAAnBA,EAAqB6N,sBAE1BrqB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOilB,EAAmB,KACzBzI,aAAmB,EAAnBA,EAAqB8N,qBAEzB5G,GAAyB1jB,EAAAA,cAAA,UAAK0jB,KAGvC1jB,EAAAA,cAACgU,EAAAA,YAAW,KACRhU,EAAAA,cAACkU,EAAAA,OAAM,CAAC/K,QAAS2hB,GAAgB1C,KAGpC,oZC1CX,MAAOmD,UAAqBvrB,IAAAA,cAO9BK,YAAmBN,GACfO,MAAMP,GA+IO,KAAAyrB,gBAAkB,KACxB,CACH/H,IAAK1a,EAAAA,MACL0iB,UAAW,aACXC,WAAW,EACXzrB,UAAW,wCACXmrB,cAAe,8BACf5qB,OAAQwB,KAAKzB,MAAMorB,YACnB9iB,OAAQ7G,KAAK4pB,aAOJ,KAAAC,WAAa,KAC1B,MAAMrkB,GAAUC,EAAAA,EAAAA,kBAAiB,QAASzF,KAAKjC,MAAM2H,iBAAmB,YAAa,KACrFC,EAAAA,EAAAA,kBAAiB3F,KAAKjC,MAAM2H,iBAAmBF,EAAS,aACxDxF,KAAKwB,SAAS,CACVmoB,aAAa,GACf,EAMW,KAAAC,WAAa,KAC1B5pB,KAAKwB,SAAS,CACVmoB,aAAa,GACf,EAQW,KAAAG,qBAAuB,IAEhC9rB,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAU,0BAAyB,aACxB,QAAQkJ,QAASnH,KAAK4pB,aAS5B,KAAAG,qBAAwBhsB,IACrC,IAAIisB,EAaJ,OAPQA,EAFJ1pB,EAAAA,gBAAgBC,YAAYxC,EAAMksB,WAFE,IAGhClsB,EAAMksB,UAAUpoB,OACA,KAA8B9D,EAAM6B,UAAU0K,OAE9C,GAAGvM,EAAMksB,UAAUpoB,UAAU9D,EAAM6B,UAAUoa,QAGjD,KAA2Bjc,EAAM6B,UAAUoa,QAG3Dhc,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,sBAAsB+N,SAAS,KAC1Cge,EACE,EAQE,KAAAE,aAAgB7oB,IACzBA,EAAM8oB,UAAYC,EAAAA,SAASC,QAAUrqB,KAAKzB,MAAMorB,aAChD3pB,KAAK4pB,cA3NT5pB,KAAKsqB,wBAAyB,EAC9BtqB,KAAKzB,MAAQ,CACTorB,aAAa,EACbY,aAAa,EACbC,gCAAgC,GAEpCxqB,KAAK0F,kBAAmBga,EAAAA,EAAAA,oBAAmB1f,KAAKjC,MAAM6E,QAAQH,QAAQkd,kBAAoB3f,KAAKjC,MAAM6hB,aAAc5f,KAAKjC,MAAMqF,WAC9H,MAAMqnB,GAAUhlB,EAAAA,EAAAA,kBAAiBilB,EAAAA,GAAeC,SAAU3qB,KAAK0F,iBAAkBklB,EAAAA,kBAAkBC,UACnGJ,EAAQK,cAAcC,MAAQH,EAAAA,kBAAkBI,cAChDhrB,KAAKirB,2BAA4BC,EAAAA,EAAAA,wBAAuBlrB,KAAK0F,iBAAkB+kB,EACnF,CAEOxkB,oBACCiS,EAAAA,GAASC,WACTjT,OAAOib,iBAAiB,UAAWngB,KAAKkqB,cAAc,GAE1DlqB,KAAKmrB,eACT,CAEOC,qBACHprB,KAAKmrB,eACT,CAEO/K,uBACClI,EAAAA,GAASC,WACTjT,OAAOmb,oBAAoB,UAAWrgB,KAAKkqB,cAAc,EAEjE,CAEQmB,6BACJ,MAAMC,EAAYtrB,KAAKjC,MAAMiX,KAAKwH,KAAK5a,aAAUqB,EAElC,IAAAsoB,EAAf,GAAID,MACMA,EAAU9O,KAAKgB,WAAkD,KAAb,QAAxB+N,EAAAD,EAAU9O,KAAKgB,iBAAS,IAAA+N,OAAA,EAAxBA,EAA0B1pB,UAAiBypB,EAAU9O,KAAKgP,SAAS,CACjG,MAAMC,uWAAW7kB,CAAA,GAAQ0kB,EAAU9O,MACnCiP,EAAYD,QAAU,GAEjBF,EAAUI,WAAW,CAACC,cAAeF,IAGtD,CAEQG,qBAAqBC,EAAkBC,GAC3C,OACI9tB,IAAAA,cAACkU,EAAAA,OAAMlL,OAAAC,OAAA,CACHqE,SAAUugB,EAAU5tB,UAAU,6BAA6Boa,KAAMyT,EACjEhgB,MAAO9L,KAAKjC,MAAM6B,UAAUmsB,0BAA8B/rB,KAAKirB,2BAC9DjrB,KAAKjC,MAAM6B,UAAUmsB,yBAGlC,CAEQZ,gBAAa,IAAAa,EAAA3O,EACjB,MACIrI,MAAM,KAAEwH,IACRxc,KAAKjC,MACHkuB,EAAwC,QAA7BD,EAAc,QAAd3O,EAAGb,EAAK5a,cAAM,IAAAyb,GAAM,QAANA,EAAXA,EAAab,YAAI,IAAAa,OAAA,EAAjBA,EAAmB6O,eAAO,IAAAF,EAAAA,OAAI/oB,EAC9CjD,KAAKmsB,2BAA6BF,IAItCjsB,KAAKmsB,yBAA2BF,GAChCG,EAAAA,EAAAA,IAAkB5P,EAAMxc,KAAKjC,MAAMqF,UAAWpD,KAAKjC,MAAM6E,SACpDjB,MAAMC,IACH5B,KAAKwB,SAAS,CAAE+oB,aAAcjqB,EAAAA,gBAAgBC,YAAYqB,aAAM,EAANA,EAAQyqB,yBAA0B,IAE/FrqB,OAAM,KACHhC,KAAKwB,SAAS,CAAE+oB,aAAa,GAAQ,IAEjD,CAMO/jB,SAAM,IAAA8lB,EAAAC,EAAAC,EAAAC,EACTzsB,KAAKqrB,6BACL,MAAM7O,EAAkC,QAA9B8P,EAAGtsB,KAAKjC,MAAMiX,KAAKwH,KAAK5a,cAAM,IAAA0qB,EAAAA,OAAIrpB,EACtCgnB,EAAYjqB,KAAKjC,MAAMksB,UAEvByC,GAAqBlQ,aAAI,EAAJA,EAAMmQ,uBAAwB3sB,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAOqY,oBAAsB0P,EAAAA,kBAAkBC,aACzHf,GAAmBlV,EAAAA,EAAAA,IAAW,WAAY5W,KAAKjC,MAAM6E,QAAQJ,gBAAkB,GAC/EqpB,GAAY7rB,KAAKzB,MAAMgsB,eAAgBN,GAAYA,EAAU6C,MAAKC,GAAYA,EAASlB,WAW7F,OAVIa,IACK1sB,KAAKsqB,uBAIEtqB,KAAKzB,MAAMorB,cAEnB3pB,KAAKsqB,wBAAyB,IAJ9BtqB,KAAKwB,SAAS,CAAEmoB,aAAa,IAC7B3pB,KAAKsqB,wBAAyB,IAOlCtsB,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAIjH,KAAKjC,MAAMivB,gBAAqBhtB,KAAKjC,MAAMkvB,uBAAuBjtB,KAAKjC,QAC5EC,IAAAA,cAAA,UACImJ,QAASnH,KAAK6pB,WAAY5rB,UAAU,gCACnC+B,KAAKjC,MAAMmvB,UAEhBlvB,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAIjH,KAAKwpB,mBACVxrB,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,0CACX+B,KAAKjC,MAAMovB,YACXntB,KAAK+pB,qBAAqB/pB,KAAKjC,OAC/BiC,KAAK8pB,wBAEV9rB,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,sCACgB,QAA3BsuB,EAAAvsB,KAAKjC,MAAMiX,KAAKwH,KAAK5a,cAAM,IAAA2qB,GAA3BA,EAA6Ba,QAAUptB,KAAKjC,MAAMsvB,MAAMC,UAAY,KACrEtvB,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKjH,KAAKjC,MAAMwvB,mBAjKpBC,EAkKoBvD,EAlKmClsB,EAkKxBiC,KAAKjC,MAjKpDyvB,EAIEA,EAAUhlB,KAAI,CAACilB,EAAUna,KAC5B,MAAMoa,EAAgBpa,EACtB,OACItV,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKlJ,EAAM4vB,oBAAmB,CAAEhlB,IAAK+kB,IACtC1vB,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAWkU,IAAWsb,EAASG,cAAgB,+BAAiC,KACjFH,EAASV,UAEbU,EAASI,OACTJ,EAASG,cACP,KAZX7vB,EAAM6E,QAAQQ,UAAUnB,MAAM,kDACvB,SAkKKjE,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,0CACX+B,KAAKjC,MAAMsvB,MAAMS,iBA9IhB/vB,KAA+E,IAAAgwB,EAAAC,EACrG,MAAMxR,EAA6B,QAAzBuR,EAAGhwB,EAAMiX,KAAKwH,KAAK5a,cAAM,IAAAmsB,EAAAA,OAAI9qB,EACjC+P,EAAQwJ,IAASA,EAAKyR,iBAAmBzR,EAAKA,KAAK0R,kBAAejrB,GAClEgL,EAAa+E,EAAQjV,EAAM6E,QAAQqQ,iBAAiBC,eAAeF,GAASjV,EAAM6E,QAAQqQ,iBAAiBC,eAAenV,EAAM6B,UAAUuuB,YAChJ,OACInwB,IAAAA,cAAA,OAAKC,UAAU,8BACXD,IAAAA,cAAA,QAAMC,UAAU,mCAC2B,QADM+vB,EAC5CjwB,EAAM6B,UAAUwuB,8BAAsB,IAAAJ,OAAA,EAAtCA,EAAwCjqB,QAAQ,UAAY,IAC7D/F,IAAAA,cAAA,QAAMC,UAAU,+BACXgQ,IAGP,EAmIWogB,CAAiBruB,KAAKjC,OACvBC,IAAAA,cAAA,KAAGC,UAAU,kCACR+B,KAAKjC,MAAM6B,UAAU0uB,iBAIzBrE,GAAaA,EAAUpoB,OAAS,EAAI7B,KAAK4rB,qBAAqBC,EAAUC,GAAoB,KAEjE,QAA3BU,EAAAxsB,KAAKjC,MAAMiX,KAAKwH,KAAK5a,cAAM,IAAA4qB,GAA3BA,EAA6BY,QAAU,KAAOptB,KAAKjC,MAAMwwB,eAC1DvwB,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,6BAEmB,QAA3BwuB,EAAAzsB,KAAKjC,MAAMiX,KAAKwH,KAAK5a,cAAM,IAAA6qB,GAA3BA,EAA6BW,QAAUpvB,IAAAA,cAACkU,EAAAA,OAAM,CAC1CjU,UAAU,mCACVoa,MAAMzB,EAAAA,EAAAA,IAAW,OAAQ5W,KAAKjC,MAAM6E,QAAQJ,gBAE3CxC,KAAKjC,MAAM6B,UAAU4uB,6BACd,SAvLpBC,IAACjB,EAAuDzvB,CA8L5E,EAyFJ,4FC/SA,MAAM2wB,EAAgE1wB,IAAAA,YA6DtE,EAtC8ED,IAC5E,MAAM4wB,EAAkB3wB,IAAAA,aAAkB,KAClC,GACL,KACI4wB,EAAiCC,IAAkC9a,EAAAA,EAAAA,WAAS,GAC7E+a,EAAsB9wB,IAAAA,aAAkB,KAC5C6wB,GAA+B,EAAK,GACnC,IAEH,OACE7wB,IAAAA,cAAAA,IAAAA,SAAA,KACEA,IAAAA,cAAA,UACEC,UAAU,6DACVmD,MAAM,UACN+F,QAAS2nB,EACT5tB,IAAKwtB,EAAyB,aAClB3wB,EAAMgxB,yBAEjBhxB,EAAMgxB,yBAET/wB,IAAAA,cAACgxB,EAAAA,wBAAuB,CACtB/wB,UAAU,iCACV+a,UAAW4V,EACXK,gBAAgB,EAChBC,aAAcL,EACdjsB,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVuU,KAAM,CAAC,EACP6D,SAAU9a,EAAM8a,SAChBC,cAAe/a,EAAMoxB,mCACrBC,SAAUT,EACVU,UAAWtxB,EAAMuxB,uBACjBC,iBAAkBb,IAEnB,wICrCP,MA0BMc,EAAcjtB,UAChB2C,OAAOC,SAASC,QAAQ,EAsBfqqB,EAA+H1xB,IACxI,MAAM,kBAEF2xB,EAAiB,eAAEC,EAAc,cAAEC,EAAa,OAChDliB,EAAM,cACNkT,EAAa,QACbX,EAAO,eACP4P,EAAc,0BACdC,EAAyB,4BACzBC,GACAhyB,EAEJ,OADAiyB,QAAQC,IAAIH,GAER9xB,EAAAA,cAAC+qB,EAAAA,OAAM/hB,OAAAC,OAAA,GAAKyoB,GACPzP,EACW,YAAXvS,GAAwBkT,EACb,UAAXlT,GACC1P,EAAAA,cAACkyB,EAAAA,QAAgC,CAC/BttB,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVoY,SAAU9a,EAAM8a,SAChB7D,KAAM,CAAC,EACP+Z,wBAAyBhxB,EAAM6B,UAAUuwB,4BACzCb,uBAAwBE,EACxBL,oCA3CmCvvB,EA2C2C7B,EAAM6B,UA1CzF,CACH8lB,yBAA0B9lB,EAAUwwB,0BACpCxK,wBAAyBhmB,EAAUimB,mBACnCC,2BAA4BlmB,EAAUkmB,2BACtCC,yBAA0BnmB,EAAUywB,+BAEpCrK,yBAA0BpmB,EAAUomB,yBAEpCC,yBAA0BrmB,EAAU0wB,8BACpCnK,+BAAgCvmB,EAAU2wB,6CAoCtCvyB,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,IACA,YAAXyP,GACKiiB,GAAmBE,GACpBvvB,EAAAA,gBAAgBC,YAAYsvB,GAUzBC,EATA9xB,EAAAA,cAAA,OAAKC,UAAU,iCACXD,EAAAA,cAAA,MAAIC,UAAU,yCACTF,EAAM6B,UAAU4wB,kCAErBxyB,EAAAA,cAAA,KAAGC,UAAU,sCACRF,EAAM6B,UAAU6wB,+BAEpBX,GAGZC,GAEHJ,GAAkBE,GAAkBvvB,EAAAA,gBAAgBC,YAAYsvB,IAC9D7xB,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAK0oB,GACLE,EAAernB,KAAKuO,GA9Fb2Z,EAAC3Z,EAA8C4Z,KAGvE,MAAM,IAAEhoB,EAAG,gBAAEioB,EAAe,mBAAEC,EAAkB,2BAAEC,EAA0B,aAAE3I,EAAY,kBAAE4I,GAAsBha,EAE5Gia,EAAiDH,EACjDI,EAAyBD,EAA0BjzB,MAAMmzB,SAASrvB,OAGxE,GAAIovB,EAF8B,EAG9B,IAAK,IAAI3d,EAAQ,EAAGA,EAHU,EAG0B2d,EAAwB3d,IAC5E0d,EAA0BjzB,MAAMmzB,SAASC,KAAKnzB,EAAAA,cAAA,iBAItD,OACIA,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,CAAC0B,IAAKA,EAAK1K,UAAW0yB,EAAwB1yB,WAAe0yB,GAC7DI,EACAF,EACAD,EACAzI,EACA2I,EACE,EAyEgBJ,CAAoB3Z,EAAe6Y,OAjEfhwB,KAoElC,EAIjB,kaCnBM,MAAO2pB,UAAqBvrB,IAAAA,cAK9BK,YAAmBN,GACfO,MAAMP,GAgEF,KAAAqzB,+BAAiC,CACrCC,EACA1oB,EACA2oB,KACA,IAAAC,EACA,MAAMC,EAAWH,SAAoC,QAA1BE,EAAVF,EAAY9iB,MAAKkjB,GAAKA,EAAEC,MAAQ/oB,WAAI,IAAA4oB,OAAA,EAApCA,EAAsChf,MAIvD,OADYif,EAAWA,EAASF,GAAa,IACnC,EAgHG,KAAA9H,gBAAkB,KACxB,CACH/H,IAAK1a,EAAAA,MACL0iB,UAAW,aACXC,WAAW,EACXzrB,UAAW,wCACXmrB,cAAe,8BACf5qB,OAAQwB,KAAKzB,MAAMorB,YACnB9iB,OAAQ7G,KAAK4pB,aAOJ,KAAAC,WAAa,KAC1B,MAAMrkB,GAAUC,EAAAA,EAAAA,kBAAiB,QAASzF,KAAKjC,MAAM2H,iBAAmB,YAAa,KACrFC,EAAAA,EAAAA,kBAAiB3F,KAAKjC,MAAM2H,iBAAmBF,EAAS,aACxDxF,KAAKwB,SAAS,CACVmoB,aAAa,GACf,EAIW,KAAAgI,mBAAqB,KAC3B,CACHlQ,IAAK1a,EAAAA,MACL0iB,UAAW,aACXC,WAAW,EACXzrB,UAAW,2CACXmrB,cAAe,iCACf5qB,OAAQwB,KAAKzB,MAAMqzB,eACnB/qB,OAAQ7G,KAAK6xB,gBAIJ,KAAAA,cAAgB,KAC7B7xB,KAAKwB,SAAS,CACVowB,gBAAgB,IAGpB5xB,KAAKsqB,wBAAyB,CAAI,EAOrB,KAAAV,WAAa,KAC1B5pB,KAAKwB,SAAS,CACVmoB,aAAa,GACf,EAQW,KAAAG,qBAAuB,IAEhC9rB,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAU,0BAAyB,aACxB,QAAQkJ,QAASnH,KAAK4pB,aAS5B,KAAAG,qBAAwBhsB,IACrC,IAAIisB,EAaJ,OAPQA,EAFJ1pB,EAAAA,gBAAgBC,YAAYxC,EAAMksB,WAFE,IAGhClsB,EAAMksB,UAAUpoB,OACA,KAA8B9D,EAAM6B,UAAU0K,OAE9C,GAAGvM,EAAMksB,UAAUpoB,UAAU9D,EAAM6B,UAAUoa,QAGjD,KAA2Bjc,EAAM6B,UAAUoa,QAG3Dhc,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,sBAAsB+N,SAAS,KAC1Cge,EACE,EAQE,KAAAE,aAAgB7oB,IACzBA,EAAM8oB,UAAYC,EAAAA,SAASC,QAAUrqB,KAAKzB,MAAMorB,aAChD3pB,KAAK4pB,cA3RT5pB,KAAKsqB,wBAAyB,EAC9BtqB,KAAK8xB,2BAA4B,EACjC9xB,KAAKzB,MAAQ,CACTorB,aAAa,EACboI,wBAAwB,EACxBH,gBAAgB,EAChBI,wBAAyB,EAGjC,CAEO/rB,oBACCiS,EAAAA,GAASC,WACTjT,OAAOib,iBAAiB,UAAWngB,KAAKkqB,cAAc,EAE9D,CAEO9J,uBACClI,EAAAA,GAASC,WACTjT,OAAOmb,oBAAoB,UAAWrgB,KAAKkqB,cAAc,EAEjE,CAEQmB,6BACJ,MAAMC,EAAYtrB,KAAKjC,MAAMiX,KAAKwH,KAAK5a,aAAUqB,EAElC,IAAAsoB,EAAf,GAAID,MACMA,EAAU9O,KAAKgB,WAAkD,KAAb,QAAxB+N,EAAAD,EAAU9O,KAAKgB,iBAAS,IAAA+N,OAAA,EAAxBA,EAA0B1pB,UAAiBypB,EAAU9O,KAAKgP,SAAS,CACjG,MAAMC,uWAAW7kB,CAAA,GAAQ0kB,EAAU9O,MACnCiP,EAAYD,QAAU,GAEjBF,EAAUI,WAAW,CAAEC,cAAeF,IAGvD,CAEQlpB,qBACJ,GAAIvC,KAAKjC,MAAM6E,QAAQH,QAAQwb,KAAKC,gBAAiB,CACjD,MAAM+T,QAAiBC,EAAAA,EAAAA,WAAU,CAAE5oB,cAAetJ,KAAKjC,MAAM6E,QAAQJ,eAAiBxC,KAAKjC,MAAM6E,QAAQH,QAAQwb,KAAKkU,uBACxG,IAAAC,EAAd,GAAIH,EACA,OAAyB,QAAzBG,EAAOH,EAASI,iBAAS,IAAAD,OAAA,EAAlBA,EAAoB7jB,MAAKlB,GAAOA,EAAIilB,YAIvD,CAEQ/vB,0BACJ,MAAM+oB,EAAYtrB,KAAKjC,MAAMiX,KAAKwH,KAAK5a,OACvC,GAAI0pB,EAAW,CACXtrB,KAAKwB,SAAS,CAAEuwB,wBAAwB,IAGxC,MAFqBzG,EAAU9O,KAAK+V,gBAEnB,CACb,MAAMC,QAAuBxyB,KAAKyyB,eAG5BD,SACSlH,EAAUoH,sBAAsB,CAAEC,mBAAoBH,KAIjF,CAmBOhsB,SAAM,IAAA8lB,EAAAsG,EAAArG,EAAAC,EAAAC,EACTzsB,KAAKqrB,6BACL,MAAM7O,EAAkC,QAA9B8P,EAAGtsB,KAAKjC,MAAMiX,KAAKwH,KAAK5a,cAAM,IAAA0qB,EAAAA,OAAIrpB,EAG5C,IAiBI4vB,EAjBAC,EAAmB9yB,KAAKoxB,+BAA+B5U,SAAU,QAANoW,EAAJpW,EAAMA,YAAI,IAAAoW,OAAA,EAAVA,EAAY7jB,oBAAqB,eAAgBgkB,EAAAA,EAA0BC,QAmBtI,GAhBKhzB,KAAK8xB,2BAAyD,iBAArBgB,GAAsD,OAArBA,EAKrE9yB,KAAKzB,MAAMqzB,iBAAkBpV,aAAI,EAAJA,EAAMA,KAAK0P,WAAYlsB,KAAKzB,MAAMyzB,0BACrEhyB,KAAK8xB,2BAA4B,IAJjC9xB,KAAKwB,SAAS,CAAEowB,gBAAgB,EAAMI,yBAAyBxV,aAAI,EAAJA,EAAMA,KAAK0P,UAAW,IACrFlsB,KAAK8xB,2BAA4B,GAOjC9xB,KAAKzB,MAAMqzB,iBACX5xB,KAAKsqB,wBAAyB,GAK5BwI,EACF,IACID,EACI70B,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,SAAIgC,KAAKjC,MAAM6B,UAAUqzB,wBACvBC,KAAKC,MAAML,GAA2CtqB,KAAI4qB,GAAKp1B,IAAAA,cAAA,UAAKo1B,EAAEC,QAAO,KAAID,EAAEE,eAElF,CAAb,MAAOC,GAAM,CAKf/W,IAASxc,KAAKzB,MAAMwzB,wBACpB/xB,KAAKwzB,oBAgBT,OAb2BhX,aAAI,EAAJA,EAAMmQ,uBAAwB3sB,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAOqY,oBAAsB0P,EAAAA,kBAAkBC,eAGtH7sB,KAAKsqB,uBAKAtqB,KAAKzB,MAAMorB,cAEjB3pB,KAAKsqB,wBAAyB,IAL9BtqB,KAAKwB,SAAS,CAAEmoB,aAAa,IAC7B3pB,KAAKsqB,wBAAyB,IAQlCtsB,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAIjH,KAAKjC,MAAMivB,gBAAqBhtB,KAAKjC,MAAMkvB,uBAAuBjtB,KAAKjC,QAC5EC,IAAAA,cAAA,UACImJ,QAASnH,KAAK6pB,WAAY5rB,UAAU,gCACnC+B,KAAKjC,MAAMmvB,UAEhBlvB,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAIjH,KAAK2xB,sBACTkB,GAAcA,GAEnB70B,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAIjH,KAAKwpB,mBACVxrB,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,0CACX+B,KAAKjC,MAAMovB,YACXntB,KAAK+pB,qBAAqB/pB,KAAKjC,OAC/BiC,KAAK8pB,wBAEV9rB,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,sCACX+B,KAAKjC,MAAMsvB,MAAMoG,iBACU,QAA3BlH,EAAAvsB,KAAKjC,MAAMiX,KAAKwH,KAAK5a,cAAM,IAAA2qB,GAA3BA,EAA6Ba,QAAUptB,KAAKjC,MAAMsvB,MAAMC,UAAY,KACrEtvB,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKjH,KAAKjC,MAAMwvB,mBA9NpBC,EA+NoBxtB,KAAKjC,MAAMksB,UA/NwBlsB,EA+NbiC,KAAKjC,MA9NzC,QAA3BgwB,EAAKhwB,EAAMiX,KAAKwH,KAAK5a,cAAM,IAAAmsB,GAAtBA,EAAwBE,eAGrB,CAACjwB,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKlJ,EAAM4vB,sBArBG/tB,EAsBQ7B,EAAM6B,UAlBlC5B,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAWkU,IAAW,iCACvBvS,EAAU8zB,yBAsBlBlG,GAKDtV,EAAAA,GAASC,WACTwb,SAASxT,iBAAiB,eAAgBnL,IAAa,IAAA4e,EACnD,GAAwB,QAAxBA,EAAI5e,EAAK6e,OAAOC,gBAAQ,IAAAF,GAApBA,EAAsB/xB,OAAQ,CAC9B,MAAMypB,EAAYvtB,EAAMiX,KAAKwH,KAAK5a,OAClC0pB,SAAAA,EAAWyI,gBAAgB,CAAEC,YAAahf,EAAK6e,OAAOC,SAAStrB,KAAKipB,GAAWA,EAAEhW,eAKtF+R,EAAUhlB,KAAI,CAACilB,EAAUna,KAC5B,MAAMoa,EAAgBpa,EACtB,OACItV,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKlJ,EAAM4vB,oBAAmB,CAAEhlB,IAAK+kB,IACtC1vB,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAWkU,IAAWsb,EAASG,cAAgB,+BAAiC,KACjFH,EAASV,UAEbU,EAASI,OACTJ,EAASG,cACP,MAtBX7vB,EAAM6E,QAAQQ,UAAUnB,MAAM,kDACvB,SAsNKjE,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,0CACX+B,KAAKjC,MAAMsvB,MAAMS,iBAxLhB/vB,KAA+E,IAAAk2B,EAAAjG,EACrG,MAAMxR,EAA6B,QAAzByX,EAAGl2B,EAAMiX,KAAKwH,KAAK5a,cAAM,IAAAqyB,EAAAA,OAAIhxB,EACjC+P,EAAQwJ,IAASA,EAAKyR,iBAAmBzR,EAAKA,KAAK0R,kBAAejrB,GAClEgL,EAAa+E,EAAQjV,EAAM6E,QAAQqQ,iBAAiBC,eAAeF,GAASjV,EAAM6E,QAAQqQ,iBAAiBC,eAAenV,EAAM6B,UAAUuuB,YAChJ,OACInwB,IAAAA,cAAA,OAAKC,UAAU,8BACXD,IAAAA,cAAA,QAAMC,UAAU,mCAC2B,QADM+vB,EAC5CjwB,EAAM6B,UAAUwuB,8BAAsB,IAAAJ,OAAA,EAAtCA,EAAwCjqB,QAAQ,UAAW,IAC5D/F,IAAAA,cAAA,QAAMC,UAAU,+BACXgQ,IAGP,EA6KWogB,CAAiBruB,KAAKjC,OACvBC,IAAAA,cAAA,KAAGC,UAAU,kCACR+B,KAAKjC,MAAM6B,UAAU0uB,iBAEzBtuB,KAAKjC,MAAMm2B,2BACXl0B,KAAKjC,MAAMo2B,sBACgB,QAA3B3H,EAAAxsB,KAAKjC,MAAMiX,KAAKwH,KAAK5a,cAAM,IAAA4qB,GAA3BA,EAA6BY,QAAU,KAAOptB,KAAKjC,MAAMwwB,eAC1DvwB,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,6BAEmB,QAA3BwuB,EAAAzsB,KAAKjC,MAAMiX,KAAKwH,KAAK5a,cAAM,IAAA6qB,GAA3BA,EAA6BW,QAAUpvB,IAAAA,cAACkU,EAAAA,OAAM,CAC1CjU,UAAU,mCACVoa,MAAMzB,EAAAA,EAAAA,IAAW,OAAQ5W,KAAKjC,MAAM6E,QAAQJ,gBAE3CxC,KAAKjC,MAAM6B,UAAU4uB,6BACd,SAlPpBC,IAACjB,EAAuDzvB,EAAiFgwB,EAjBjInuB,CA0Q5B,EA+GJ,4FC/YA,MAAM8uB,EAAgE1wB,IAAAA,YA6DtE,EAtC8ED,IAC5E,MAAM4wB,EAAkB3wB,IAAAA,aAAkB,KAClC,GACL,KACI4wB,EAAiCC,IAAkC9a,EAAAA,EAAAA,WAAS,GAC7E+a,EAAsB9wB,IAAAA,aAAkB,KAC5C6wB,GAA+B,EAAK,GACnC,IAEH,OACE7wB,IAAAA,cAAAA,IAAAA,SAAA,KACEA,IAAAA,cAAA,UACEC,UAAU,6DACVmD,MAAM,UACN+F,QAAS2nB,EACT5tB,IAAKwtB,EAAyB,aAClB3wB,EAAMgxB,yBAEjBhxB,EAAMgxB,yBAET/wB,IAAAA,cAACgxB,EAAAA,wBAAuB,CACtB/wB,UAAU,iCACV+a,UAAW4V,EACXK,gBAAgB,EAChBC,aAAcL,EACdjsB,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVuU,KAAM,CAAC,EACP6D,SAAU9a,EAAM8a,SAChBC,cAAe/a,EAAMoxB,mCACrBC,SAAUT,EACVU,UAAWtxB,EAAMuxB,uBACjBC,iBAAkBb,IAEnB,wICrCP,MA0BMc,EAAcjtB,UAChB2C,OAAOC,SAASC,QAAQ,EAsBfqqB,EAA+H1xB,IACxI,MAAM,kBAEF2xB,EAAiB,eAAEC,EAAc,cAAEC,EAAa,OAChDliB,EAAM,cACNkT,EAAa,QACbX,EAAO,eACP4P,EAAc,0BACdC,EAAyB,4BACzBC,GACAhyB,EAEJ,OADAiyB,QAAQC,IAAIH,GAER9xB,EAAAA,cAAC+qB,EAAAA,OAAM/hB,OAAAC,OAAA,GAAKyoB,GACPzP,EACW,YAAXvS,GAAwBkT,EACb,UAAXlT,GACC1P,EAAAA,cAACkyB,EAAAA,QAAgC,CAC/BttB,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVoY,SAAU9a,EAAM8a,SAChB7D,KAAM,CAAC,EACP+Z,wBAAyBhxB,EAAM6B,UAAUuwB,4BACzCb,uBAAwBE,EACxBL,oCA3CmCvvB,EA2C2C7B,EAAM6B,UA1CzF,CACH8lB,yBAA0B9lB,EAAUwwB,0BACpCxK,wBAAyBhmB,EAAUimB,mBACnCC,2BAA4BlmB,EAAUkmB,2BACtCC,yBAA0BnmB,EAAUywB,+BAEpCrK,yBAA0BpmB,EAAUomB,yBAEpCC,yBAA0BrmB,EAAU0wB,8BACpCnK,+BAAgCvmB,EAAU2wB,6CAoCtCvyB,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,IACA,YAAXyP,GACKiiB,GAAmBE,GACpBvvB,EAAAA,gBAAgBC,YAAYsvB,GAUzBC,EATA9xB,EAAAA,cAAA,OAAKC,UAAU,iCACXD,EAAAA,cAAA,MAAIC,UAAU,yCACTF,EAAM6B,UAAU4wB,kCAErBxyB,EAAAA,cAAA,KAAGC,UAAU,sCACRF,EAAM6B,UAAU6wB,+BAEpBX,GAGZC,GAEHJ,GAAkBE,GAAkBvvB,EAAAA,gBAAgBC,YAAYsvB,IAC9D7xB,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAK0oB,GACLE,EAAernB,KAAKuO,GA9Fb2Z,EAAC3Z,EAA8C4Z,KAGvE,MAAM,IAAEhoB,EAAG,gBAAEioB,EAAe,mBAAEC,EAAkB,2BAAEC,EAA0B,aAAE3I,EAAY,kBAAE4I,GAAsBha,EAE5Gia,EAAiDH,EACjDI,EAAyBD,EAA0BjzB,MAAMmzB,SAASrvB,OAGxE,GAAIovB,EAF8B,EAG9B,IAAK,IAAI3d,EAAQ,EAAGA,EAHU,EAG0B2d,EAAwB3d,IAC5E0d,EAA0BjzB,MAAMmzB,SAASC,KAAKnzB,EAAAA,cAAA,iBAItD,OACIA,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,CAAC0B,IAAKA,EAAK1K,UAAW0yB,EAAwB1yB,WAAe0yB,GAC7DI,EACAF,EACAD,EACAzI,EACA2I,EACE,EAyEgBJ,CAAoB3Z,EAAe6Y,OAjEfhwB,KAoElC,EAIjB,0qBCrGA,MAAMw0B,UAAuBp2B,EAAAA,cAKzBK,YAAYN,EAAsCQ,GAC9CD,MAAMP,GAmDO,KAAAs2B,uBAAyB,KAClCr0B,KAAKjC,MAAM6E,SAAW5C,KAAKjC,MAAM6E,QAAQH,SAAWzC,KAAKjC,MAAM6E,QAAQH,QAAQ6xB,UAC/Et0B,KAAKjC,MAAM6E,QAAQH,QAAQ6xB,QAAQpZ,IAAI,mBAAmBlb,KAAKjC,MAAM0C,KAAM,QAC3ET,KAAKwB,SAAS,CAAE+yB,iBAAiB,IAAQ,EAOhC,KAAAC,MAAQ,KACrB,MAAM,MAAEnH,GAAUrtB,KAAKjC,MACjB02B,EAAYz0B,KAAKzB,MAAMm2B,eAAiBrH,GAASA,EAAMzuB,SAAWyuB,EAAMzuB,QAAQiD,OAAS,GAAK,EAAI7B,KAAKzB,MAAMm2B,YAAc,EAE7H10B,KAAK20B,UACL30B,KAAKwB,SAAS,CAAEozB,UAAU,EAAMF,YAAaD,IAE7Cz0B,KAAKwB,SAAS,CAAEkzB,YAAaD,GAAa,EAOjC,KAAAI,UAAY,KACzB,MAAMxH,EAAQrtB,KAAKjC,MAAMsvB,OAASrtB,KAAKjC,MAAMsvB,MAAMzuB,QAC7C61B,EAAuC,IAA3Bz0B,KAAKzB,MAAMm2B,YAAqBrH,EAAQA,EAAMxrB,OAAS,EAAI,EAAK7B,KAAKzB,MAAMm2B,YAAc,EAEvG10B,KAAK20B,UACL30B,KAAKwB,SAAS,CAAEozB,UAAU,EAAMF,YAAaD,IAE7Cz0B,KAAKwB,SAAS,CAAEkzB,YAAaD,GAAa,EAIjC,KAAAK,WAAa,KAC1B90B,KAAK20B,WAAY,CAAI,EAGR,KAAAI,UAAY,KACzB/0B,KAAK20B,WAAY,EACjB30B,KAAKwB,SAAS,CAAEozB,UAAU,GAAQ,EAOrB,KAAAI,WAAcC,IACvBj1B,KAAK20B,WAGT30B,KAAKwB,SAAS,CAAEkzB,YAAaO,GAAW,EAtGxCj1B,KAAKzB,MAAQ,CAAEm2B,YAAa,EAAGE,UAAU,EAAOL,iBAAiB,GACjEv0B,KAAK20B,WAAY,EACjB30B,KAAK0F,kBAAmBga,EAAAA,EAAAA,oBACpB1f,KAAKjC,MAAM6E,QAAQH,QAAQkd,kBAC3B3f,KAAKjC,MAAM6hB,aACX5f,KAAKjC,MAAMqF,UAEnB,CAEO6C,oBACCjG,KAAKjC,MAAM6E,SAAW5C,KAAKjC,MAAM6E,QAAQH,SAAWzC,KAAKjC,MAAM6E,QAAQH,QAAQ6xB,cACIrxB,IAA/EjD,KAAKjC,MAAM6E,QAAQH,QAAQ6xB,QAAQY,IAAI,mBAAmBl1B,KAAKjC,MAAM0C,QACrET,KAAKjC,MAAM6E,QAAQH,QAAQ6xB,QAAQpZ,IAAI,mBAAmBlb,KAAKjC,MAAM0C,KAAM,SAC3ET,KAAKwB,SAAS,CAAE+yB,iBAAiB,IAG7C,CAEO/tB,SACH,GAAIxG,KAAKzB,MAAMg2B,gBACX,OAAO,KAGX,MAAM,UAAEt2B,GAAc+B,KAAKjC,MAAM8G,OAE3BwC,EAAST,EAAAA,EAAAA,EAAA,GAGR5G,KAAKjC,OACLiC,KAAKzB,OAAK,IACbmH,iBAAkB1F,KAAK0F,iBACvByvB,kBAAmB,CACfxU,YAAa3gB,KAAKjC,MAClBE,UAAWkU,IAAW,cAAelU,IAEzCm3B,eAAgBp1B,KAAKzB,MAAMq2B,SAAW,YAAc,GACpDS,KAAMr1B,KAAKw0B,MACXc,SAAUt1B,KAAK60B,UACfU,yBAA0Bv1B,KAAKg1B,WAC/BQ,sBAAuBx1B,KAAKq0B,uBAC5BoB,eAAgBz1B,KAAK+0B,UACrBW,gBAAiB11B,KAAK80B,aAG1B,OAAO90B,KAAKjC,MAAM+iB,WAAWzZ,EACjC,EA6DJ,gHC9HA,MAAMsuB,EAAiB53B,IACnB,IAAIic,EAAQ,GAEZ,OADAA,EAAQjc,EAAMsvB,OAAStvB,EAAMsvB,MAAMzuB,SAAWb,EAAMsvB,MAAMzuB,QAAQiD,OAAS,EAAI9D,EAAMsvB,MAAMzuB,QAAU,GAC9Fob,CAAK,EA+BhB,EA7BmDjc,GAC/CC,EAAAA,cAAC+qB,EAAAA,OAAM/hB,OAAAC,OAAA,GAAKlJ,EAAMo3B,kBAAuBp3B,EAAMkvB,uBAAuBlvB,IAClEC,EAAAA,cAAC43B,EAAAA,SAAQ,CACL33B,UAAWkU,IAAWpU,EAAMq3B,gBAC5BV,YAAa32B,EAAM22B,YACnBW,KAAMt3B,EAAMs3B,KACZC,SAAUv3B,EAAMu3B,SAChBO,QAAO93B,EAAM8G,OAAOixB,cAAe,QACnCC,KAAMh4B,EAAM8G,OAAOmxB,SAAW,gBAAa/yB,EAC3C+yB,SAAUj4B,EAAM8G,OAAOmxB,SACvBC,SAAUl4B,EAAM8G,OAAOoxB,SACvBC,eAAgBn4B,EAAM8G,OAAOqxB,eAAiBn4B,EAAM8G,OAAOqxB,oBAAiBjzB,EAC5E+W,MAAO2b,EAAc53B,GACrBo4B,YAAap4B,EAAM8G,OAAOsxB,YAC1BC,eAAgBr4B,EAAM8G,OAAOuxB,eAC7Bb,yBAA0Bx3B,EAAMw3B,yBAChCC,sBAAuBz3B,EAAMy3B,sBAC7Ba,wBAAyBt4B,EAAM6B,WAAa7B,EAAM6B,UAAU02B,0BAC5DC,kBAAmBx4B,EAAM6B,WAAa7B,EAAM6B,UAAU42B,kBACtDC,kBAAmB14B,EAAM6B,WAAa7B,EAAM6B,UAAU8Z,gBACtDgd,kBAAmB34B,EAAM6B,WAAa7B,EAAM6B,UAAUga,YACtD6b,eAAgB13B,EAAM03B,eACtBC,gBAAiB33B,EAAM23B,gBACvBhwB,iBAAkB3H,EAAM2H,iBACxBixB,SAAU54B,EAAM8G,OAAO8xB,oFClB5Bp0B,eAAe6pB,EAClB5P,EACApZ,EACAwzB,GAC2B,IAEvBC,EACA5K,EAHJ6K,IAAAC,UAAAl1B,OAAA,QAAAoB,IAAA8zB,UAAA,KAAAA,UAAA,GAIA,IACIF,QAAmBra,EACnByP,EAAc4K,EAAWra,KAAK0P,OAID,CAH/B,MAAOjqB,GAGL,OAFAmB,EAAUoT,QAAQvU,GAClBmB,EAAU0a,MAAM,uCACTf,EAAAA,YAAYzZ,SAAU,CAGjC,IAAI2oB,EAmCA,OADA7oB,EAAUoT,QAAQ,uDACXuG,EAAAA,YAAYzZ,UAlCnB,IAAK,IAAD0zB,EACA,MAAMC,QAAoDC,EAAAA,iBAAAA,yBACtD,CAAE5tB,cAAestB,EAAap0B,cAAe20B,YAAa,QAC1DN,EAAWra,KAAKvF,GAChBgV,GAGJ,aAAalP,EAAAA,YAAYzZ,QAAkD,QAA3C0zB,EAACC,EAAiBG,iCAAyB,IAAAJ,EAAAA,OAAI/zB,EAuBlD,CAtB/B,MAAOhB,GAEL,GAAI60B,GAA8B,2DAAf70B,EAAMhC,KAAmE,CACxF,UACU42B,EAAWQ,YAAY,CAAC,EAID,CAH/B,MAAOC,GAGL,OAFAl0B,EAAUoT,QAAQ8gB,GAClBl0B,EAAU0a,MAAM,0BACTf,EAAAA,YAAYzZ,SAAU,CAEjC,IAEI,aADM8oB,EAAkB5P,EAAMpZ,EAAWwzB,GAAc,GAChD7Z,EAAAA,YAAYzZ,SAIU,CAH/B,MAAOi0B,GAGL,OAFAn0B,EAAUoT,QAAQ+gB,GAClBn0B,EAAU0a,MAAM,2BACTf,EAAAA,YAAYzZ,SAAU,CAAD,CAMpC,OAFAF,EAAUoT,QAAQvU,GAClBmB,EAAU0a,MAAM,2BACTf,EAAAA,YAAYzZ,SAAU,CAMzC,CA2DOf,eAAei1B,EAClBhN,EACAqM,EACAzzB,EACA1E,EACA+4B,EACA3yB,GAEA,GAAI+xB,EAAY,CACZ,IAAIa,GAA0C,EAC9C,GAAIp3B,EAAAA,gBAAgBC,YAAY7B,IAAa8rB,EAAgC,CAAC,IAADmN,EACzE,MAAMC,EAA6Cl5B,EAAS6P,MACvDxL,GAA2BA,EAAQC,WAAay0B,EAAiBha,YAEtEia,IAAmCE,KAA6C,QAAzBD,EAACC,EAAgBC,gBAAQ,IAAAF,IAAxBA,EAA0BG,gBAAe,MAEjGJ,GAAiC,EAGrC,MAAM/yB,EAAQ,CACVozB,WAAYN,EAAiBhc,OAAQpX,WACrC2zB,YAAalzB,EACbmzB,qBAAsB,CAAEP,mCAG5B,IACI,MAAMQ,QAA4CrB,EAAWsB,uBAAuBxzB,GACpF,aAAaoY,EAAAA,YAAYzZ,QAAQ40B,EAGsB,CAFzD,MAAOj2B,GACLmB,EAAUoT,QAASvU,EAAgB8b,SACnC3a,EAAU0a,MAAM,sCAAuC,CAAD,CAI9D,OAAOf,EAAAA,YAAYzZ,SACvB,sDCjKO,SAAS80B,EAAsBC,EAA+B35B,GACjE,QAAkBuE,IAAdo1B,GAA2B/3B,EAAAA,gBAAgBC,YAAY7B,GACvD,OAAOA,EAAS6P,MAAKxL,GACVs1B,IAAct1B,EAAQC,UAKzC,CAUO,SAASs1B,EACZD,EACA35B,EACA65B,EACAjN,GAEA,MAAMkN,EAAuBD,QAAAA,EAAejN,aAAS,EAATA,EAAW9O,KAAKic,YAE5D,QAAkBx1B,IAAdo1B,GAA2B/3B,EAAAA,gBAAgBC,YAAY7B,GACvD,OAAOA,EAAS6P,MAAKxL,IAAU,IAAA21B,EAC3B,OAAOL,IAAct1B,EAAQC,WAA4B,QAAhB01B,EAAA31B,EAAQ80B,gBAAQ,IAAAa,OAAA,EAAhBA,EAAkBC,uBAAwBH,CAAoB,GAKnH,+PC+BA,MA8IMI,EAA0BA,CAACnL,EAAuC1vB,KACpE,IAAI86B,EACJ,GAAIpL,GAAYA,EAASqL,mBAAoB,CAAC,IAADC,EACzC,MAAMC,EAAcC,EAAgBxL,EAASqL,mBAAoB/6B,EAAMm7B,kBAEvE,IAAIC,EACAp7B,EAAMq7B,wBAA0Br7B,EAAMq7B,uBAAuBv3B,OAAS,IACtEs3B,EAA6Bp7B,EAAMq7B,uBAAuB7qB,MAAK8qB,GACpDA,GAAkBA,EAAe5b,YAAcgQ,EAAShQ,aAGvE,MAAM6b,EAAqC,QAA7BP,EAAGI,SAA0B,IAAAJ,GAAiB,QAAjBA,EAA1BA,EAA4BQ,uBAAe,IAAAR,OAAA,EAA3CA,EAA6CxqB,MAAKirB,GAAUA,EAAOC,OAAShM,EAASiM,eAChGv0B,EAAWm0B,aAAQ,EAARA,EAAUhG,YAIvBuF,EADA1zB,EACmB,GAAGA,MAAa6zB,IAEhB,GAAGA,GAAa,MAGvCH,EAAmB96B,EAAM6B,UAAU+5B,aAEvC,OAAOd,CAAgB,EAGrBe,EAAuBA,CAACnM,EAAuC1vB,KACjE,GAAI0vB,GAAYA,EAASqL,mBAAoB,CACzC,MAAME,EAAcC,EAAgBxL,EAASqL,mBAAoB/6B,EAAMm7B,kBAEvE,GAAIF,EACA,OACIh7B,EAAAA,cAAA,OAAKC,UAAU,+BACXD,EAAAA,cAAA,QAAMC,UAAU,WAAW+6B,GACzB,CAKlB,OAAO,IAAI,EAGTC,EAAkBA,CAACY,EAAwCX,KAC7D,IAAKA,IAAqBW,GAAkD,IAA5BX,EAAiBr3B,OAC7D,MAAO,GAGX,MAAMi4B,EAAgBZ,EAAiB3qB,MAAKwrB,GACjCA,EAAgBC,gBAAkBH,IAG7C,OAAIC,EACOA,EAAcG,YAElBJ,CAAkB,EAGvBK,EAAqBA,CACvBjQ,EACAvrB,EACAX,KAEA,MAAMo8B,EAA6C,GAEnD,OAAKz7B,GAAgC,IAApBA,EAASmD,QAK1BooB,EAAUzhB,KAAI,CAACukB,EAAUzZ,KACrB,IAAIvQ,EAQAq3B,EAMAjB,EAMU,IAADkB,GAhBTt3B,EAHAhF,EAAMysB,gCAGI8N,EAAAA,EAAAA,GAAkCvL,EAAStP,UAAW/e,EAAUquB,EAAS0L,YAAa16B,EAAMutB,YAE5F8M,EAAAA,EAAAA,GAAsBrL,EAAStP,UAAW/e,GAGpDX,EAAMu8B,sBAAwBv8B,EAAMu8B,qBAAqBz4B,OAAS,IAClEu4B,EAA2Br8B,EAAMu8B,qBAAqB/rB,MAAKgsB,IAAsB,IAAAC,EAC7E,OAAmD,QAA5CA,EAAAD,EAAoBE,gCAAwB,IAAAD,OAAA,EAA5CA,EAA8C/c,aAAesP,EAAStP,SAAS,KAI1F1f,EAAMq7B,wBAA0Br7B,EAAMq7B,uBAAuBv3B,OAAS,IACtEs3B,EAA6Bp7B,EAAMq7B,uBAAuB7qB,MAAK8qB,GACpDA,GAAkBA,EAAe5b,YAAcsP,EAAStP,aAGnE1a,IACAo3B,EAAWhJ,KAhLDuJ,EAClB3N,EACAhqB,EACAhF,EACAuV,EACA8mB,EACAO,KAC8B,IAAAjC,EAC9B,MAAM,cAAEpxB,EAAa,aAAEuJ,EAAY,GAAEpQ,EAAE,SAAEoY,EAAQ,QAAEjW,EAAO,UAAEhD,EAAS,iBAAEg7B,EAAgB,uBAAEC,GAA2B98B,EAE9G+8B,GAlENC,EAmEIh9B,EAAMg9B,oBAlEVC,EAmEIj9B,EAAMi9B,oBAlEVT,EAmEIH,EAjEAW,GAEKR,IACAA,EAAoBU,mBACrBV,EAAoBU,mBAAqB,GACzCV,EAAoBU,mBAAqBD,EAElC,EAEJT,EAAoBU,kBAAoBD,EAG5C,GAjB2BE,IAClCH,EACAC,EACAT,EAqEA,MAAMY,EACFp4B,GArDwBq4B,EAC5BC,EACAN,EACAD,EACAtQ,EACA8Q,KAEA,GAAI9Q,EAAgC,CAChC,IAAI+Q,EAAmCD,EAQvC,OAJKA,IACDC,EAAmCF,GAAuB,IAGvDN,EACDQ,EAAmCT,EAC/BS,EACAT,EACJS,CAAiC,CAE3C,OAAIR,GACOD,EAA2BO,EAAsBP,EAErDO,CAAmB,EA6BtBD,CACIr9B,EAAMy9B,oBACNz9B,EAAMg9B,oBACND,EACA/8B,EAAMysB,gCACNznB,SAAiB,QAAV21B,EAAP31B,EAAS80B,gBAAQ,IAAAa,OAAA,EAAjBA,EAAmBZ,kBAAmB,GAIxC2D,EAAgB14B,EAAQ24B,gBAAkBC,EAAAA,oBAAoBC,QAE9DC,EA/BoBC,EAACjB,EAA8D9N,IAAuB,KAChH8N,EAAuB9N,EAAS,EA8BH+O,CAAsBjB,EAAwB9N,GACrEvnB,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1H,EAAM2H,iBAAmBklB,EAAAA,kBAAkBmR,gBAC/EC,GAA0B9Q,EAAAA,EAAAA,wBAAuBntB,EAAM2H,iBAAmBF,GAEhF,IAAIoV,GAAaC,EAAAA,EAAAA,mBAAkB9X,EAAShF,EAAM6E,QAAQJ,mBAAeS,GACzE,GAAIiV,EAAAA,GAASC,YAAa8jB,EAAAA,EAAAA,IAAiBl+B,EAAM6E,QAAQJ,cAAcoO,gBAAiB,CAAC,IAADsrB,EACpF,MAAM/iB,EAAU,IAAIf,IAAIwC,EAAY1V,OAAOC,SAASkT,MACpDc,EAAQ8B,aAAaC,IAAI,YAAa,GAAqB,QAArBghB,EAAGnP,EAAS7jB,iBAAS,IAAAgzB,EAAAA,EAAI,KAC/DthB,EAAazB,EAAQd,IAAK,CAG9B,MAAO,CACHrD,KAAM,CACFjS,UACAgqB,YAEJlB,WAAW4P,IAAiB19B,EAAMg9B,sBAAsBhO,EAASjV,SAAYqjB,EAC7EpO,SACI/uB,EAAAA,cAACm+B,EAAAA,sBAAqB,CAClBnnB,KAAM,CACFyY,SAAUV,EACVhqB,UACAsF,SAAUtK,EAAMsK,UAEpB+zB,gBAAiBrP,EAASjV,SAC1BqjB,YAAaA,EACbkB,eAAeZ,IAAiB19B,EAAMg9B,sBAAsBD,GAA4B,EACxFjqB,aAAcA,EACdvJ,cAAeA,EACf7G,GAAIA,EACJoY,SAAUA,EACV+B,WAAYA,EACZhY,QAASA,EACThD,UAAWA,EACX+I,IAAK,GAAG2K,KAASsH,IACjB0hB,oBAAoB,EACpBC,gBAAiBx5B,EAAQwO,gBACzBirB,YAAY,UACZ92B,iBAAkB3H,EAAM2H,iBACxB+2B,4BAA6B1+B,EAAM0+B,4BACnCC,iBAAkB9D,EAAwB7L,EAAUhvB,KAG5D8vB,OACI7vB,EAAAA,cAACkU,EAAAA,OAAMlL,OAAAC,OAAA,CACHhJ,UAAU,6BACVkJ,QAAS00B,EACT/vB,MAAO8uB,GACHoB,GAEHpB,GAGThN,cAAegM,EAAqB7M,EAAUhvB,GACjD,EA+FW28B,CACI3N,EACAhqB,EACAhF,EACAuV,EACwB,QADnB+mB,EACLD,SAAwB,IAAAC,OAAA,EAAxBA,EAA0BI,0BAGhC,IAIHN,IAvCHp8B,EAAM6E,QAAQQ,UAAUnB,MAAM,kDACvB,KAsCM,ECjSdM,eAAeo6B,EAAgBC,EAAqBtR,GACvD,MAAMuR,EAA8B,CAAC,EAE/BrgB,EAAO8O,EAAU9O,KAuCvB,OAnCIA,GAAQA,EAAKgB,WAAahB,EAAKgB,UAAU3b,OAAS,IAAMypB,EAAU2C,uBAC5D6O,EAAAA,EAAAA,6BAA4B,IAAIC,EAAAA,wBAA2BH,GAC5Dj7B,MAAKjD,IACEA,IACAm+B,EAAan+B,SAAWA,EAAS,IAGxCsD,OAAMC,IAEH,MADA26B,EAAIx5B,UAAU45B,UAAU/6B,GAClB,IAAIC,MAAM,6EAA6E,UAG/F+6B,EAAAA,EAAAA,mCAAkC,IAAIC,EAAAA,sCAAsCN,EAAIhsB,eAAelO,aAAck6B,GAC9Gj7B,MAAKw7B,IACEA,IACAN,EAAavC,qBAAuB6C,EAAkB,IAG7Dn7B,OAAMC,IAEH,MADA26B,EAAIx5B,UAAU45B,UAAU/6B,GAClB,IAAIC,MAAM,6EAA6E,UAG/Fk7B,EAAAA,EAAAA,oCAAmC,IAAIC,EAAAA,uCAAuCT,EAAIhsB,eAAelO,aAAck6B,GAChHj7B,MAAK27B,IACEA,IACAT,EAAaS,gBAAkBA,EAAgB,IAGtDt7B,OAAMC,IAEH,MADA26B,EAAIx5B,UAAU45B,UAAU/6B,GAClB,IAAIC,MAAM,6EAA6E,KAIlG26B,CACX,skBCTA,IAAMU,EAAN,cAAuBv/B,IAAAA,UAenBK,YAAYN,GACRO,MAAMP,GAPF,KAAAy/B,mCAA8C,EAgPrC,KAAAC,mBAAqB,CAACxT,EAAuByT,KAC1D,MAAM/nB,EAAoB,IAAIsU,GAG9B,MAAa,eAATyT,EACO/nB,EAAM7F,MAAK,CAAC6tB,EAAOC,KAAK,IAAAC,EAAAC,EAAA,OAAsB,QAAjBD,EAACD,EAAMG,kBAAU,IAAAF,EAAAA,EAHpC,IAGiE,QAArBC,EAAKH,EAAMI,kBAAU,IAAAD,EAAAA,EAHjE,EAG0E,IAExFnoB,EAAM7F,MAAK,CAAC6tB,EAAOC,KAAK,IAAAI,EAAAC,EAAA,OAAsB,QAAjBD,EAACL,EAAMI,kBAAU,IAAAC,EAAAA,EALhC,IAK6D,QAArBC,EAAKL,EAAMG,kBAAU,IAAAE,EAAAA,EAL7D,EAKsE,GAAC,EA+D/E,KAAAC,kBAAqB52B,GAE9BA,GAAiB,CACbrI,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnC8f,GAAI,CAAEhgB,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCG,UAAU,GAKL,KAAA2+B,2BAA8BC,IAC3C,GAAIp+B,KAAKjC,MAAMiX,KAAKwH,KAAK5a,OAAQ,CAC7B,MAAM+C,EAAQ,CACVqvB,YAAa,CAACoK,EAAiB3iB,OAAQpX,aAE3CrE,KAAKjC,MAAMiX,KAAKwH,KAAK5a,OAAOmyB,gBAAgBpvB,GAAO3C,OAAMC,IACrDjC,KAAKjC,MAAMqF,UAAUoT,QAAQvU,GAC7BjC,KAAKjC,MAAMqF,UAAU0a,MAAM,6BAA6B,GACzD,GAnUP9d,KAAKzB,MAAQ,CACTs+B,aAAc,CAAC,EACftS,aAAa,EACbC,gCAAgC,GAEpCxqB,KAAK0F,kBAAmBga,EAAAA,EAAAA,oBACpB1f,KAAKjC,MAAM6E,QAAQH,QAAQkd,kBAC3B3f,KAAKjC,MAAM6hB,aACX5f,KAAKjC,MAAMqF,WAEf,MAAMqnB,GAAUhlB,EAAAA,EAAAA,kBAAiBilB,EAAAA,GAAeC,SAAU3qB,KAAK0F,iBAAkBklB,EAAAA,kBAAkBC,UACnG7qB,KAAKq+B,4BAA6BnT,EAAAA,EAAAA,wBAAuBlrB,KAAK0F,iBAAkB+kB,GAEhFA,EAAQK,cAAcC,MAAQH,EAAAA,kBAAkBI,cAChDhrB,KAAKirB,2BAA4BC,EAAAA,EAAAA,wBAAuBlrB,KAAK0F,iBAAkB+kB,GAE/EA,EAAQK,cAAcC,MAAQH,EAAAA,kBAAkB0T,gBAChDt+B,KAAKu+B,2BAA4BrT,EAAAA,EAAAA,wBAAuBlrB,KAAK0F,iBAAkB+kB,EACnF,CAEOloB,0BAAuB,IAAAi8B,EAC1B,MAAM57B,EAAU5C,KAAKjC,MAAM6E,QAAQJ,eAEnCyI,EAAAA,EAAAA,KACI,SAAAqhB,EAAA,OAAiC,QAAjCA,EAAMtsB,KAAKjC,MAAMiX,KAAKwH,KAAK5a,cAAM,IAAA0qB,OAAA,EAA3BA,EAA6B9P,KAAKgB,SAAS,IACjDjb,UACIvC,KAAKwB,SAAS,CACVq7B,mBAAoBF,EAAgB/5B,EAAS5C,KAAKjC,MAAMiX,KAAKwH,KAAK5a,SACpE,UAGJ5B,KAAKy+B,gCAEXz+B,KAAKwB,SAAS,CACV03B,iBAAkD,QAAlCsF,EAAEx+B,KAAKjC,MAAMiX,KAAKkkB,wBAAgB,IAAAsF,OAAA,EAAhCA,EAAkC58B,SAGxD5B,KAAKmrB,eACT,CAEOC,mBAAmBsT,GACtB1+B,KAAKmrB,eACT,CAEO9kB,sBAAsBC,EAA0CC,GACnE,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,MAAMiX,OAAS1O,EAAU0O,IAIlE,CAGOxO,SAAM,IAAAkK,EAAAiuB,EAAAC,EAAAC,EAAAC,EAAA1pB,EACT,MAAM,GACF3U,EAAE,SACFoY,EACAhU,QAAQ,gBAAEk6B,EAAe,oBAAEC,GAC3Bp8B,SACIH,SACIwb,MAAM,gBAAEC,EAAe,UAAE6B,KAEhC,QACDnd,EAAO,UACPhD,GACAI,KAAKjC,MAEHye,EAAQxc,KAAKjC,MAAMiX,KAAKwH,MAAQxc,KAAKjC,MAAMiX,KAAKwH,KAAK5a,aAAWqB,EAChE6oB,GAAmBlV,EAAAA,EAAAA,IAAW,WAAY5W,KAAKjC,MAAM6E,QAAQJ,gBAAkB,GAC/Ey8B,GAAUroB,EAAAA,EAAAA,IAAW,OAAQ5W,KAAKjC,MAAM6E,QAAQJ,gBAAkB,GAClE08B,EAAcl/B,KAAKm/B,gBAAgBjhB,EAAiB4N,EAAkB/L,GAAa,IACnFqf,EAAc5iB,GAAQA,EAAKA,KAAKgB,WAA4C,IAA/BhB,EAAKA,KAAKgB,UAAU3b,OAEjE6qB,GACFlQ,aAAI,EAAJA,EAAMmQ,uBAAwB3sB,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAOqY,oBAAsB0P,EAAAA,kBAAkBC,aAClGoB,EAAiBzR,aAAI,EAAJA,EAAMyR,eACvBoR,EAA0D,QAArC3uB,EAAG1Q,KAAKjC,MAAM6E,QAAQH,QAAQ68B,eAAO,IAAA5uB,OAAA,EAAlCA,EAAoC6uB,sBAC5D/R,EAAYxtB,KAAKw/B,gBACjBC,GAAgCC,EAAAA,EAAAA,4BACd,QADwCf,EAC5DniB,aAAI,EAAJA,EAAMA,KAAKgB,iBAAS,IAAAmhB,EAAAA,EAAI,GACoB,QADlBC,EAC1B5+B,KAAKzB,MAAMs+B,aAAavC,4BAAoB,IAAAsE,EAAAA,EAAI,GAChD5+B,KAAKjC,MAAM6E,QAAQJ,cACa,QADAq8B,EAChC7+B,KAAKzB,MAAMs+B,aAAan+B,gBAAQ,IAAAmgC,EAAAA,EAAI,GACpCQ,GAEExT,IACD4T,SAAAA,EAA+BE,WAC9BF,IAAkCz/B,KAAKzB,MAAMgsB,eAC9CiD,GAAYA,EAAUV,MAAKC,GAAYA,EAASlB,WAC/C+T,EAAgB5/B,KAAKjC,MAAMiX,KAAKwH,MAAwC,YAAhCxc,KAAKjC,MAAMiX,KAAKwH,KAAK9O,QAAwBqxB,EACrFc,EAAmBrjB,SAAAA,EAAMqjB,iBAAmBrjB,EAAKqjB,iBAAmB,EACpEC,EAAqBlgC,EAAUmgC,oBAAoBh8B,QAAQ,UAAW87B,EAAiBx7B,YACvF8oB,EAAcvtB,EAAUutB,YACxB6S,EAAgB,CAClBve,IAAKwe,EAAAA,oBACLvT,qBACAjD,UAAW,aACXC,WAAW,EACXzrB,UAAW,iCACXiiC,QAAS,QACT1D,YAAa,SACbn6B,OAAQ5B,EACR0/B,uBAAuB,EACvBC,YAAanB,EACboB,gBAAgB,GAIdrtB,EAASwJ,IAASA,EAAKyR,gBAAkBzR,EAAKA,KAAK0R,kBAAgBjrB,EACnEq9B,EAActtB,EACdpT,EAAUwuB,uBAAuBrqB,QAAQ,UAAWnB,EAAQqQ,iBAAiBC,eAAeF,IAC5F,GAENhT,KAAKy8B,4BAAyE,QAA9CqC,EAAG9+B,KAAKjC,MAAMiX,KAAKynB,mCAA2B,IAAAqC,OAAA,EAA3CA,EAA6Cl9B,OAChF5B,KAAKw9B,kCAAgE,QAA/BpoB,EAAGpV,KAAKjC,MAAMiX,KAAKK,oBAAY,IAAAD,GAAQ,QAARA,EAA5BA,EAA8BxT,cAAM,IAAAwT,GAE5E,QAF4EA,EAApCA,EAAsC7G,MAC3E+G,GAHkC,oEAGvBA,EAAQzM,cACtB,IAAAuM,OAAA,EAFwCA,EAEtCG,UAEH,MAAMlO,EAAST,EAAAA,EAAA,GACR5G,KAAKjC,OAAK,IACbmvB,SACIlvB,IAAAA,cAACuiC,EAAAA,kBAAiB,CACdC,UAAW5gC,EAAU4gC,UACrBC,aAAc7gC,EAAU6gC,aACxB79B,QAASA,EACTnC,GAAIA,EACJoY,SAAUA,EACV7D,KAAM,CAAEwH,QACR9W,iBAAkB1F,KAAK0F,mBAG/BukB,UAAWuD,EACXkT,gBAAiBd,EAAgBI,OAAgB/8B,EACjDsqB,iBAAkB,CACdtvB,UAAW,4BAEf+uB,gBAAiB,CACb/uB,UAAWkU,IAAW,gBACtB1R,GAAIT,KAAKjC,MAAM0C,IAEnBktB,oBAAqB,CACjB1vB,UAAWkU,IAAW,wBAM1B+hB,2BACKkL,GAAgBnR,GAAoB+Q,IAAuB9gB,EAUxD,KATAlgB,IAAAA,cAACkU,EAAAA,OAAMlL,OAAAC,OAAA,CACHqE,SAAUugB,EACV5tB,UAAU,6BACVoa,KAAM6mB,EACNpzB,MAAOlM,EAAU+gC,qBACb3gC,KAAKq+B,4BAERz+B,EAAU+gC,qBAGvBxM,uBACI6K,GAAwBI,GAAgBlhB,EAUpC,KATAlgB,IAAAA,cAACkU,EAAAA,OAAMlL,OAAAC,OAAA,CACHqE,SAAUugB,EACV5tB,UAAU,kCACVoa,KAAMyT,EACNhgB,MAAOlM,EAAUmsB,0BACb/rB,KAAKirB,2BAERrrB,EAAUmsB,0BAGvBwC,eACIvwB,IAAAA,cAACkU,EAAAA,OAAMlL,OAAAC,OAAA,CACHhJ,UAAU,6BACVoa,KAAM4mB,EACNnzB,MAAOg0B,GACH9/B,KAAKu+B,2BAERuB,GAGTc,qCAAsC,KACtCzT,YAAanvB,IAAAA,cAAA,QAAMC,UAAU,8BAA8BkvB,GAC3Dlf,WAAYjQ,IAAAA,cAAA,OAAKC,UAAU,0BAA0BqiC,KAGzD,OAAOtgC,KAAKjC,MAAM+iB,WAAWzZ,EACjC,CAEQ8jB,gBAAa,IAAAa,EAAA3O,EACjB,MACIrI,MAAM,KAAEwH,IACRxc,KAAKjC,MACHkuB,EAAwC,QAA7BD,EAAc,QAAd3O,EAAGb,EAAK5a,cAAM,IAAAyb,GAAM,QAANA,EAAXA,EAAab,YAAI,IAAAa,OAAA,EAAjBA,EAAmB6O,eAAO,IAAAF,EAAAA,OAAI/oB,EAC9CjD,KAAKmsB,2BAA6BF,IAItCjsB,KAAKmsB,yBAA2BF,EAE5BjsB,KAAKzB,MAAMisB,gCACX4B,EAAAA,EAAAA,IAAkB5P,EAAMxc,KAAKjC,MAAMqF,UAAWpD,KAAKjC,MAAM6E,SACpDjB,MAAMC,IACH5B,KAAKwB,SAAS,CAAE+oB,aAAcjqB,EAAAA,gBAAgBC,YAAYqB,aAAM,EAANA,EAAQyqB,yBAA0B,IAE/FrqB,OAAM,KACHhC,KAAKwB,SAAS,CAAE+oB,aAAa,GAAQ,IAG7CvqB,KAAKwB,SAAS,CAAE+oB,aAAa,IAErC,CAEQ4U,gBAAgBjhB,EAA0B4N,EAA0B/L,GACxE,GAAI7B,EACA,OAAO4N,EAGX,MAAM+U,GAAgBC,EAAAA,EAAAA,UAAShV,GAC/B,IAAIiV,EAAYjV,EAKhB,OAJIkV,EAAAA,GAAiB7oB,YAAc0oB,IAC/BE,EAAY,GAAG77B,OAAOC,SAAS87B,SAASnV,KAGrC,GAAG/L,IAAaA,EAAUlN,SAAS,KAAa,IAAN,SAAekuB,GACpE,CAkBQvB,gBAAa,IAAA9qB,EACjB,MACI9R,SACIH,SAAW68B,SAAS,uBAAE4B,GAA2B,CAAEA,4BAAwBj+B,KAC9E,OACD4B,EAAM,UACNzB,EAAS,UACTxD,GACAI,KAAKjC,MAEHuJ,EAAgBtH,KAAKk+B,kBAAkBr5B,EAAOyC,eAC9CkV,EAAOxc,KAAKjC,MAAMiX,KAAKwH,MAAQxc,KAAKjC,MAAMiX,KAAKwH,KAAK5a,OAI1D,OAAO5B,KAAKzB,MAAMs+B,aAAan+B,UAAY8d,GAAQA,EAAKA,KAAKgB,WAAahB,EAAKA,KAAKgB,UAAU3b,OAAS,EFZ3E9D,KAChC,MAAM,SAAEW,EAAQ,UAAEurB,GAAclsB,EAChC,OAAOm8B,EAAmBjQ,EAAWvrB,EAAUX,EAAM,EEW3CojC,CAAoB,CAChBlX,UAAWjqB,KAAKy9B,mBAAmBjhB,EAAKA,KAAKgB,UAAW3Y,EAAOu8B,oBAC/D1iC,SAAUsB,KAAKzB,MAAMs+B,aAAan+B,SAClC47B,qBAAsBt6B,KAAKzB,MAAMs+B,aAAavC,qBAC9ClB,uBAAwBp5B,KAAKzB,MAAMs+B,aAAaS,gBAChDh2B,gBACA0zB,oBAAqBh7B,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAOm2B,qBAAuB,EAC1ED,oBAAqB/6B,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAOw8B,mBAAoB,EACvE7F,qBAAqB8F,EAAAA,EAAAA,kCAAiCthC,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAOuY,4BACpFvM,aAAc7Q,KAAKjC,MAAM6E,QAAQH,QAAQoO,aACzCjO,QAAS5C,KAAKjC,MAAM6E,QACpBiW,SAAU7Y,KAAKjC,MAAM8a,SACrBpY,GAAIT,KAAKjC,MAAM0C,GACfb,UAAW,CACP2hC,WAAY3hC,EAAUyQ,yBACtBmxB,YAAa5hC,EAAUuQ,0BACvBsxB,aAAc7hC,EAAUwQ,kCACxBsxB,YAAa9hC,EAAU0Q,0BACvBqxB,sBAAuB/hC,EAAUgiC,oBACjCC,0BAA2BjiC,EAAUiiC,0BACrC11B,uBAAwB,GACxB21B,mBAAoB,GACpBtd,kBAAmB,GACnBC,iBAAkB,GAClBsd,oBAAqB,GACrBpI,aAAc/5B,EAAU+5B,cAE5Bv2B,YACAw3B,iBAAkBh7B,EAAUoiC,qBAC5BC,eAAgB,GAChBC,kBAAmB,GACnBC,qBAAsB,GACtB7W,UAAW9O,EACX0c,iBAAkBl5B,KAAKzB,MAAM26B,iBAC7B2B,uBAAwB76B,KAAKm+B,2BAC7BiE,uBAAwBlB,EACxBx7B,iBAAkB1F,KAAK0F,iBACvB+2B,4BAA6Bz8B,KAAKw9B,kCAAoCx9B,KAAKy8B,iCAA8Bx5B,EACzGunB,+BAAgCxqB,KAAKzB,MAAMisB,+BAC3CniB,SAAkC,QAA1BqM,EAAE1U,KAAKjC,MAAMiX,KAAK3M,gBAAQ,IAAAqM,OAAA,EAAxBA,EAA0B9S,SAExC,IACV,CA2BQW,sCAAmC,IAAA8/B,EAAAC,EACvC,MAAMC,QAAwBviC,KAAKjC,MAAMiX,KAAKK,aAM9C,IAHIktB,SAEC,QAFcF,EAAfE,EAAiBh0B,MACb8G,GAAsC,wEAAtBA,EAAaxM,cAChC,IAAAw5B,OAAA,EAFDA,EAEG9sB,aAAa,EAGhB,YADAvV,KAAKwB,SAAS,CAAEgpB,gCAAgC,IAQpD,GAJ+B+X,SAE9B,QAF6CD,EAAfC,EAAiBh0B,MAC5C8G,GAAsC,mDAAtBA,EAAaxM,cAChC,IAAAy5B,OAAA,EAF8BA,EAE5B/sB,UAEyB,CAAC,IAADitB,EACxB,MAAMC,EAA4D,QAArBD,EAAGxiC,KAAKjC,MAAM6E,eAAO,IAAA4/B,GAAS,QAATA,EAAlBA,EAAoB//B,eAAO,IAAA+/B,GAAK,QAALA,EAA3BA,EAA6B7wB,WAAG,IAAA6wB,GAAU,QAAVA,EAAhCA,EAAkCE,gBAAQ,IAAAF,OAAA,EAA1CA,EAA4CG,iCAC5F,IAAKF,GAAuF,SAA5CA,EAE5C,YADAziC,KAAKwB,SAAS,CAAEgpB,gCAAgC,IAIpD,IAAK,IAADoY,EACA,MAAML,QAAwBviC,KAAKjC,MAAMiX,KAAKK,aAK9C,MAHIktB,SAEC,QAFcK,EAAfL,EAAiBh0B,MACb8G,GAAsC,oEAAtBA,EAAaxM,cAChC,IAAA+5B,OAAA,EAFDA,EAEGrtB,aAAa,GAGhB,YADAvV,KAAKwB,SAAS,CAAEgpB,gCAAgC,GAO7C,CAJT,MAAOvoB,GAIL,OAHAjC,KAAKjC,MAAMqF,UAAUoT,QAAQvU,GAC7BjC,KAAKjC,MAAMqF,UAAU0a,MAAM,qCAC3B9d,KAAKwB,SAAS,CAAEgpB,gCAAgC,GACzC,CAEqC,QAA5CiY,EACAziC,KAAKwB,SAAS,CAAEgpB,gCAAgC,IAEhDxqB,KAAKjC,MAAMiX,KAAK6tB,oBACXlhC,MAAKmhC,IACF,MAAMlhC,IACAkhC,IAC4C,QAA5CL,GAAqDK,EAAaC,OACnB,QAA5CN,IAAsDK,EAAaC,OAC5E/iC,KAAKwB,SAAS,CAAEgpB,+BAAgC5oB,GAAS,IAE5DI,OAAMC,IACHjC,KAAKjC,MAAMqF,UAAUoT,QAAQvU,GAC7BjC,KAAKjC,MAAMqF,UAAU0a,MAAM,8BAA8B,GAC3D,KArCd,CAuCQ,IAADklB,EACH,MAAMC,QAA0BjjC,KAAKjC,MAAMiX,KAAKiuB,kBAChDjjC,KAAKwB,SAAS,CAAEgpB,iCAAwE,QAAxCwY,EAAEC,aAAiB,EAAjBA,EAAmBC,2BAAmB,IAAAF,GAAAA,IACjF,CAEf,GApZEzF,GAAQ7zB,EAAAA,EAAAA,IAAA,CADbkD,EAAAA,IACK2wB,GAuZN,qFCldA,MAmCA,EAnBoDx/B,GAChDC,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKlJ,EAAMivB,gBAAqBjvB,EAAMkvB,uBAAuBlvB,IAC7DA,EAAMmvB,WACNnvB,EAAM2iC,iBACH1iC,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKlJ,EAAM2iC,iBACX3iC,EAAMovB,YACNpvB,EAAM6iC,qCACP5iC,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKlJ,EAAMwvB,kBAvBP4V,EAAC3V,EAAuDzvB,IACxEyvB,EAIEA,EAAUhlB,KAAI,CAACilB,EAAUna,IAExBtV,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKlJ,EAAM4vB,oBAAmB,CAAEhlB,IAAK2K,IACrCma,EAASV,SACTU,EAASG,cACTH,EAASI,WARlB9vB,EAAM6E,QAAQQ,UAAUnB,MAAM,kDACvB,MAoBoCkhC,CAAiBplC,EAAMksB,UAAWlsB,IACpEA,EAAMkQ,WACNlQ,EAAMm2B,2BACNn2B,EAAMo2B,sBACNp2B,EAAMwwB,2ICoMvB,MAAM6U,EAAmDrlC,IACrD,MAAM2G,EAAY3G,EAAMiX,KAAKyY,SAASvkB,UAGtC,IAFAX,EAAAA,EAAAA,mBAAkB7D,IAEb3G,EAAM6E,QAAQH,QAAQwb,KAAKolB,QAAU3+B,IAAcpE,EAAAA,gBAAgBC,YAAYxC,EAAMiX,KAAK3M,UAC3F,OAAO,KAGX,MAAMi7B,EAAUvlC,EAAMiX,KAAK3M,SAASkG,MAAKjE,GAAQA,EAAKtH,WAAa0B,IAEnE,OAAK4+B,GAAYA,EAAQz6B,KAIlB7K,EAAAA,cAAA,OAAKC,UAAU,gCAAgCqlC,EAAQz6B,MAHnD,IAG8D,EAGvE06B,EACuBC,CAACC,EAAwBC,IACzCD,GAAYA,EAAQE,WAIlBF,EAAQE,WAAWn7B,KAAIo7B,GACkB,IAAxCA,EAAiBp2B,mBAEbxP,EAAAA,cAAA,OAAK2K,IAAK,GAAG86B,EAAQzgC,6BAA8B/E,UAAU,uCACzDD,EAAAA,cAAA,QAAMC,UAAU,wCACXylC,EAAiBlC,YAAW,IAC7BxjC,EAAAA,cAAA,QAAMC,UAAU,QAAQ2lC,EAAiB90B,gBAAkB80B,EAAiB90B,eAAeyD,SAM/D,IAAxCqxB,EAAiBp2B,mBAEbxP,EAAAA,cAAA,OAAK2K,IAAK,GAAG86B,EAAQzgC,6BAA8B/E,UAAU,uCACzDD,EAAAA,cAAA,QAAMC,UAAU,wCACXylC,EAAiBjC,aAAY,IAC9BzjC,EAAAA,cAAA,QAAMC,UAAU,QAAQ2lC,EAAiB90B,gBAAkB80B,EAAiB90B,eAAeyD,SAM/D,IAAxCqxB,EAAiBp2B,mBAEbxP,EAAAA,cAAA,OAAK2K,IAAK,GAAG86B,EAAQzgC,6BAA8B/E,UAAU,uCACzDD,EAAAA,cAAA,QAAMC,UAAU,uCACXylC,EAAiBnC,WAAU,IAC5BvjC,EAAAA,cAAA,QAAMC,UAAU,QAAQ2lC,EAAiB90B,gBAAkB80B,EAAiB90B,eAAeyD,SAM/D,IAAxCqxB,EAAiBp2B,mBAEbxP,EAAAA,cAAA,OAAK2K,IAAK,GAAG86B,EAAQzgC,6BAA8B/E,UAAU,uCACzDD,EAAAA,cAAA,QAAMC,UAAU,wCACXwlC,EAAQI,WAAaH,EAAiBI,aAAeJ,EAAiBhC,YAAW,IAClF1jC,EAAAA,cAAA,QAAMC,UAAU,QAAQ2lC,EAAiB90B,gBAAkB80B,EAAiB90B,eAAeyD,SAKpG,OA/CA,GAHbgxB,EAsDoBxlC,GACbA,EAAMiX,KAAKyY,SAASsW,eAA8D,IAA7ChmC,EAAMiX,KAAKyY,SAASsW,cAAcliC,OAIrE9D,EAAMiX,KAAKyY,SAASsW,cAAcv7B,KAAI,CAACw7B,EAAc1wB,IAEpDtV,EAAAA,cAAA,OAAK2K,IAAKq7B,EAAaC,SAAW3wB,EAAOrV,UAAU,uCAC/CD,EAAAA,cAAA,YACKgmC,EAAaE,UAAYF,EAAaE,UAAY,GAAE,IAAG,IAAInmC,EAAM6B,UAAUkiC,oBAAsB,eAEtG9jC,EAAAA,cAAA,QAAMC,UAAU,yCACZD,EAAAA,cAACmmC,EAAAA,eAAc,CACXnvB,KACIjX,EAAMqmC,YACA,CACIpxB,MAAO,CAEHqxB,wBAAyBtmC,EAAMiX,KAAKyY,SAAS6W,mBAGrD,CACItxB,MAAO,CACHqxB,wBAAyBL,EAAaO,gBACtC10B,UAAWm0B,EAAaO,kBAI1C3hC,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVoY,SAAU9a,EAAM8a,SAChB1F,aAAcpV,EAAMymC,iBAG5BxmC,EAAAA,cAAA,YAAO,UAA0CiF,IAArC+gC,EAAaS,oBAAoCT,EAAaS,oBAAsB,WAhCjG,KAxDblB,EA6FqBxlC,IACnB,IAAKA,EAAM2mC,0BACP,OAAO,KAEX,MAAMC,EAAmB5mC,EAAM6mC,wBACzB,0CAA0C7mC,EAAM6mC,0BAChD,yCACN,OAAO5mC,EAAAA,cAAA,QAAMC,UAAW0mC,GAAmB5mC,EAAM2mC,0BAAiC,EApGpFnB,EA4GoBxlC,IAClB,GAAIA,EAAMiX,KAAKyY,SAASoX,cACpB,OAAO,KAIX,IAAK9mC,EAAM6E,QAAQ+O,IAAI9M,OAAOigC,0BAAkF,SAAtD/mC,EAAM6E,QAAQ+O,IAAI9M,OAAOigC,yBAC/E,OAGJ,MAAM/hC,EAAUhF,EAAMiX,KAAKjS,QAC3B,OAAKA,GAAYA,EAAQgC,qBAKrB/G,EAAAA,cAAA,OAAKC,UAAU,yCACXD,EAAAA,cAAA,YAAO+E,EAAQgC,4BANvB,CAOU,EA9HZw+B,EAiIoBxlC,IAAyB,IAAAyV,EAC3C,MAAM4uB,EAAsD,QAAhC5uB,EAAGzV,EAAM6E,QAAQH,QAAQ68B,eAAO,IAAA9rB,OAAA,EAA7BA,EAA+B0tB,uBACxDzE,EAA8B1+B,EAAM0+B,4BACpC1P,EAAWhvB,EAAMiX,KAAKyY,SAC5B,IAAIsX,GAAoB,EACwB,IAADC,OAAX/hC,IAAhCw5B,EACAsI,KACIhY,EAAS2M,cAC0C,QAD9BsL,EACrBvI,EAA4BwI,+BAAuB,IAAAD,IAAnDA,EAAqDlY,MAAKoY,GAAgBA,IAAiBnY,EAAS2M,gBAGxGqL,KAAuBhY,EAAS2M,cAAgB3M,EAAS2M,eAAiB0I,GAE9E,IAAK2C,EACD,OAGJ,MAAMI,GAAuBpY,EAASqY,aAAe,IAAI33B,QAAO43B,GAAcA,EAAWC,aAEzF,GAAmC,IAA/BH,EAAoBtjC,OACpB,OAGJ,MAAM0jC,EAAaJ,EAAoBK,QAAO,CAACC,EAAaJ,IACjDI,GAAeJ,EAAWK,kBAAoB,IACtD,GAEGC,EACF3nC,EAAAA,cAACmmC,EAAAA,eAAc,CACXnvB,KAAM,CACFhC,MAAO,CACHqxB,wBAAyBkB,IAGjChhB,cAAc,OACd3hB,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVoY,SAAU9a,EAAM8a,SAChB5a,UAAU,gCACVkV,aAAcpV,EAAMymC,gBAG5B,OACIxmC,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,SAAOC,UAAU,gCAAgC,GAAGF,EAAM6B,UAAUmiC,wBACpE/jC,EAAAA,cAAA,QAAMC,UAAU,kBAAkB0nC,GACnC,EA/KTpC,EAkLmBxlC,IAAyB,IAAA6nC,EAC1C,MACMC,EAAmC,QAAvBD,EADD7nC,EAAMiX,KAAKyY,SACE2X,mBAAW,IAAAQ,OAAA,EAApBA,EAAsBn4B,QAAOq4B,IAAeA,EAAWR,aAE5E,OACKO,GACGA,EAAar9B,KAAI,CAACu9B,EAAap9B,IACpBo9B,GAAeA,EAAYL,iBAC9B1nC,EAAAA,cAAA,OAAKC,UAAU,+BAA+B0K,IAAKA,GAC/C3K,EAAAA,cAAA,SAAOC,UAAU,sCAAsC,GAAG8nC,EAAYzS,gBACtEt1B,EAAAA,cAAA,QAAMC,UAAU,sBACZD,EAAAA,cAACmmC,EAAAA,eAAc,CACXnvB,KAAM,CACFhC,MAAO,CACHqxB,wBAAyB0B,EAAYL,mBAG7C9iC,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVoY,SAAU9a,EAAM8a,SAChB5a,UAAU,sCACVkV,aAAcpV,EAAMymC,kBAKhC,WAGZvhC,CAAS,EA/MfsgC,EAwN2BxlC,GAC8B,IAAnDA,EAAMiX,KAAKyY,SAASuY,2BACb,KAEJhoC,EAAAA,cAAA,OAAKC,UAAU,yCAAyCF,EAAM6B,UAAUiiC,2BA4OvF,EAvO4C9jC,IAAyB,IAAAkoC,EAAAC,EACjE,MAAM,YAAE9B,EAAW,WAAExpB,EAAU,UAAEhb,GAAc7B,GACzC,QAAEgF,EAAO,SAAE0qB,GAAa1vB,EAAMiX,KAE9BmxB,EAA2B,CAC7B5E,WAAY3hC,EAAU2hC,WACtBC,YAAa5hC,EAAU4hC,YACvBE,YAAa9hC,EAAU8hC,YACvBD,aAAc7hC,EAAU6hC,aACxBqC,aAAclkC,EAAUkkC,cAGtBsC,EACFrjC,IACA0O,EAAAA,EAAAA,qBACI1O,EAAQ2O,OACR3T,EAAM6E,QAAQJ,cAAcoO,eAAelO,YAClB,QAD6BujC,EACtDloC,EAAM6E,QAAQH,QAAQkP,WAAG,IAAAs0B,GAAQ,QAARA,EAAzBA,EAA2BphC,cAAM,IAAAohC,OAAA,EAAjCA,EAAmCr0B,kBAErCy0B,EAAoBtjC,GAAWwgC,EAA8CxgC,EAASojC,GACtF7+B,EAAgBvJ,EAAMuJ,cACxBA,IACAA,EAAcg/B,iBAAkB,GAEpC,MAAMC,EAAqBhD,EAA0CxlC,GAC/DyoC,EAAuBjD,EAA2CxlC,GAClE0oC,EAAsBlD,EAA0CxlC,GAChE2oC,EAAsBnD,EAA0CxlC,GAChE4oC,EAAqBpD,EAAyCxlC,GAC9D6oC,EAA6BrD,EAAiDxlC,GAC9EyH,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1H,EAAM2H,iBAAmB,GAAI3C,aAAO,EAAPA,EAASC,SAASqB,YACnFwiC,GAAmB3b,EAAAA,EAAAA,wBAAuBntB,EAAM2H,iBAAmBF,GACnE+d,GAAcxgB,aAAO,EAAPA,EAAS8F,OAAQ4kB,EAAS6F,YACxCwT,EAAgB/oC,EAAMiX,KAAKyY,SAASoX,cAAgB,+BAAiC,+BAErFnkC,EAAYsN,IACVjQ,EAAMgpC,kBACChpC,EAAMgpC,iBAAiBhpC,EAAMiX,KAAKyY,SAAUzf,EAAUjQ,EAAMipC,WAsH3E,OACIhpC,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKC,UAAU,iBACXD,EAAAA,cAAA,OAAKC,UAAW6oC,GACZ9oC,EAAAA,cAACoT,EAAAA,GAAK,CACFR,eAAgB7S,EAAM6E,QAAQJ,cAAcoO,eAC5CU,IAA0B,QAAvB40B,EAAEnoC,EAAMw+B,uBAAe,IAAA2J,EAAAA,EAAI,QAC9B10B,YAAa40B,EACb/0B,QAASkS,EACT1S,aAAc9S,EAAM8S,aACpBvJ,cAAeA,EACfuK,oBAAoB,WAG5B7T,EAAAA,cAAA,OAAKC,UAAU,0BACXD,EAAAA,cAAA,OAAKC,UAAU,0BACXD,EAAAA,cAAColC,EAAqBp8B,OAAAC,OAAA,GAAKlJ,IAC1Bma,EAAAA,GAASC,UACNna,EAAAA,cAAA,IAAAgJ,OAAAC,OAAA,CAAGhJ,UAAU,gCAAmC4oC,EAAgB,CAAExuB,KAAMuC,EAAYjS,IAAKiS,IACpF2I,GAEL,KACHjjB,EAAAA,gBAAgBC,YAAY8lC,GACzBroC,EAAAA,cAAA,OAAKC,UAAU,mCAAmCooC,GAElD,GAEHI,EACDzoC,EAAAA,cAAA,OAAKC,UAAU,gCACXD,EAAAA,cAACmmC,EAAAA,eAAc,CACXnvB,KACIovB,EACM,CACIpxB,MAAO,CACHqxB,wBAA0BtmC,EAAMiX,KAAKyY,SAAuBwZ,6BAC5Dp3B,UAAY9R,EAAMiX,KAAKyY,SAAuByZ,cAGtD,CACIl0B,MAAO,CACHqxB,wBAA0BtmC,EAAMiX,KAAKyY,SAAsB0Z,cAC3Dt3B,UAAW9R,EAAMiX,KAAKyY,SAAS2Z,WAIjDxkC,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVoY,SAAU9a,EAAM8a,SAChB5a,UAAU,iBACVopC,qBAAsBtpC,EAAMiX,KAAKyY,SAASuY,2BAC1C7yB,aAAcpV,EAAMymC,iBAG3B+B,EACAC,EACAzoC,EAAMupC,iCAAmCtpC,EAAAA,cAAA,OAAKC,UAAU,0BAA0ByoC,GAClFC,EACAC,GA7JaW,MAC9B,MAAMC,EAAQ,GACd,OAAIzpC,EAAMs+B,aACC,MAINt+B,EAAMiX,KAAKyY,SAASoX,gBACjB9mC,EAAMiX,KAAKjS,SAAWhF,EAAMu+B,mBAC5BkL,EAAMrW,KACFnzB,EAAAA,cAAA,OAAKC,UAAU,mCACXD,EAAAA,cAAA,OAAKC,UAAU,yCAAyC2B,EAAU+hC,uBAClE3jC,EAAAA,cAACypC,EAAAA,oBAAmB,CAChBhnC,GAAI,2BAA2B1C,EAAMiX,KAAKjS,QAAQC,YAAYjF,EAAMiX,KAAKyY,SAASiM,gBAAgB37B,EAAMiX,KAAKyY,SAAShS,SACtHjQ,IAAKzN,EAAMo9B,aAAe,GAC1BrwB,aAAc/M,EAAMq+B,gBACpB17B,SAAUA,EACVyL,uBAAwBvM,EAAUuM,uBAClCJ,yBAA0BnM,EAAUmM,yBACpCK,yBAA0BxM,EAAUwM,yBACpCzD,IAAK5K,EAAMiX,KAAKyY,SAAShS,OACzBnQ,UAAWvN,EAAM2pC,iBACjBC,WAAY5pC,EAAMiX,KAAKjS,QAAQ8gC,WAC/Bn+B,iBAAkB3H,EAAM2H,qBAKpC8hC,EAAMrW,KACFnzB,EAAAA,cAAA,OAAKC,UAAW2pC,IAAW,0BAA2B,CAAE,kBAAoD,IAAjC7pC,EAAMiX,KAAKyY,SAAS3V,YAC3F9Z,EAAAA,cAAA,SAAOC,UAAU,kBAAkB2B,EAAU+hC,sBAAqB,KAClE3jC,EAAAA,cAAA,QAAMC,UAAU,kBAAkBF,EAAMiX,KAAKyY,SAAS3V,aAMtE0vB,EAAMrW,KACFnzB,EAAAA,cAAA,OAAKC,UAAU,kCACXD,EAAAA,cAACmmC,EAAAA,eAAc,CACXnvB,KACIovB,EACM,CACIpxB,MAAO,CACHqxB,wBAA0BtmC,EAAMiX,KAAKyY,SAAuBwZ,6BAC5Dp3B,UAAY9R,EAAMiX,KAAKyY,SAAuByZ,cAGtD,CACIl0B,MAAO,CACHqxB,wBAA0BtmC,EAAMiX,KAAKyY,SAAsB0Z,cAC3Dt3B,UAAW9R,EAAMiX,KAAKyY,SAAS2Z,WAIjDxkC,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVoY,SAAU9a,EAAM8a,SAChB5a,UAAU,wCACVumB,kBAAmB5kB,EAAU4kB,kBAC7BC,iBAAkB7kB,EAAU6kB,iBAC5BtR,aAAcpV,EAAMymC,gBAEtBzmC,EAAMiX,KAAKyY,SAASoa,gBAAkB9pC,EAAMiX,KAAKyY,SAASoa,eAAiB,GACzE7pC,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,QAAMC,UAAU,wCACX,IAAIF,EAAM6B,UAAUkiC,oBAAsB,eAE/C9jC,EAAAA,cAACmmC,EAAAA,eAAc,CACXnvB,KACIjX,EAAMqmC,YACA,CACIpxB,MAAO,CAEHqxB,wBAAyBtmC,EAAMiX,KAAKyY,SAAS6W,mBAGrD,CACItxB,MAAO,CACHqxB,wBAAyBtmC,EAAMiX,KAAKyY,SAASoa,eAC7Ch4B,UAAW9R,EAAMiX,KAAKyY,SAASoa,iBAIjDjlC,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVoY,SAAU9a,EAAM8a,SAChB5a,UAAU,sCACVopC,qBAAsBtpC,EAAMiX,KAAKyY,SAASuY,2BAC1C7yB,aAAcpV,EAAMymC,kBAI5B,OAILgD,EAAK,EA8DCD,GACAxpC,EAAMiX,KAAKyY,SAASoX,eAAiB9mC,EAAMiX,KAAKsW,WAAavtB,EAAM6B,UAAUkoC,sBAC1E9pC,EAAAA,cAAC+pC,EAAAA,oBAAmB,CAChB9pC,UAAU,wCACV2E,QAAS7E,EAAM6E,QACfhD,UAAW7B,EAAM6B,UAAUkoC,qBAC3Bxc,UAAWvtB,EAAMiX,KAAKsW,UACtBmC,SAAU1vB,EAAMiX,KAAKyY,aAlLrC1vB,EAAM+P,aAEF9P,EAAAA,cAAA,OAAKC,UAAU,kDACXD,EAAAA,cAAA,QAAMC,UAAU,6BAChBD,EAAAA,cAAA,YAAOD,EAAM+P,eAKlB,KA+KJ,uXCloBX,MAOM0T,EAPoCzjB,IACtC,MAAM,sBAAEiqC,GAA0BjqC,EAAMonB,UAClC,QAAE1N,GAAY1Z,EAEpBiqC,GAAyBvwB,GAAWuwB,EAAsBvwB,EAAQ,EAYhEwwB,EAAoCtjC,GAAqC,KAC3E6c,EAAyC7c,EAAM,EAGtCujC,EAAuBvjC,IAChC,MAAM,GACFsS,EAAE,cACFF,EAAa,gCACboxB,EAA+B,mBAC/BC,EAAkB,SAClBjjB,EAAQ,KACRllB,EAAI,cACJqH,EAAa,QACb1E,EAAO,iBACP8C,EAAgB,uBAChB2iC,GACA1jC,EAEJ,IAAKsS,EACD,OAAO,KAGX,MASM,UAAEqxB,GAAcnjB,EAEtB,MAAO,CACHxc,IAAK,GAAGsO,aACR4Z,mBAAoB0X,EAA2B3lC,EAASmU,EAAcuE,mBAAoBhU,EAAe+gC,GACzGG,uBAAwBC,EAAiB9jC,GACzCosB,kBACI/yB,EAAAA,cAAA,WACIA,EAAAA,cAAA,OAAKC,UAAU,sCACXD,EAAAA,cAAA,KAAGqa,KAlBc5B,MAAa,IAAAiyB,EAC1C,MAAM/xB,EAAwD,QAArD+xB,GAAG9xB,EAAAA,EAAAA,IAAW,gBAAiBhU,EAAQJ,sBAAc,IAAAkmC,EAAAA,EAAI,GAC5DC,EAAYhyB,EAAI9D,SAAS,KAAO,IAAM,IAC5C,OAAIoE,EACO,GAAGN,IAAMgyB,OAAe1xB,IAE5B,EAAE,EAYYR,GAA0B,aAAcxW,GAC5CA,IAGTjC,EAAAA,cAAA,OAAKC,UAAU,iCACV8Y,EAAcyC,WACd,IAAG,cAGRxb,EAAAA,cAAA,MAAIoD,MAAM,aAGlBwvB,gBACI5yB,EAAAA,cAAA,OAAKC,UAAU,4CACXD,EAAAA,cAAC4qC,EAAAA,gCAA+B,CAC5BnoC,GAAIwW,EACJrU,QAASA,EACTiW,SAAUlU,EAAM0iB,eAChBrS,KAAM,CACF+B,cAAepS,EAAMoS,eAEzB9Y,UAAU,uCACV4qC,cAAelkC,EAAMmkC,aACrBhwB,cAAenU,EAAM/E,UACrB8F,iBAAkBA,EAClBjB,oCAAqCE,EAAMF,uCAIvD0jB,aACInqB,EAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAU,iCAAgC,aAC9BkqC,EACZhhC,QAAS8gC,EAAiCtjC,KAGlDmsB,2BAA4BsX,GAAsBA,EAAmB5pC,QAAU4pC,EAAmBhyB,aAC9FpY,EAAAA,cAAA,OAAKC,UAAU,4BACXD,EAAAA,cAAC8U,EAAAA,MAAK,CAAC1R,MAAOgnC,EAAmB/xB,gBAAiB7X,OAAQ4pC,EAAmB5pC,OAAQqI,OAAQyhC,GACzFtqC,EAAAA,cAAA,YAAOoqC,EAAmBhyB,eAIzC,EAQC2yB,EAAkBnuB,GAAuB,KAC3C1V,OAAOC,SAAS8B,OAAO2T,EAAW,EAGhC2tB,EAA6BA,CAC/B3lC,EACA0Y,EACAhU,EACA+gC,KAEA,MAAMrpC,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCE,GAAI,CAAEJ,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCG,UAAU,GAGd,GAAI8b,EAAoB,CACpB,MAAMsB,EAAQtB,EAAmBzZ,OAAS,EAAIyZ,EAAmBzZ,OAAS,EAE1E,OACI7D,EAAAA,cAAA,OAAKC,UAAU,sCACVqd,aAAkB,EAAlBA,EAAoB0tB,MAAM,EAAGpsB,GAAOpU,KAAIsN,IAAO,IAAAmzB,EAAAC,EAAAxmB,EAAAqE,EAAAoiB,EAAAC,EAAA34B,EAAA44B,EAAAC,EAC5C,MAAM1uB,EAAa9E,EAAK4B,YAClBgD,EAAyB5E,EAAK4B,YAAYC,eAAgB/U,EAASkT,SAAqB,QAAjBmzB,EAAJnzB,EAAME,uBAAe,IAAAizB,OAAA,EAArBA,EAAuB//B,WAC1F,GAEN,OACIlL,EAAAA,cAACoT,EAAAA,GAAK,CACFC,QAA8C,QAAvC63B,EAAkB,QAAlBxmB,EAAE5M,EAAK4B,mBAAW,IAAAgL,OAAA,EAAhBA,EAAkB/K,eAAe9O,YAAI,IAAAqgC,EAAAA,EAAI,QAClDt4B,eAAgBhO,EAAQJ,cAAcoO,eACtCjI,IAAqB,QAAlBoe,EAAEjR,EAAK4B,mBAAW,IAAAqP,OAAA,EAAhBA,EAAkBpP,eAAe9O,KACtCyI,IAAqD,QAAlD63B,EAAkB,QAAlBC,EAAEtzB,EAAK4B,mBAAW,IAAA0xB,OAAA,EAAhBA,EAAkBzxB,eAAepG,uBAAe,IAAA43B,EAAAA,EAAI,GACzD33B,YAKK,QALMf,GACPgB,EAAAA,EAAAA,qBACoB,QADD43B,EACfvzB,EAAK4B,mBAAW,IAAA2xB,OAAA,EAAhBA,EAAkB1xB,eAAejG,OACjC9O,EAAQJ,cAAcoO,eAAelO,YAClB,QAD6B4mC,EAChD1mC,EAAQH,QAAQkP,WAAG,IAAA23B,GAAQ,QAARA,EAAnBA,EAAqBzkC,cAAM,IAAAykC,OAAA,EAA3BA,EAA6B13B,yBAChC,IAAAnB,EAAAA,EAAI,GAETI,aAAcjO,EAAQH,QAAQoO,aAC9BvJ,cAAeA,QAAAA,EAAiBtI,EAChC6S,oBAAoB,QACpB1K,QAASkhC,GAA0BU,EAAenuB,GAClD3c,UAAWoqC,EAAyB,eAAiB,IACvD,IAGR,CAGd,OAAOrqC,EAAAA,cAAA,OAAKC,UAAU,sCAAuC,EAI3Dyc,EAA2BA,CAACC,EAA+B/X,EAAuB8B,KACpF,MAAMkW,GAAaC,EAAAA,EAAAA,mBAAkBF,EAAgB/X,EAAQJ,mBAAeS,GAC5E,IAAK6X,EAAAA,iBAAiBC,mBAAmBH,SAA6B3X,IAAdyB,EAAyB,CAC7E,MAAMyU,EAAU,IAAIf,IAAIwC,EAAY1V,OAAOC,SAASkT,MAEpD,OADAc,EAAQ8B,aAAaC,IAAI,YAAa,GAAGxW,QAAAA,EAAa,KAC/CyU,EAAQd,IAAK,CAExB,OAAOuC,CAAU,EAGf6tB,EAAoB1qC,IACtB,MAAM,KAAEkC,GAASlC,EACjB,MAAO,GAAGkC,GAAM,uBC7Nb,MAAMspC,EAAiFC,IAAmC,IAAlC,UAAEvrC,EAAS,UAAE+iB,EAAS,KAAEd,GAAMspB,EACzH,OAAQxoB,GACJ,IAAK,QACD,OAAOhjB,EAAAA,cAAA,KAAGC,UAAWkU,IAAW,sCAAuClU,IAAaiiB,GACxF,IAAK,SACD,OAAOliB,EAAAA,cAAA,KAAGC,UAAWkU,IAAW,uCAAwClU,IAAaiiB,GAEzF,QACI,OAAOliB,EAAAA,cAAA,KAAGC,UAAU,yCAAyCiiB,GAAU,iLCfnF,MAAMwO,EAAgE1wB,IAAAA,YA4DtE,EAtC6ED,IACzE,MAAM4wB,EAAkB3wB,IAAAA,aAAkB,KAChC,GACP,KACI4wB,EAAiCC,IAAkC9a,EAAAA,EAAAA,WAAS,GAC7E+a,EAAsB9wB,IAAAA,aAAkB,KAC1C6wB,GAA+B,EAAK,GACrC,IAEH,OACI7wB,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,UACIC,UAAU,6DACVmD,MAAM,UACN+F,QAAS2nB,EACT5tB,IAAKwtB,EAAyB,aAClB3wB,EAAMgxB,yBAEjBhxB,EAAMgxB,yBAEX/wB,IAAAA,cAACgxB,EAAAA,wBAAuB,CACpB/wB,UAAU,iCACV+a,UAAW4V,EACXK,gBAAgB,EAChBC,aAAcL,EACdjsB,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVuU,KAAM,CAAC,EACP6D,SAAU9a,EAAM8a,SAChBC,cAAe/a,EAAMoxB,mCACrBC,SAAUT,EACVU,UAAWtxB,EAAMuxB,uBACjBC,iBAAkBb,IAEvB,ukBCZX,IAAMgB,EAAN,cAAgC1xB,EAAAA,UAC5BK,YAAYN,GACRO,MAAMP,GAmIO,KAAAoX,yCAA2C,KACxD,IAAI1Q,GAAsC,EACP,IAAD2Q,EAA9BpV,KAAKjC,MAAMiX,KAAKK,eAChB5Q,GACuC,QAAnC2Q,EAAApV,KAAKjC,MAAMiX,KAAKK,aAAazT,cAAM,IAAAwT,GAElC,QAFkCA,EAAnCA,EAAqC7G,MACjC+G,GAA4B,2DAAjBA,EAAQzM,cACtB,IAAAuM,OAAA,EAFDA,EAEGG,aAAa,GAExB,OAAO9Q,CAAmC,EAgD7B,KAAA0W,WAAa,KAC1Bnb,KAAKwB,SAAS,CACVhD,QAAQ,GACV,EAGW,KAAAgxB,YAAcjtB,UAC3B2C,OAAOC,SAASC,QAAQ,EAGX,KAAAqkC,+BAAkCxzB,IAC/C,MAAM,QAAErT,EAAO,KAAEoS,EAAI,UAAE5R,EAAS,UAAExD,GAAcI,KAAKjC,OAC/C,eAAE8xB,GAAmB7a,EAE3B,GAAIpS,GAAWA,EAAQJ,cAAe,CAElC,GADkBI,EAAQH,QAAQwb,KAAKC,iBAAmBtb,EAAQH,QAAQwb,KAAKE,OAC9D0R,EAAejuB,QAAUiuB,EAAejuB,OAAO,IAAMqU,EAAe,CACjF,MAAMc,EAAgB8Y,EAAejuB,OAAO2M,MAAKkjB,GAAKA,EAAEza,YAAYC,KAAOhB,IACvEc,GACA4H,EAAAA,EAAAA,aAAY,CAAErV,cAAe1G,EAAQJ,eAAiBuU,EAAcC,aAC/DrV,OACAK,OAAOC,IACJmB,EAAUoT,QAAQ,0DAClBpT,EAAUnB,MAAMA,GAChBjC,KAAKwB,SAAS,CACViW,QAASxB,EACTyzB,oBAAqB9pC,EAAUif,8BAC/BxI,gBAAiB,SACjBC,aAAc,8BACd9X,QAAQ,GACV,IAELmD,KAAK3B,KAAKwvB,aACVxtB,OAAOC,IACJmB,EAAUoT,QAAQ,0DAClBpT,EAAUnB,MAAMA,EAAM,IAG9BmB,EAAUoT,QAAQ,sFAAsF,MAG5GpT,EAAUoT,QAAQ,yDAAyD,GAnOnFxW,KAAKzB,MAAQ,CACTkZ,QAAS,GACTrB,YAAa,GACbszB,oBAAqB,GACrBrzB,gBAAiB,UACjBC,aAAc,eACd9X,QAAQ,EAEhB,CAEO+D,0BACHvC,KAAKwB,SAAS,CAAC,EACnB,CAEO6E,sBACHC,EACAC,GAEA,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,MAAMiX,OAAS1O,EAAU0O,IAIlE,CAEOxO,SAAM,IAAAmjC,EAAAC,EACT,MAAM,UAAE3rC,EAAS,QAAEgiB,GAAYjgB,KAAKjC,MAAM8G,QACpC,uBAAEglC,EAAsB,4BAAE1Z,GAAgCnwB,KAAKjC,MAAM6B,WACrE,eAAEiwB,GAAmB7vB,KAAKjC,MAAMiX,KAChC80B,EAAqBja,GAAkBA,EAAejuB,OACtDmoC,EAAwC,QAAhBJ,EAAG1pB,aAAO,EAAPA,EAASC,YAAI,IAAAypB,EAAAA,EAAI3pC,KAAKjC,MAAM6B,UAAUoqC,uBAEvE,GAA8B,YAA1Bna,EAAeniB,OAAsB,CAAC,IAADu8B,EACrC,MAAMvpB,EAAU9Z,EAAAA,EAAA,GACR5G,KAAKjC,OAAyD,IAClE2xB,kBAAmB,CACf/O,YAAa3gB,KAAKjC,MAClBE,UAAWkU,IAAW,oBAAqBlU,IAE/CyP,OAAQ,UACRkT,cAAe5iB,EAAAA,cAAC+J,EAAAA,EAAO,CAAC9J,UAAU,oBAAoBC,IAAK8B,KAAKjC,MAAM6B,UAAUoI,2BAChFiY,QACIjiB,EAAAA,cAAC6iB,EAAAA,QAAO,CAAC5iB,UAAU,6BAA6BwjB,IAAiB,QAAdwoB,EAAEhqB,aAAO,EAAPA,EAASwB,WAAG,IAAAwoB,EAAAA,EAAA,KAAmB/pB,KAAM6pB,MAGlG,OAAO/pC,KAAKjC,MAAM+iB,WAAWJ,EAAY,CAG7C,GAAIopB,GAAoD,IAA9BA,EAAmBjoC,OAAc,CAAC,IAADqoC,EAEvD,MAAM/oB,EAAcva,EAAAA,EAAA,GACZ5G,KAAKjC,OAAyD,IAClE2xB,kBAAmB,CACf/O,YAAa3gB,KAAKjC,MAClBE,UAAWkU,IAAW,oBAAqBlU,IAE/CyP,OAAQ,QACRkT,cAAe5iB,EAAAA,cAACurC,EAAAA,EAA8B,CAACvoB,UAAU,QAAQd,KAAM2pB,IACvE/Z,0BACI9xB,EAAAA,cAACkyB,EAAgC,CAC7BttB,QAAS5C,KAAKjC,MAAM6E,QACpBnC,GAAIT,KAAKjC,MAAM0C,GACfoY,SAAU7Y,KAAKjC,MAAM8a,SACrB7D,KAAM,CAAC,EACP+Z,wBAAyBoB,EACzBb,uBAAwBtvB,KAAKwvB,YAC7BL,mCAAoCnvB,KAAKulB,0CAA0CvlB,KAAKjC,MAAM6B,aAGtGqgB,QACIjiB,EAAAA,cAAC6iB,EAAAA,QAAO,CAAC5iB,UAAU,6BAA6BwjB,IAAiB,QAAdyoB,EAAEjqB,aAAO,EAAPA,EAASwB,WAAG,IAAAyoB,EAAAA,EAAA,KAAmBhqB,KAAM6pB,MAIlG,OAAO/pC,KAAKjC,MAAM+iB,WAAWK,EAAgB,CAGjD,MAAM9Z,EAAST,EAAAA,EAAA,GACP5G,KAAKjC,OAAyD,IAClE2xB,kBAAmB,CACf/O,YAAa3gB,KAAKjC,MAClBE,UAAWkU,IAAW,oBAAqBlU,IAE/CyP,OAAQ,UACRuS,QAASjiB,EAAAA,cAAC6iB,EAAAA,QAAO,CAAC5iB,UAAU,6BAA6BwjB,IAAiB,QAAdmoB,EAAE3pB,aAAO,EAAPA,EAASwB,WAAG,IAAAmoB,EAAAA,EAAA,KAAmB1pB,KAAM6pB,IACnGja,0BACI9xB,EAAAA,cAACkyB,EAAgC,CAC7BttB,QAAS5C,KAAKjC,MAAM6E,QACpBnC,GAAIT,KAAKjC,MAAM0C,GACfoY,SAAU7Y,KAAKjC,MAAM8a,SACrB7D,KAAM,CAAC,EACP+Z,wBAAyBoB,EACzBb,uBAAwBtvB,KAAKwvB,YAC7BL,mCAAoCnvB,KAAKulB,0CAA0CvlB,KAAKjC,MAAM6B,aAGtGmwB,4BAA6B/vB,KAAKzB,MAAMC,QAAUwB,KAAKzB,MAAMmrC,qBACzD1rC,EAAAA,cAAA,OAAKC,UAAU,sCACXD,EAAAA,cAAC8U,EAAAA,MAAK,CAAC1R,MAAOpB,KAAKzB,MAAM8X,gBAAiB7X,OAAQwB,KAAKzB,MAAMC,OAAQqI,OAAQ7G,KAAKmb,YAC9End,EAAAA,cAAA,YAAOgC,KAAKzB,MAAMmrC,uBAI9B/Z,eAAgB,CACZ1xB,UAAW,+BACXwjB,IAAK,MAETmO,cAAe,CACX3xB,UAAW,0BACXwjB,IAAK,MAEToO,eAAgBia,GAAsB9pC,KAAKmqC,yBAAyBL,KAGxE,OAAO9pC,KAAKjC,MAAM+iB,WAAWzZ,EACjC,CAEQke,0CAA0C3lB,GAC9C,MAAO,CACH8lB,yBAA0B9lB,EAAUwwB,0BACpCxK,wBAAyBhmB,EAAUimB,mBACnCC,2BAA4BlmB,EAAUkmB,2BACtCC,yBAA0BnmB,EAAUywB,+BAEpCrK,yBAA0BpmB,EAAUomB,yBAEpCC,yBAA0BrmB,EAAU0wB,8BACpCnK,+BAAgCvmB,EAAU2wB,yCAElD,CAaQ4Z,yBAAyBta,GAC7B,MAAM,QAAEjtB,EAAO,UAAEQ,GAAcpD,KAAKjC,OAC9B,cAAEuJ,EAAa,uBAAE+gC,GAA2BroC,KAAKjC,MAAM8G,OAC7D,OAAOgrB,EAAernB,KAAI,CAACuO,EAA8BzD,KACrD,MAAM82B,EAAkD,CACpDhC,mBAAoBpoC,KAAKzB,MACzB0Y,GAAIF,EAAcC,YAAYC,GAC9BhX,KAAM8W,EAAcC,YAAYnO,KAChCkO,gBACAnU,UACA0E,gBACA+gC,yBACAF,gCAAiC,SACjCW,aAAc9oC,KAAKjC,MAAM6B,UAAU8nB,mBACnCpU,QACAmE,QAASV,EAAcC,YAAYC,GACnC7T,YACAgkB,SAAUpnB,KAAKjC,MAAM0C,GACrB4mB,eAAgBrnB,KAAKjC,MAAM8a,SAC3BsM,SAAU,CACN6iB,sBAAuBhoC,KAAKypC,+BAC5BnB,UAAWtoC,KAAKmb,YAEpBvb,UAAW,CACPilB,sBAAuB7kB,KAAKjC,MAAM6B,UAAUilB,sBAC5CC,wBAAyB9kB,KAAKjC,MAAM6B,UAAUklB,wBAC9CC,wBAAyB/kB,KAAKjC,MAAM6B,UAAUmlB,wBAC9CC,wBAAyBhlB,KAAKjC,MAAM6B,UAAUolB,wBAC9CC,0BAA2BjlB,KAAKjC,MAAM6B,UAAUqlB,0BAChDO,gCAAiC,CAC7B1B,mBAAoB9jB,KAAKjC,MAAM6B,UAAUkkB,mBACzCC,6BAA8B/jB,KAAKjC,MAAM6B,UAAUmkB,6BACnDC,mCAAoChkB,KAAKjC,MAAM6B,UAAUokB,mCACzDC,mCAAoCjkB,KAAKjC,MAAM6B,UAAUqkB,mCACzDC,sCAAuClkB,KAAKjC,MAAM6B,UAAUskB,sCAC5DC,kCAAmCnkB,KAAKjC,MAAM6B,UAAUukB,oCAGhE1f,oCAAqCzE,KAAKmV,4CAG9C,OAAO+yB,EAAAA,EAAAA,GAAoBkC,EAAsB,GAEzD,GA3LE1a,GAAiBhmB,EAAAA,EAAAA,IAAA,CADtBkD,EAAAA,IACK8iB,GA4ON,iHCtRO,MAAM2a,EAA+DtsC,IACxE,MAAM,kBACF2xB,EAAiB,OACjBhiB,EAAM,cACNkT,EAAa,QACbX,EAAO,eACP0P,EAAc,eACdE,EAAc,cACdD,EAAa,0BACbE,EAAyB,4BACzBC,GACAhyB,EAEJ,OACIC,EAAAA,cAAC+qB,EAAAA,OAAM/hB,OAAAC,OAAA,GAAKyoB,GACPzP,EACW,YAAXvS,GAAwBkT,EACzB5iB,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,IACX6xB,EACAC,GAEJJ,GAAkBE,GAAkBA,EAAehuB,OAAS,GACzD7D,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAK0oB,GACLE,GACGA,EAAernB,KAAIuO,GACRuzB,EAAqBvzB,EAAe6Y,MAItD,EAIX0a,EAAuBA,CAACvzB,EAA8C6Y,KACxE,MAAM,IAAEjnB,EAAG,gBAAEioB,EAAe,mBAAEC,EAAkB,2BAAEC,EAA0B,aAAE3I,EAAY,kBAAE4I,GAAsBha,EAClH,OACI/Y,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,CAAC0B,IAAKA,EAAK1K,UAAW2xB,EAAe3xB,WAAe2xB,GACpDmB,EACAF,EACAD,EACAzI,EACA2I,EACE,EAIf,iDClDA,QAAgB/yB,GACZC,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKC,UAAW,GAAGF,EAAME,8BACxBF,aAAK,EAALA,EAAOG,MAAOF,EAAAA,cAAA,OAAKC,UAAW,GAAGF,EAAME,2BAA4BF,aAAK,EAALA,EAAOG,+TCqB5E,MAAM+V,UAAiCjW,EAAAA,cAA9CK,cAAA,oBACW,KAAAE,MAAwC,CAC3C2V,eAAe,EACfC,kBAAkB,GAkHL,KAAAC,WAAc/S,IAC3BrB,KAAKwB,SAAS,CACV0S,eAAe,IAGnBlU,KAAKjC,MAAMsW,sBAEXrU,KAAKwB,SAAS,CACV0S,eAAe,GACjB,EAGW,KAAAI,cAAiBjT,IAC9BrB,KAAKwB,SAAS,CACV2S,kBAAkB,IAGtBnU,KAAKjC,MAAMwW,mBAAmB,CAEtC,CAlIWC,gCACHzW,EACAQ,GAEA,MAAMkW,EAAgB1W,EAAM0W,cAAc5S,OAC1C,IAAI0E,uWAASK,CAAA,GAAQrI,GAKrB,OAJAgI,EAAY,CACR2N,cAAiC,IAAlBO,EACfN,iBAAoC,IAAlBM,GAEflO,CACX,CAEOC,SAAM,IAAAkO,EACT,MAAM,qBACFjO,EAAoB,sBACpB5G,EAAqB,qBACrB8U,EAAoB,2BACpB7U,EAA0B,uBAC1BC,EAAsB,wBACtBsT,EAAuB,sBACvBvC,EAAqB,8BACrBC,EAA6B,eAC7B6D,EAAc,yBACd7I,EAAwB,yBACxBK,EAAwB,oBACxB4E,EAAmB,kCACnBC,EAAiC,0BACjChJ,EAAyB,+BACzBC,EAA8B,mBAC9BE,EAAkB,0BAClB+H,EAAyB,kCACzBC,EAAiC,yBACjCC,EAAwB,0BACxBC,EAAyB,2BACzBuE,EAA0B,8BAC1BC,EAA6B,0BAC7B1Q,EAAyB,0BACzBE,EAAyB,0BACzBkO,EAAyB,gBACzBtB,EAAe,yBACflJ,EAAwB,4BACxB4F,EAA2B,0BAC3BC,EAAyB,sBACzBb,GACAhN,KAAKjC,MAAM6B,UAETmV,EAAe,CACjBnS,QAAS5C,KAAKjC,MAAM6E,QACpB8C,iBAAkB1F,KAAKjC,MAAM2H,iBAC7B9F,UAAW,CACP6G,uBACA5G,wBACA8U,uBACA7U,6BACAC,yBACAsT,0BACAvC,wBACAC,gCACA6D,iBACA7I,2BACAK,2BACA4E,sBACAC,oCACAhJ,4BACAC,iCACAE,qBACA+H,4BACAC,oCACAC,2BACAC,4BACAlM,4BACAE,4BACAkO,4BACAtB,kBACAlJ,2BACA4F,8BACAC,4BACAb,yBAEJ1F,cAAetH,KAAKjC,MAAM8G,OAAOyC,cACjC9C,gBAAiBxE,KAAKjC,MAAMyG,gBAC5BC,oCAAqCzE,KAAKjC,MAAM0G,oCAChD4D,SAAkC,QAA1BqM,EAAE1U,KAAKjC,MAAMiX,KAAK3M,gBAAQ,IAAAqM,OAAA,EAAxBA,EAA0B9S,QAGxC,OACI5D,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAACI,EAAAA,GAAiB4I,OAAAC,OAAA,GAAK8N,IACvB/W,EAAAA,cAACkU,EAAAA,OAAM,CACH/K,QAASnH,KAAKoU,WACd9I,SAAUtL,KAAKzB,MAAM2V,cACrBjW,UAAU,sBAAqB,aACnB4W,GAEZ7W,EAAAA,cAAA,cACEgC,KAAKjC,MAAMkX,gBAAkBJ,GAEnC7W,EAAAA,cAACkU,EAAAA,OAAM,CACH/K,QAASnH,KAAKsU,cACdhJ,SAAUtL,KAAKzB,MAAM4V,iBACrBlW,UAAU,kBAAiB,aACf6W,GAEZ9W,EAAAA,cAAA,cACEgC,KAAKjC,MAAMkX,gBAAkBH,GAI/C,wFC5EC3W,6tBAAL,SAAKA,GACDA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,+CACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,oBACH,CAPD,CAAKA,IAAAA,EAAO,KAyBL,MAAMC,UAA0BJ,IAAAA,UAwBnCK,YAAYN,GACRO,MAAMP,GAxBH,KAAAQ,MAAiC,CACpCC,QAAQ,EACRC,MAAO,GACPC,SAAU,GACVC,gBAAiB,GACjBC,QAAST,EAAQU,OACjBC,gBAAiB,KACjBC,kBAAmB,GAGhB,KAAAC,qBAAuC,CAC1CC,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCE,GAAI,CAAEJ,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,IAEvCG,UAAU,GAGP,KAAAC,gBAAqDzB,IAAAA,YAE3C,KAAA0B,iBAAuD1B,IAAAA,YAwEvD,KAAA2B,kBAAoB,KACjC,MACIC,WAAW,sBAAEC,EAAqB,2BAAEC,EAA0B,uBAAEC,IAChEC,KAAKjC,MAET,OACIC,IAAAA,cAAA,QACIC,UAAU,wCAAuC,aACrC4B,EACZI,KAAK,mCACLC,KAAK,OACLC,aAAa,MACbC,SAAUJ,KAAKK,iBAEdL,KAAKzB,MAAMI,iBAAmB2B,EAAAA,gBAAgBC,YAAYP,KAAKzB,MAAMI,kBAClEX,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,SAAOC,UAAW,2CAA4CuC,QAAS,6CAClET,GAEL/B,IAAAA,cAAA,UACIyC,GAAG,6CACHxC,UAAU,kFACVyC,SAAUV,KAAKW,2BAEdX,KAAKY,qBAIlB5C,IAAAA,cAAA,OAAKC,UAAU,qEACXD,IAAAA,cAAA,SACI6C,KAAK,OACLC,WAAS,eACGhB,EACZ7B,UAAU,0DACV8C,YAAajB,EACbkB,MAAOhB,KAAKzB,MAAME,MAClBiC,SAAUV,KAAKiB,eACfC,IAAKlB,KAAKP,gBACV0B,UAAW,MAEfnD,IAAAA,cAAA,UAAQC,UAAU,0CAAyC,aAAa4B,EAAuBuB,MAAM,aAEtG,EAIE,KAAAf,gBAAmBgB,IAChCA,EAAMC,iBAEN,MAAM7C,EAAQ8C,IAAIvB,KAAM,gCAAiC,MAEpDvB,IAILuB,KAAKwB,SAAS,CACV5C,QAAST,EAAQsD,UAGrBzB,KAAK0B,kBAAkBjD,GAClBkD,MAAKC,IACoB,IAAlBA,EAAOC,OACP7B,KAAKwB,SAAS,CACV9C,SAAUkD,EACVhD,QAAST,EAAQ2D,WAGrB9B,KAAKwB,SAAS,CACV9C,SAAUkD,EACVhD,QAAST,EAAQ4D,aAClB,IAGVC,OAAMC,IACHjC,KAAKwB,SAAS,CACV5C,QAAST,EAAQ+D,OACnB,IACJ,EAGO,KAAAC,yBAA4Bd,IACzCrB,KAAKwB,SAAS,CACVY,kBAAmBf,EAAMgB,OAAOrB,OAClC,EAGW,KAAAsB,cAAgBC,UAC7B,MAAM,cACFC,EACAC,SACIC,aAAa,UAAEC,KAEnB3C,KAAKjC,MAAM6E,QACTC,EAAgB,IAAIC,EAAAA,qBAAqBC,EAAQC,SAAUL,EAAW,QAAIM,EAAWjD,KAAKjC,MAAM6E,QAAQH,SACxGS,QAAuBC,EAAAA,EAAAA,oBAAmBN,EAAeL,GAE/D,IAAKU,EAED,OADAlD,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,oCAC5BoB,QAAQC,QAAQ,IAG3B,MAAMC,QAAmBvD,KAAKwD,sBAAsBT,GAQpD,OANA/C,KAAKwB,SAAS,CACViC,0BAA2BF,EAC3B3E,QAAST,EAAQuF,qBACjB5E,gBAAiBoE,IAGdK,CAAU,EAGJ,KAAAtC,eAAkBI,IAC/BrB,KAAKwB,SAAS,CACV/C,MAAO4C,EAAMgB,OAAOrB,OACtB,EAGW,KAAA2C,0BAA4B,KACzC3D,KAAKwB,SAAS,CACV5C,QAAST,EAAQ4D,aACnB,EAGW,KAAA6B,qBAAwB3D,IACrC,MAAM4D,EAAa5D,GAAQ6D,SAAS7D,EAAK8D,QAAQ,IAAIC,OAAOhE,KAAKzB,MAAME,MAAO,KAAM,oBAEpF,OACIT,IAAAA,cAAA,OACIC,UAAU,0CAEVgG,wBAAyB,CAAEC,OAAQL,GAAc,KACnD,EAIO,KAAAM,iBAAmB,IACzBnE,KAAKjC,MAAM6B,UAAUwE,0BACvBL,QAAQ,UAAW/D,KAAKzB,MAAMG,SAASmD,OAAOwC,YAC9CN,QAAQ,YAAa,GAAG/D,KAAKjC,MAAM6B,UAAU0E,4BAA4BtE,KAAKzB,MAAMG,SAASmD,OAAS,EAAI,IAAM,MAuExG,KAAA0C,0BAA4BhC,UACzC,MAAM,gBACFiC,EACA5B,SAAS,cAAEJ,GAAe,oCAC1BiC,GACAzE,KAAKjC,MACH2G,EAAY1E,KAAKzB,MAAMQ,kBACvB4F,EAAQF,EACR,IAAIG,EAAAA,4BACAJ,EACAK,EAAO9B,QAAQC,SACf6B,EAAOC,SACPD,EAAO9B,QAAQgC,sBAAwB,KACvCN,EACAC,GAEJ,IAAIE,EAAAA,4BACAJ,EACAK,EAAO9B,QAAQC,SACf6B,EAAOC,SACPD,EAAO9B,QAAQgC,sBAAwB,MAE3CnD,QAAeoD,EAAAA,EAAAA,wBAAuBL,EAAOnC,GAOnD,OANAxC,KAAKwB,SAAS,CACVhD,QAAQ,EACRyG,YAAY,IAGhBC,OAAOC,SAASC,SACTxD,CAAM,EAuCA,KAAAjB,0BAA6BU,IAC1CrB,KAAKwB,SAAS,CACVzC,kBAAmBsG,OAAOC,SAASjE,EAAMgB,OAAOrB,MAAO,KACzD,EA+CW,KAAAuE,oBAAsB,KACnC,GAAIvF,KAAKzB,MAAMC,OAAQ,CACnB,MAAMgH,GAAUC,EAAAA,EAAAA,kBAAiB,QAASzF,KAAKjC,MAAM2H,iBAAmB,uBAAwB,KAChGC,EAAAA,EAAAA,kBAAiB3F,KAAKjC,MAAM2H,iBAAmBF,EAAS,wBACxDxF,KAAK4F,eACL5F,KAAKN,iBAAiBmG,QAASC,OAAQ,CAG3C9F,KAAKwB,SAAS,CACVhD,QAASwB,KAAKzB,MAAMC,OACpBI,QAAST,EAAQU,SAGjBmB,KAAKzB,MAAM0G,aACXC,OAAOC,SAASC,SAChBpF,KAAKwB,SAAS,CACVyD,YAAY,IACb,CA7ZX,CAEOc,sBAAmB,IAAAC,EACM,QAA5BA,EAAAhG,KAAKP,gBAAgBoG,eAAO,IAAAG,GAA5BA,EAA8BF,OAClC,CAEOG,oBACHjG,KAAK4F,cACT,CAEOM,uBAAoB,IAAAC,EACK,QAA5BA,EAAAnG,KAAKP,gBAAgBoG,eAAO,IAAAM,GAA5BA,EAA8BL,OAClC,CAEcM,oBACV,OAAOpG,KAAKzB,MAAMK,UAAYT,EAAQuF,oBAC1C,CAEO2C,sBAAsBC,EAAoCC,GAC7D,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,QAAUuI,CAInD,CAEOE,SACH,MACI5G,WAAW,qBAAE6G,EAAoB,kBAAEC,IACnC1G,KAAKjC,MAEH4I,EAAUC,EAAAA,EAAA,GACT5G,KAAKjC,OAAK,IACbE,UAAW,2BACX4I,OAAQ7G,KAAKuF,oBACb/G,OAAQwB,KAAKzB,MAAMC,OACnBsI,UAAWL,IAGf,OACIzI,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAC+I,EAAAA,MAAKC,OAAAC,OAAA,GAAKN,GACP3I,IAAAA,cAACkJ,EAAAA,YAAW,CAACL,OAAQ7G,KAAKuF,qBACrBvF,KAAKoG,eACFpI,IAAAA,cAAA,UACI6C,KAAK,SACL5C,UAAU,yBAAwB,aACtByI,EACZS,QAASnH,KAAK2D,4BAGrB8C,GAEJzG,KAAKoH,kBAEVpJ,IAAAA,cAAA,UACI6C,KAAK,SACL5C,UAAU,2CAA0C,aACxCwI,EACZU,QAASnH,KAAKuF,oBACdrE,IAAKlB,KAAKN,kBAEV1B,IAAAA,cAAA,aACCyI,GAIjB,CAgJQW,iBACJ,OAAQpH,KAAKzB,MAAMK,SACf,KAAKT,EAAQuF,qBACT,MAAM,gBAAE5E,EAAe,0BAAE2E,GAA8BzD,KAAKzB,MACtD8I,EAAST,EAAAA,EAAA,GACR5G,KAAKjC,OAAK,IACbuJ,cAAetH,KAAKjC,MAAMuJ,eAAiBtH,KAAKhB,qBAChD+D,QAASjE,EACTyE,WAAYE,EACZ8D,qBAAsBvH,KAAKuE,0BAC3BiD,wBAAyBxH,KAAKmC,yBAC9BsF,oBAAqBzH,KAAK4D,qBAC1B8D,WAAY1H,KAAKL,sBAGrB,OAAO3B,IAAAA,cAAC0F,EAAoBsD,OAAAC,OAAA,GAAKI,IAErC,KAAKlJ,EAAQ4D,YACT,MAAM4F,EAAYf,EAAAA,EAAA,GACX5G,KAAKjC,OAAK,IACbuJ,cAAetH,KAAKjC,MAAMuJ,eAAiBtH,KAAKhB,qBAChD4I,aAAc5H,KAAKsC,cACnB5D,SAAUsB,KAAKzB,MAAMG,SACrB+I,oBAAqBzH,KAAK4D,qBAC1B8D,WAAY1H,KAAKL,oBACjBkI,sBAAuB7H,KAAKmE,mBAGhC,OACInG,IAAAA,cAAC8J,EAAAA,UAAS,KACN9J,IAAAA,cAAC+D,EAAWiF,OAAAC,OAAA,GAAKU,KAI7B,KAAKxJ,EAAQsD,QACT,OACIzD,IAAAA,cAAC8J,EAAAA,UAAS,KACL9H,KAAKL,oBACN3B,IAAAA,cAAC+J,EAAAA,EAAO,CAAC9J,UAAU,2BAA2BC,IAAK8B,KAAKjC,MAAM6B,UAAUoI,4BAIpF,KAAK7J,EAAQ2D,SACT,MAAM,0BAAEmG,EAAyB,+BAAEC,GAAmClI,KAAKjC,MAAM6B,UAEjF,OACI5B,IAAAA,cAAC8J,EAAAA,UAAS,KACN9J,IAAAA,cAAA,KAAGC,UAAU,iDAAiD+B,KAAKmE,oBAClEnE,KAAKL,oBACN3B,IAAAA,cAACmK,EAAiB,CAAClG,MAAOgG,EAA2B/J,IAAKgK,KAItE,KAAK/J,EAAQ+D,MACT,OACIlE,IAAAA,cAAC8J,EAAAA,UAAS,KACL9H,KAAKL,oBACN3B,IAAAA,cAAA,OAAKC,UAAU,mBAAkB,YAAW,aACvC+B,KAAKjC,MAAM6B,UAAUwI,qBAKtC,QACI,OAAOpK,IAAAA,cAAC8J,EAAAA,UAAS,KAAE9H,KAAKL,qBAEpC,CAsCQiG,eACJ,MAAM,oCAAEnB,EAAmC,SAAE4D,GAAarI,KAAKjC,MAGzDY,EAAkB8F,GAAuC4D,EAAWA,EAAW,GAG/E3D,GAAY4D,EAAAA,EAAAA,IAAatI,KAAKjC,MAAM6E,QAAQH,UAClD8F,EAAAA,EAAAA,mBAAkB7D,GAElB1E,KAAKwB,SAAS,CACV7C,gBAAiBA,EACjBI,kBAAmB2F,GAE3B,CAEQ9D,mBACJ,MAAM,gBAAEjC,EAAe,kBAAEI,GAAsBiB,KAAKzB,MACpD,OAAII,GAAmB2B,EAAAA,gBAAgBC,YAAY5B,GACxCA,EAAgB6J,KAAKC,IAExB,MAAMC,EAAaD,EAAezF,WAAajE,EAC/C,OACIf,IAAAA,cAAA,UAAQgD,MAAOyH,EAAezF,SAAU2F,IAAKF,EAAezF,SAAU4F,SAAUF,EAAU,gBAAiBA,GACtGD,EAAeI,KACX,IAId,EACX,CAQQnH,kBAAkBoH,GACtB,MACIlG,SAAS,cACLJ,EACAC,SACIC,aAAa,UAAEC,MAGvB3C,KAAKjC,OACH,kBAAEgB,GAAsBiB,KAAKzB,MAC7BwK,EAA6C,CAAC,EAcpD,OAZAA,EAAoBC,QAAU,CAC1BC,UAAWtG,EACXuG,UAAWnK,GAMXgK,EAAoBI,mBAAoB,EAE5CJ,EAAoBK,gBAAkBN,GAE/BO,EAAAA,EAAAA,uBAAsB,CAAEC,cAAe9G,GAAiBuG,EACnE,CAEQxG,4BAA4BQ,GAChC,MACIH,SAAS,cACLJ,EACAC,SACIC,aAAa,UAAEC,MAGvB3C,KAAKjC,MACH0C,EAAKsC,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,SAEvE,OAAOwG,EAAAA,EAAAA,iCACH,IAAIC,EAAAA,qCAAqChJ,EAAIkC,EAAW,GAAI3C,KAAKjC,MAAM6E,QAAQH,SAC/ED,EAER,GA5XUkH,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,kCC/FN,MAAMC,UAAiB5L,EAAAA,cAG1BK,YAAYN,EAAuBQ,GAC/BD,MAAMP,GAHO,KAAA8L,WAAiD7L,EAAAA,YA2CjD,KAAA8L,WAAczI,IAC3BrB,KAAKwB,SAAS,CAAEuI,cAAe1I,EAAMgB,OAAOrB,QAExChB,KAAKjC,MAAM2C,UACXV,KAAKjC,MAAM2C,SAAS,CAChBsJ,WAAYhK,KAAKjC,MAAMiM,WACvBC,SAAU5I,EAAMgB,OAAOrB,MACvBkJ,cAAe7I,EAAMgB,OAAO8H,WAC7B,EA/CPnK,KAAKzB,MAAQ,CACTwL,cAAe,GAEvB,CAEO9D,oBACCjG,KAAK6J,WAAWhE,UAChB7F,KAAK6J,WAAWhE,QAAQkE,cAAgB,EAEhD,CAEOvD,SACH,MAAM,WAAEwD,EAAU,aAAEI,EAAY,aAAEC,GAAiBrK,KAAKjC,MAExD,OACIC,EAAAA,cAAA,UACIyC,GAAI,uBAAuBuJ,IAC3B9I,IAAKlB,KAAK6J,WAAU,aACRQ,EACZpM,UAAU,uBACVyC,SAAUV,KAAK8J,YAEdM,EAAa5B,KACT8B,GACGA,GACItM,EAAAA,cAAA,UACIgD,MAAOsJ,EAAK7J,GACZkI,IAAK2B,EAAK7J,GACVmI,UAAW5I,KAAKzB,MAAMwL,gBAAmBO,EAAK7J,GAAE,iBAChCT,KAAKzB,MAAMwL,gBAAmBO,EAAK7J,IAElD6J,EAAKtJ,SAMlC,EC3EG,MAAMmH,EAAqBpK,GAC9BC,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKC,UAAU,8CACfD,EAAAA,cAAA,OAAKC,UAAU,4CAA4CF,EAAMkE,OACjEjE,EAAAA,cAAA,OAAKC,UAAU,iEAAiEF,EAAMG,0ECqB9F,IAAqBqM,EAArB,cAAmDvM,EAAAA,cAS/CK,YAAYN,GACRO,MAAMP,GAHO,KAAAyM,SAA8CxM,EAAAA,YA2G9C,KAAAyM,aAAe,KAC5B,MAAMC,OAA8BzH,IAAnBjD,KAAKjC,MAAM4M,IAAoB,EAAI3K,KAAKjC,MAAM4M,IAE3DC,MAAM5K,KAAKzB,MAAMsM,eAAiB7K,KAAKzB,MAAMsM,aAAeH,EAC5D1K,KAAKjC,MAAM2C,UAAYV,KAAKjC,MAAM2C,SAASgK,GAE3C1K,KAAKjC,MAAM2C,UAAYV,KAAKjC,MAAM2C,SAASV,KAAKzB,MAAMsM,aAAc,EA7GxE7K,KAAKzB,MAAQ,CAAEsM,aAAc9M,EAAM+M,cAAgB,GACnD9K,KAAK+K,cAAgB/K,KAAK+K,cAAcC,KAAKhL,OAE7CiL,EAAAA,EAAAA,KACI,IAAMjL,KAAKjC,MAAM+M,eACjB,KACI9K,KAAKwB,SAAS,CAAEqJ,aAAc7K,KAAKjC,MAAM+M,cAAgB,GAAI,GAGzE,CAEOtE,SACH,MAAM0E,EAA8B,GAAGlL,KAAKjC,MAAMoN,+CAC5CC,EAA6B,GAAGpL,KAAKjC,MAAMsN,+CAC3CC,EAAWtL,KAAKjC,MAAM+M,eAAiB9K,KAAKjC,MAAM4M,IAClDY,EAAcvL,KAAKjC,MAAM+M,eAAiB9K,KAAKjC,MAAMyN,IACrDC,EAAezL,KAAKzB,MAAMsM,aAChC,IAAIa,EAAa,GACbJ,EAEAI,EAAa,WACN1L,KAAKjC,MAAMuN,WAElBI,EAAa,cAEjB,MAAMC,EAAoBC,GAAmB,KACzC5L,KAAK6L,qBAAqBD,EAAO,EAGrC,OACI5N,EAAAA,cAAA,OAAKC,UAAU,YACXD,EAAAA,cAAA,UACIsN,SAAUtL,KAAKjC,MAAMuN,UAAYA,EACjCQ,MAAOR,EAAW,GAAKtL,KAAKjC,MAAMgO,yBAClC9N,UAAW,gCAAgCyN,IAC3CvE,QAASwE,GAAkB,GAAE,8BAEjB,GAAG3L,KAAKjC,MAAMgO,2BAC1BC,UAAW,EACX5K,MAAM,aAENpD,EAAAA,cAAA,QAAMC,UAAWiN,KAErBlN,EAAAA,cAAA,SACI6C,KAAK,SACL5C,UAAU,iBACVgO,QAAQ,SACRjL,MAAOyK,EACP/K,SAAUV,KAAK+K,cACfmB,OAAQlM,KAAKyK,aAAY,YACf,SAAQ,aACN,GAAGzK,KAAKjC,MAAMoO,yBAC1BjM,KAAK,aAAY,gBACF,EAAC,gBACDF,KAAKjC,MAAMyN,IAAG,gBACdC,EACfvK,IAAKlB,KAAKwK,SACVc,SAAUtL,KAAKjC,MAAMuN,WAEzBtN,EAAAA,cAAA,UACIsN,SAAUtL,KAAKjC,MAAMuN,UAAYC,EACjCO,MAAOP,EAAc,GAAKvL,KAAKjC,MAAMqO,yBACrCnO,UAAW,iCAAgCsN,EAAc,WAAa,IACtEpE,QAASwE,EAAiB,GAAE,8BAEhB,GAAG3L,KAAKjC,MAAMqO,2BAC1BJ,UAAW,EACX5K,MAAM,aAENpD,EAAAA,cAAA,QAAMC,UAAWmN,KAIjC,CAEQS,qBAAqBD,GACzB,MAAMS,EAAkBrM,KAAKzB,MAAMsM,aAAee,EAE9CS,GAAmB,GAAKA,GAAmBrM,KAAKjC,MAAMyN,KACtDxL,KAAKjC,MAAM2C,UAAYV,KAAKjC,MAAM2C,SAAS2L,EAEnD,CAEQtB,cAAcuB,GAClB,MAAMb,EAAepG,OAAOC,SAASgH,EAAEjK,OAAOrB,MAAO,IAC/C0J,OAA8BzH,IAAnBjD,KAAKjC,MAAM4M,IAAoB,EAAI3K,KAAKjC,MAAM4M,IACzD4B,EACFvM,KAAKwK,UAAYxK,KAAKwK,SAAS3E,SAAW7F,KAAKwK,SAAS3E,mBAAmB2G,kBAAoBxM,KAAKwK,SAAS3E,QAE7G4F,EAAezL,KAAKjC,MAAMyN,IAC1BxL,KAAKwB,SAAS,CAAEqJ,aAAc7K,KAAKjC,MAAMyN,MAEzCxL,KAAKwB,SAAS,CAAEqJ,aAAcY,IAAgB,KAC1CgB,KAAS,KACA7B,MAAM5K,KAAKzB,MAAMsM,eAAmB7K,KAAKzB,MAAMsM,aAAeH,IAAa6B,IAC5EA,EAAaG,aAAa,gBAAiBjB,EAAapH,YACxDkI,EAAaG,aAAa,QAASjB,EAAapH,YAAY,GAEjE,IALHoI,EAKS,GAGrB,GA/GclC,EAAAoC,aAAwC,CAClDhC,IAAK,EACLQ,oBAAqB,eACrBE,oBAAqB,eAJRd,GAAqBb,EAAAA,EAAAA,IAAA,CADzCkD,EAAAA,IACoBrC,GA2HpB,+kBCnGM,MAAM7G,UAA6B1F,IAAAA,UAGtCK,YAAYN,GACRO,MAAMP,GAHF,KAAA8O,mBAAyB,CAAC,EA6LjB,KAAAC,oBAAuBC,GACpC/M,KAAKjC,MAAM6B,UAAUoN,sBAAsBjJ,QAAQ,mBAAoBgJ,GAE1D,KAAAE,sBAAwB1K,UAErCvC,KAAKwB,SAAS,CACV0L,QAAQ,EACRC,qBAAqB,EACrBC,OAAMxG,EAAAA,EAAA,GAAO5G,KAAKzB,MAAM6O,QAAM,IAAEC,SAAKpK,MAGzC,MAAMqK,EAAoBtN,KAAKzB,MAAMgF,WAChCiF,KAAI+E,GAAaA,EAAUC,mBAAmBnJ,aAC9CoJ,QAAO5M,IAASb,KAAK6M,mBAAmBhM,KAE7Cb,KAAKwB,SAAS,CACV4L,OAAQ,CAAEG,UAAWD,KAErBA,EAAkBzL,OAAS,EAC3B7B,KAAKwB,SAAS,CACV0L,QAAQ,IAKhBlN,KAAKjC,MACAwJ,qBAAoBX,EAAC,CAAC,EAAI5G,KAAKzB,QAC/BoD,MAAK+L,IAEEA,EAAOC,eACP3N,KAAKwB,SAAS,CACV0L,QAAQ,EACRC,qBAAqB,GACtB,IAGVnL,OAAMC,IACH,MAAM,4BAAE2L,EAA2B,0BAAEC,GAA8B7N,KAAKjC,MAAM6B,UAC9E,IAAIkO,EAGAA,EADqB,wDAArB7L,EAAMA,MAAMhC,KACG2N,EAEAC,EAGnB7N,KAAKwB,SAAS,CACV0L,QAAQ,EACRE,OAAMxG,EAAAA,EAAA,GAAO5G,KAAKzB,MAAM6O,QAAM,IAAEC,IAAKS,MAEzC9N,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,sCAAsC,GAC3E,EAGO,KAAA8L,kBAAqBC,IAClChO,KAAKwB,SAAS,CACVsD,SAAUkJ,EACVC,WAAYD,EAAWhO,KAAKjC,MAAMgF,QAAQmL,OAC5C,EAGW,KAAAC,sBAAwB,CACrCC,EACAC,KAEA,GAAIA,GAAcD,EAAqBE,gBACnC,OAAOF,EAAqBE,gBAAgBC,MAAKhB,GAAaA,EAAUvK,YAAcqL,GAG1E,EAIH,KAAAG,oBAAsBjM,UAAyD,IAAAkM,EAC5F,MAAM,QAAE1L,EAAO,WAAEQ,EAAU,QAAEX,GAAY5C,KAAKjC,OACxC,cACFyE,EACAC,SACIC,aAAa,UAAEC,KAEnBC,EAGE8L,EAA6C,QAApBD,EAAGzO,KAAKzB,MAAM6O,cAAM,IAAAqB,GAAW,QAAXA,EAAjBA,EAAmBlB,iBAAS,IAAAkB,OAAA,EAA5BA,EAA8BhB,QAAOhN,GAAMA,IAAOkO,EAAU3E,WAAW3F,aAEzGrE,KAAKwB,SAAS,CACV0L,QAAQ,EACRC,qBAAqB,EACrByB,gBAAgB,EAChBxB,OAAQ,CAAEC,SAAKpK,EAAWsK,UAAWmB,KAIzC1O,KAAK6M,mBAAmB8B,EAAU3E,aAAe2E,EAAU1E,SAE3D,MAAM4E,EAAmBtL,aAAU,EAAVA,EACnBiF,KAAI+E,IACK,CACHC,mBAAoBD,EAAUC,mBAC9BsB,eACI9O,KAAKmO,sBAAsBZ,EAAWvN,KAAK6M,mBAAmBU,EAAUC,sBACxED,EAAUuB,eACdC,oBAAqBxB,EAAUwB,wBAGtCtB,QAAOF,GACGA,GAAaA,EAAUuB,iBAGhCE,QAAuB7L,EAAAA,EAAAA,oBACzB,IAAIL,EAAAA,qBACAC,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,SAC5DL,EACAkM,OACA5L,EACAjD,KAAKjC,MAAM6E,QAAQH,SAEvBD,GAGJ,IAAKwM,EAID,YAHAhP,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MACzB,gDAAgDc,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,YAKpH,MAAMiM,EAAiB,IAAIxF,EAAAA,qCACvBuF,EAAehM,SACfL,EACAkM,EACA7O,KAAKjC,MAAM6E,QAAQH,SAEjByM,QAA0B1F,EAAAA,EAAAA,iCAAgCyF,EAAgBzM,GAEhF,IAAK0M,EAKD,OAJAlP,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,qEACnCjC,KAAKwB,SAAS,CACVoN,gBAAgB,IAKxB,MAAMO,EAAoB,IAAIC,EAAAA,6CAC1BrM,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,SAC5DL,GAIE0M,QAA6BC,EAAAA,EAAAA,4CAA2CH,EAAmB3M,GAC3F+M,EAAa,IAAIC,EAAAA,6BAA6BzM,EAAQC,SAAUL,GAChE8M,QAAqBC,EAAAA,EAAAA,4BAA2BH,EAAY/M,GAElE,IAAKiN,EAKD,OAJAzP,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,gEACnCjC,KAAKwB,SAAS,CACVoN,gBAAgB,IAKxB5O,KAAKwB,SAAS,CACVoN,gBAAgB,EAChBe,yBAA2BN,GAAwBA,EAAqB,SAAOpM,EAC/E2M,YAAaH,EAAaI,WAAa9M,EAAQmL,OAC/C3K,WAAY2L,EAAkBY,MAAK,CAACC,EAAGC,IAAMD,EAAEvC,mBAAqBwC,EAAExC,qBACtEzK,QAASiM,GACX,EAGW,KAAAiB,iBAAmB,CAACC,EAAuBtQ,KACxD,OAAQsQ,GACJ,KAAK,EACD,OAAOtQ,EAAUuQ,0BACrB,KAAK,EACD,OAAOvQ,EAAUwQ,kCACrB,KAAK,EACD,OAAOxQ,EAAUyQ,yBACrB,KAAK,EACD,OAAOzQ,EAAU0Q,0BACrB,QACI,MAAO,GAAG,EA7WlBtQ,KAAKzB,MAAQ,CACTuG,SAAU,EACV8K,UAAW7R,EAAMgF,QAAQmL,MACzBD,WAAYlQ,EAAMgF,QAAQmL,MAC1BnL,QAAShF,EAAMgF,QACfQ,WAAYxF,EAAMwF,WAAWuM,MAAK,CAACC,EAAGC,IAAMD,EAAEvC,mBAAqBwC,EAAExC,qBACrEX,mBAAoB,CAAC,EACrB+B,gBAAgB,EAChBzB,qBAAqB,EAE7B,CAEO9G,sBAAsBC,EAAuCC,GAChE,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,QAAUuI,CAInD,CAEOE,SAAM,IAAA+J,EAAAC,EAAAC,EAAAC,EAAAC,EACT,MACI/N,SACIJ,eACIoO,gBAAgB,YAAElO,IAEtBD,SAAS,aAAEoO,IAEfjR,WAAW,sBACPkR,EAAqB,8BACrBC,EAA6B,yBAC7BhF,EAAwB,yBACxBK,EAAwB,oBACxB4E,EAAmB,kCACnBC,EAAiC,gBACjCC,GACH,cACD5J,EAAa,oBACbG,GACAzH,KAAKjC,OACH,eAAE6Q,EAAc,QAAE7L,EAAO,SAAE+B,EAAQ,UAAE8K,EAAS,WAAE3B,EAAU,oBAAEd,EAAmB,OAAEC,GAAWpN,KAAKzB,MACjG4S,EAA0BnR,KAAKjC,MAAM0G,oCAAsC,0BAA4B,GAC7G,OACIzG,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAC8J,EAAAA,UAAS,KACL9H,KAAKjC,MAAM2J,WACZ1J,IAAAA,cAAA,OAAKC,UAAU,4CACXD,IAAAA,cAAA,OAAKC,UAAU,8DACXD,IAAAA,cAAA,OAAKC,UAAU,8DACXD,IAAAA,cAACoT,EAAAA,GAAK,CACFC,QAAqB,QAAdd,EAAExN,EAAQ8F,YAAI,IAAA0H,EAAAA,EAAI,QACzBK,eAAgB5Q,KAAKjC,MAAM6E,QAAQJ,cAAcoO,eACjDU,IAA6B,QAA1Bd,EAAEzN,aAAO,EAAPA,EAASwO,uBAAe,IAAAf,EAAAA,EAAI,GACjCgB,YAKK,QALMf,GACPgB,EAAAA,EAAAA,qBACI1O,aAAO,EAAPA,EAAS2O,OACThP,EAC8B,QADnBgO,EACX1Q,KAAKjC,MAAM6E,QAAQH,QAAQkP,WAAG,IAAAjB,GAAQ,QAARA,EAA9BA,EAAgC7L,cAAM,IAAA6L,OAAA,EAAtCA,EAAwCkB,yBAC3C,IAAAnB,EAAAA,EAAI,GAETxS,UAAU,YACVqJ,cAAeA,EACfuJ,aAAcA,EACdgB,oBAAoB,UAExB7T,IAAAA,cAAA,OAAKC,UAAU,iDACXD,IAAAA,cAAA,OAAKC,UAAU,yCAAyC8E,aAAO,EAAPA,EAAS2O,QAChEjK,EAAiC,QAAdkJ,EAAC5N,aAAO,EAAPA,EAAS8F,YAAI,IAAA8H,EAAAA,EAAI,IACtC3S,IAAAA,cAAA,OAAKC,UAAU,iDACV8S,EACA,IACA/Q,KAAK8R,aAAalC,IAEvB5R,IAAAA,cAAA,OAAKC,UAAU,0CACVgT,EACA,IACAlO,aAAO,EAAPA,EAASgC,wBAItB/G,IAAAA,cAAA,OAAKC,UAAU,wDAAwD+B,KAAK+R,wBAEhF/T,IAAAA,cAAA,OAAKC,UAAU,sBACXD,IAAAA,cAAA,WAAMgT,GACNhT,IAAAA,cAACuM,EAAqB,CAClB9J,GAAG,qDACHqK,aAAchG,EACdpE,SAAUV,KAAK+N,kBACf5B,uBAAuB,mCACvBX,IAAK,IACLO,yBAA0BA,EAC1BK,yBAA0BA,MAItCpO,IAAAA,cAAA,OAAKC,UAAW,kDAAkDkT,KAC7DD,EACA,IACAlR,KAAK8R,aAAa7D,KAG3BjQ,IAAAA,cAACgU,EAAAA,YAAW,KACP7E,GACGnP,IAAAA,cAAA,OACIC,UAAU,oEAAmE,YACnE,YACViC,KAAK,SAELlC,IAAAA,cAAA,sBAAkB,SACjBgC,KAAKiS,4BAGb7E,aAAM,EAANA,EAAQC,MACLrP,IAAAA,cAAA,OAAKC,UAAU,kEACXD,IAAAA,cAAA,QAAMC,UAAU,2BAA0B,cAAa,SACtDmP,EAAOC,KAGhBrP,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAWkU,IAAW,0DAA2D,CAAE,UAAWnS,KAAKzB,MAAM2O,SAAS,aACtG4D,EACZ3J,QAASnH,KAAKiN,sBACd3B,SAAUsD,GAETkC,IAKrB,CAEQmB,0BACJ,MAAMG,EAAyBpS,KAAKzB,MAAMgF,WACrCiF,KAAI+E,IAAY,IAAA8E,EACb,IAAIC,EAAmC,QAA5BD,EAAG9E,EAAUe,uBAAe,IAAA+D,GAEtC,QAFsCA,EAAzBA,EAA2B9D,MACrCvN,GAASA,EAAMgC,WAAahD,KAAK6M,mBAAmBU,EAAUC,6BACjE,IAAA6E,OAAA,EAFaA,EAEXE,MAIH,OAHqC,IAAjChF,EAAUC,qBACV8E,EAAU,QAAQA,KAEfA,CAAO,IAEjB7E,QAAOzM,GAASA,IAErB,OAAOhB,KAAKjC,MAAM6B,UAAU4S,0BACvBzO,QAAQ,UAAW/D,KAAKzB,MAAMuG,SAAST,YACvCN,QAAQ,yBAA0B,GAAG/D,KAAKzB,MAAMwE,QAAQ8F,SAAS7B,OAAOyL,OAAOL,GAAwBM,KAAK,QACrH,CAEQX,sBACJ,MAAM,WAAExO,GAAevD,KAAKzB,OACtB,UAAEqB,GAAcI,KAAKjC,MAE3B,OAAOwF,aAAU,EAAVA,EAAYiF,KAAK+E,IAAmC,IAAAoF,EACvD,MAAM,gBAAErE,EAAe,mBAAEd,GAAuBD,EAK1CR,EAAgB/M,KAAKiQ,iBAAiBzC,EAAoB5N,GAC1DwK,EAAqCkE,EAAkBA,EAAgB9F,KALtDxH,IAA4B,CAC/CP,GAAIO,EAAMgC,SACVhC,MAAOA,EAAMuR,OAAS,OAG4F,GAGtH,OAFAnI,EAAawI,QAAQ,CAAEnS,GAAI,EAAGO,MAAO,YAAY+L,MAG7C/O,IAAAA,cAAA,OAAK2K,IAAK6E,GACNxP,IAAAA,cAAA,WAAM+O,IACY,QAAjB4F,EAAA3S,KAAKzB,MAAM6O,cAAM,IAAAuF,GAAW,QAAXA,EAAjBA,EAAmBpF,iBAAS,IAAAoF,OAAA,EAA5BA,EAA8BE,SAASrF,EAAmBnJ,cACvDrG,IAAAA,cAAC8U,EAAAA,MAAK,CAAC1R,MAAM,SAAS2R,WAAS,eAAa/S,KAAK8M,oBAAoBC,IACjE/O,IAAAA,cAAA,OAAKC,UAAU,oBAAmB,cAAa,QAC3CD,IAAAA,cAAA,QAAMC,UAAU,6BAChBD,IAAAA,cAAA,YAAOgC,KAAK8M,oBAAoBC,MAI5C/O,IAAAA,cAAC4L,EAAQ,CACLI,WAAYwD,EACZnD,aAAcrK,KAAKiQ,iBAAiBzC,EAAoB5N,GACxDwK,aAAcA,EACd1J,SAAUV,KAAKwO,sBAEjB,GAGlB,CA2LQsD,aAAakB,GACjB,MACIpQ,SACIqQ,kBAAkB,eACdC,EAAc,aAGdC,KAGRnT,KAAKjC,MAET,OAAOmV,EAAeF,EAAMI,QAAQ,GAAID,EAC5C,OCpaG,MAAMpR,EAAehE,IACxB,MAAM,SACFW,EACAkE,SACIJ,eACIoO,gBAAgB,YAAElO,IAEtBD,SAAS,aAAEoO,GACXoC,kBAAkB,eACdC,EAAc,aAGdC,IAEP,aACDvL,EAAY,oBACZH,EAAmB,sBACnBI,EACAjI,WAAW,wBAAEyT,GAAyB,cACtC/L,GACAvJ,EAEJ,OACIC,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,KAAGC,UAAU,gDAA+C,YAAW,aAClE4J,KAEJ9J,EAAM2J,WACP1J,IAAAA,cAAA,OAAKC,UAAU,0CACVS,EAAS8J,KAAI,CAACzF,EAA8BuQ,KAAiB,IAAAC,EAAA9C,EAAA+C,EAC1D,MAAM,MAAEtF,EAAK,OAAEwD,EAAM,KAAE7I,EAAI,gBAAE0I,GAAoBxO,EAC3CiQ,EAAQE,EAAehF,EAAMkF,QAAQ,GAAID,GACzCM,EAAyE,QAAvDF,GAAGG,EAAAA,EAAAA,kBAAiBnC,QAAAA,EAAmB,GAAI7O,UAAY,IAAA6Q,EAAAA,EAAI,GAC7EI,EAA2G,QAAhGlD,GAAGgB,EAAAA,EAAAA,qBAAoBC,EAAQhP,EAAsC,QAA3B8Q,EAAEzV,EAAM6E,QAAQH,QAAQkP,WAAG,IAAA6B,GAAQ,QAARA,EAAzBA,EAA2B3O,cAAM,IAAA2O,OAAA,EAAjCA,EAAmC5B,yBAAiB,IAAAnB,EAAAA,EAAI,GAErH,OACIzS,IAAAA,cAAA,OAAK2K,IAAK,WAAW2K,IAASrV,UAAU,qCACpCD,IAAAA,cAAA,OAAKC,UAAU,8DACXD,IAAAA,cAACoT,EAAAA,GAAK,CACFC,QAASxI,QAAAA,EAAQ,QACjB+H,eAAgB7S,EAAM6E,QAAQJ,cAAcoO,eAC5CU,IAAKmC,EACLjC,YAAamC,EACb1V,UAAU,YACV4S,aAAcA,EACdvJ,cAAeA,EACfuK,oBAAoB,UAExB7T,IAAAA,cAAA,OAAKC,UAAU,gDAA+C,YAAW,UACrED,IAAAA,cAAA,OAAKC,UAAU,yCAAyCyT,GACvDjK,EAAoBoB,QAAAA,EAAQ,MAGrC7K,IAAAA,cAAA,OAAKC,UAAU,sDACXD,IAAAA,cAAA,YAAOgV,GACPhV,IAAAA,cAAC4V,EAAmB,CAAC7Q,QAASA,EAAS8Q,WAAYR,EAAyBzL,aAAcA,KAE5F,KAInB,EAULgM,EAAuB7V,IACzB,MAAOmP,EAAQ4G,IAAWC,EAAAA,EAAAA,WAAS,IAC7B,QAAEhR,EAAO,WAAE8Q,EAAU,aAAEjM,GAAiB7J,EACxCiW,EAAkBhW,IAAAA,aAAkBuE,UACtCuR,GAAS5G,SACHtF,EAAa7E,GACnB+Q,GAAS5G,EAAO,GACjB,CAACtF,EAAcsF,EAAQnK,IAE1B,OACI/E,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAWkU,IAAW,mDAAoD,CAAE,UAAWjF,IAAS,aACpF,GAAGnK,EAAQ8F,QAASgL,IAChC1M,QAAS6M,GAERH,EACI,wBCrDjB,MAAM02B,EAA4BxsC,GAAsC,KACpEysC,EAAqBzsC,EAAM,EAGlB0nB,EAA4B1nB,IACrC,MAAM,UAAE6B,EAAS,oCAAE6E,GAAwC1G,GACrD,yBAAE6mB,GAA6BhlB,EAErC,MAAO,CACHopB,iBAAkByhB,EAAiC1sC,GACnDkrB,gBAAiBxkB,GAAuCimC,EAA+B3sC,GACvFmrB,gBAAiBzkB,GACbzG,EAAAA,cAACkU,EAAAA,OAAM,CAACjU,UAAU,uDAAuDkJ,QAASojC,EAAyBxsC,IACtG6mB,GAGTuE,mBAAoB1kB,GAAuCzG,EAAAA,cAAC2sC,EAAkB3jC,OAAAC,OAAA,GAAKlJ,IACtF,EAGCysC,EAAwBzsC,IAC1B,MACIiX,MAAM,cAAE+B,GAAe,SACvBoO,GACApnB,GACE,iBAAEsnB,GAAqBF,EAEzBE,GACAA,EAAiBtO,EAAcC,YAAYC,GAAI,EAIjDwzB,EAAoC1sC,IACtC,MACIiX,MAAM,cAAE+B,GAAe,SACvB8B,EAAQ,GACRpY,EAAE,QACFmC,EAAO,iBACP8C,EAAgB,UAChB9F,EAAS,oCACT6E,GACA1G,GACE,2BACF2mB,EAA0B,sBAC1BG,EAAqB,wBACrBC,EAAuB,wBACvBC,EAAuB,wBACvBC,EAAuB,0BACvBC,EAAyB,gCACzBO,GACA5lB,EAEEkZ,EAAgB,CAClB+L,wBACAC,0BACAC,0BACAC,0BACAC,4BACAO,mCAGJ,OACIxnB,EAAAA,cAAC4qC,EAAAA,gCAA+B,CAC5BhmC,QAASA,EACTnC,GAAIA,EACJoY,SAAUA,EACV7D,KAAM,CAAE+B,iBACR9Y,UAAU,GACV4qC,cAAenkB,EACf5L,cAAeA,EACfpT,iBAAkBA,EAClBjB,oCAAqCA,GACvC,EAIJimC,EAAkC3sC,IACpC,MAAM,iCAAEunB,EAAgC,UAAE1lB,EAAS,QAAEgD,EAAO,SAAEuiB,GAAapnB,EAC3E,OACIC,EAAAA,cAAC4sC,EAAAA,6BAA4B,CACzBxlB,iBAAkBD,EAASC,iBAC3BnnB,UAAU,iCACV2E,QAASA,EACTnC,GAAI1C,EAAM0C,GACVuU,KAAM,CAAE+B,cAAehZ,EAAMiX,KAAK+B,cAAcC,aAChD6B,SAAU9a,EAAM8a,SAChByM,iCAAkCA,EAClCY,8BAA+BtmB,EAAU+kB,yBACzClgB,qCAAmC,GACrC,EAIV,IAAIomC,EACG,MAAMF,EAA4D5sC,IACrE,MAAO+sC,EAAqCC,IAA0Ch3B,EAAAA,EAAAA,WAAS,IACxFi3B,EAA+Bnc,GAAkC7wB,EAAAA,UAAe,GAYjFitC,EAAoBA,KACtBF,GAAwCD,EAAoC,GAG5E91B,MAAM,cAAE+B,GAAe,UACvBnX,EAAS,iCACT0lB,EAAgC,QAChC1iB,GACA7E,EAEEE,EAAY,+BAEZitC,EAAmBltC,EAAAA,YACnBmtC,EACFntC,EAAAA,cAACgxB,EAAAA,wBAAuB,CACpBoc,sBAAuBr0B,EAAcC,YACrCiY,gBAAc,EACdhxB,UAAU,iCACV+a,UAAWgyB,EACX9b,aAAcL,EACdjsB,QAASA,EACTnC,GAAI1C,EAAM0C,GACVuU,KAAMjX,EAAMiX,KACZ+b,kBAAmBhzB,EAAMiX,KAAK+B,cAAcC,YAAYnO,KACxDgQ,SAAU9a,EAAM8a,SAChBC,cAAewM,EACf8J,SApC0Bic,KAAK,IAAAC,EACnC1oC,EAAQQ,UAAU0a,MAAM,oCACJ,QAApBwtB,EAAAT,SAAoB,IAAAS,GAApBA,EAAsBxlC,OAAO,EAmCzBupB,UAAWtxB,EAAMonB,SAASC,mBAG5BmmB,EAAiC,iCAAiCC,EAAAA,OAAOC,KAAKC,iBAEpF,OACI1tC,EAAAA,cAAA,OAAKC,UAAW,GAAGA,eACdktC,EACDntC,EAAAA,cAACkU,EAAAA,OAAM,CACHjU,UACI6sC,EACM,GAAG7sC,wCACH,GAAGA,0CAEbkJ,QAAS8jC,EACTU,SAAUT,EAAgB,gBACZ,OAAM,gBACLJ,EACfrqC,GAAI8qC,GAEJvtC,EAAAA,cAAA,QAAMC,UAAW,GAAGA,4CAAqD,YAE7ED,EAAAA,cAAC4tC,EAAAA,QAAO,mBACaL,EACjBttC,UAAW,GAAGA,+CACdO,OAAQssC,EACRrhB,UAAU,SACVpnB,OAAQ6oC,EACRrkC,OAAQokC,EACR/qC,KAAK,UAAS,eACA4qC,GAEd9sC,EAAAA,cAACkU,EAAAA,OAAM,CAACjU,UAAW,GAAGA,qDAA8DkJ,QAhEnE9F,IACzBwpC,EAAuBxpC,EAAMgB,OAC7BwsB,GAA+B,GAC/BxtB,EAAMC,gBAAgB,GA8DT1B,EAAU+kB,0BAGf3mB,EAAAA,cAACkU,EAAAA,OAAM,CACH/K,QAASojC,EAAyBxsC,GAClCE,UAAW,GAAGA,qDACdiC,KAAK,UAEJ,WAGP,EC/IR2rC,EAA4B9tC,IAC9B,MAAM,kBAAEkpB,EAAiB,gBAAEjR,EAAe,SAAElR,EAAQ,SAAEqgB,GAAapnB,GAC7D,OAAE0d,EAAM,UAAEvS,GAAc8M,GACxB,WAAEsR,EAAU,aAAEC,GAAiBpC,EAErC,MAAO,CACH2mB,YAAaA,IAAOzqC,IAChBoa,GACIwL,EAAkBvP,aAClB4P,EAAWL,EAAkBvP,YAAYC,eAAgB7S,EAAU2W,EAAQvS,EAAU,EAE7F6iC,cAAeA,IAAO1qC,GAAyCoa,GAAU8L,EAAaxpB,EAAMkpB,mBAC/F,EAQC+kB,EAASjuC,IACX,MAAM,mBAAE2pB,EAAkB,iCAAED,EAAgC,eAAElB,EAAc,uBAAEC,GAA2BzoB,EAAM6B,WACxGqsC,EAAYC,IAAiBn4B,EAAAA,EAAAA,WAAS,GAOvClN,EAAS7I,IAAAA,aAAkB,KAC7BkuC,GAAeD,EAAW,GAC3B,CAACA,IAEJ,OACIjuC,IAAAA,cAAA,OAAKC,UAAW,gCACZD,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAW,6BAAyC,aACxCsoB,EAAc,YACfxoB,EAAMuV,MACjBnM,QAASN,IAEZolC,GACGjuC,IAAAA,cAAA,OAAKC,UAAW,uBACZD,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAU,2BACVkJ,QApBU9F,IAC1BtD,EAAMukB,uBAAuBvkB,EAAM,EAoBnB+N,MAAO0a,EAAsB,aACjBA,GAAsB,QAIrC2lB,EACGpuC,EAAMiiB,SACNjiB,EAAMquC,sBACN3kB,EACAokB,EAAyB9tC,GAAOguC,iBAEnCI,EACGpuC,EAAMiiB,SACNjiB,EAAMsuC,mBACN3kB,EACAmkB,EAAyB9tC,GAAO+tC,gBAI1C,EAIRK,EAAkBA,CACpBnsB,EACA/hB,EACA4V,EACAjM,IAEA5J,IAAAA,cAACkU,EAAAA,OAAM,cAAa2B,EAAY5V,UAAWA,EAAWkJ,QAASS,EAAckE,MAAO+H,GAC/EmM,EAAWnM,EAAa,IAI3By4B,EAAyBA,CAC3BruC,EACA4V,EACAjM,IAEA5J,IAAAA,cAACkU,EAAAA,OAAM,cAAa2B,EAAY5V,UAAWA,EAAWkJ,QAASS,EAAckE,MAAO+H,GAC/EA,GASH04B,EAAsBA,CAACtlB,EAAgDtiB,IACzEtD,IAEA4lB,EAAkBlR,WAAakR,EAAkBlR,UAEjDpR,EAAMwgB,SAAS5C,SAAS0E,EAAmB5lB,EAAMgB,OAAOmqC,QAAQ,EAGvD7kB,EAAyBhjB,IAAsE,IAAA2kC,EACxG,MAAM,kBACFriB,EAAiB,gBACjBjR,EAAe,MACfhD,EAAK,QACLpQ,EAAO,cACP0E,EAAa,SACbxC,EAAQ,UACRlF,EAAS,SACTogB,EAAQ,oCACRvb,GACAE,EACE5B,EAAUkkB,EAAkBvP,aAC5B,OAAE+D,EAAM,cAAEgxB,GAAkBz2B,GAC5B,iCAAEyR,EAAgC,mBAAEC,EAAkB,iBAAEpB,GAAqB1mB,EACnF,IAAKmD,EACD,OAAO,KAGX,MAAM,OAAE2O,EAAM,gBAAEH,GAAoBxO,EAAQ4U,eACtC+0B,GAAgBj7B,EAAAA,EAAAA,qBAClBC,EACA9O,EAAQJ,cAAcoO,eAAelO,YAClB,QAD6B4mC,EAChD1mC,EAAQH,QAAQkP,WAAG,IAAA23B,GAAQ,QAARA,EAAnBA,EAAqBzkC,cAAM,IAAAykC,OAAA,EAA3BA,EAA6B13B,kBAE3By6B,EAAqB1nC,EAAMqb,SAAW,0BAA4B,mDAClEosB,EAAwBznC,EAAMqb,SAAW,6BAA+B,sDAE9E,MAAO,CACHA,WACAvb,oCAAqCA,EACrCujB,WACIhqB,IAAAA,cAAA,SAAOC,UAAU,sBACbD,IAAAA,cAAA,sBACgBsoB,EACZroB,UAAU,iBACV4C,KAAK,WACL2rC,QAASvlB,EAAkBlR,UAAS,eACtBkR,EAAkBlR,UAChCrV,SAAU6rC,EAAoBtlB,EAAmBtiB,KAErD3G,IAAAA,cAAA,QAAMC,UAAU,eAGxB0K,IAAK8S,EACLwM,mBAAoBxjB,GAAuCkoC,EAAqBhoC,GAChFie,aAAcgqB,EACV,8CACAhqC,EACAG,EAAQ4U,eAAe9O,KACvB0I,EACAm7B,EACAplC,GAEJ8gB,YAAaykB,GAAkBloC,GAC/B8K,aAAcuD,GAAS85B,EAAanoC,GACpC2e,cAAevgB,GACX/E,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,OAAKC,UAAU,gDAAgDyT,GAC9C,SAAhB/M,EAAM1C,MACHjE,IAAAA,cAAA,OAAKC,UAAU,sDAAsD8uC,GAAoBpoC,SAEzF1B,GAIZolB,qBAAsBrV,EAClBhV,IAAAA,cAAA,OAAKC,UAAU,yDAAyDwuC,GAAiBz5B,EAAMy5B,oBAE/FxpC,EAEJgT,cAAewF,EACf0M,cACK1jB,GACD0nC,EACIxnC,EAAMqb,SACNosB,EACA3kB,EACAokB,EAAyBlnC,GAAOonC,iBAExCzjB,oBAAqBtqB,IAAAA,cAAA,WAAMgvC,EAAkBroC,EAAO8W,IACpDiI,gBAAiB5e,EACjBojB,gBACKzjB,GACD0nC,EAAgBxnC,EAAMqb,SAAUqsB,EAAoB3kB,EAAoBmkB,EAAyBlnC,GAAOmnC,eAC5GtjB,mBACKxI,GAAYvb,EACTzG,IAAAA,cAACivC,EAAiBjmC,OAAAC,OAAA,GAAKtC,EAAK,CAAE0nC,mBAAoBA,EAAoBD,sBAAuBA,UAE7FnpC,EAERslB,MAAOvqB,IAAAA,cAACguC,EAAKhlC,OAAAC,OAAA,GAAKtC,EAAK,CAAE0nC,mBAAoBA,EAAoBD,sBAAuBA,KACxF9gC,SAAU3G,EAAMwiB,cACnB,EAGC8lB,EAAqBlvC,IACvB,MAAOmvC,EAAaC,IAAkBp5B,EAAAA,EAAAA,WAAS,GACzClN,EAAS7I,IAAAA,aAAkB,KAC7BmvC,GAAgBD,EAAY,GAC7B,CAACA,IAEEjvC,EAAY,mDACZmvC,EAA4B,GAAGnvC,uBACrC,OACID,IAAAA,cAAA,OAAKC,UAAWA,GACZD,IAAAA,cAACkU,EAAAA,OAAM,CAACjU,UAAW,GAAGA,YAAmB,aAAc,GAAIkJ,QAASN,IACnEqmC,GACGlvC,IAAAA,cAAA,OAAKC,UAAWmvC,GACXd,EACG,qDACA,aACAT,EAAyB9tC,GAAO+tC,eAEnCQ,EACG,wDACA,cACAT,EAAyB9tC,GAAOguC,kBAI1C,EAIDtxB,EAA+B9V,IAA2E,IAAA0oC,EACnH,MAAM,kBAAEpmB,EAAiB,gBAAEjR,EAAe,MAAEhD,EAAK,QAAEpQ,EAAO,cAAE0E,EAAa,oCAAE7C,GAAwCE,EAC7G5B,EAAUkkB,EAAkBvP,aAC5B,OAAE+D,EAAM,cAAEgxB,GAAkBz2B,EAClC,IAAKjT,EACD,OAEJ,MAAM,OAAE2O,EAAM,gBAAEH,GAAoBxO,EAAQ4U,eACtC+0B,GAAgBj7B,EAAAA,EAAAA,qBAClBC,EACA9O,EAAQJ,cAAcoO,eAAelO,YAClB,QAD6B2qC,EAChDzqC,EAAQH,QAAQkP,WAAG,IAAA07B,GAAQ,QAARA,EAAnBA,EAAqBxoC,cAAM,IAAAwoC,OAAA,EAA3BA,EAA6Bz7B,kBAGjC,MAAO,CACHqW,mBAAoBxjB,GAAuCkoC,EAAqBhoC,GAChFie,aAAcgqB,EACV,YACAhqC,EACAG,EAAQ4U,eAAe9O,KACvB0I,EACAm7B,EACAplC,GAEJ8gB,YAAaykB,GAAkBloC,GAC/B8K,aAAcuD,GAAS85B,EAAanoC,GACpC2e,cAAe5R,EACf2W,qBAAsBokB,IAAiBz5B,aAAK,EAALA,EAAOy5B,eAC9CnkB,oBAAqB0kB,EAAkBroC,EAAO8W,GACjD,EAeC6xB,EAAkBA,CACpB9lB,EACA/P,EACA1Z,IACEiQ,IACEwZ,GACAA,EAAiB/P,EAASzJ,EAAUjQ,EAAO,EAI7CivC,EAAoBA,CAACjvC,EAAgC0Z,KACvD,MAAM,SAAE0N,EAAQ,UAAEvlB,EAAS,SAAEkF,GAAa/G,GACpC,iBAAEypB,GAAqBrC,EAC7B,OACInnB,IAAAA,cAACuM,EAAqB,CAClBO,aAAchG,EACdpE,SAAU4sC,EAAgB9lB,EAAkB/P,EAAS1Z,GACrDyN,IAAK,UACLW,uBAAwBvM,EAAUuM,uBAClCC,yBAA0BxM,EAAUwM,yBACpCL,yBAA0BnM,EAAUmM,yBACpCT,SAAUvN,EAAM+d,6BAClB,EAIG8wB,EAAsBA,CAC/B3uC,EACA2E,EACAqd,EACAstB,EACAb,EACAplC,KACoB,IAAAkmC,EAAAC,EAUpB,OACIzvC,IAAAA,cAACoT,EAAAA,GAAK,CACFR,eAAgBhO,SAAsB,QAAf4qC,EAAP5qC,EAASJ,qBAAa,IAAAgrC,OAAA,EAAtBA,EAAwB58B,eACxC3S,UAAWA,EACXoT,QAAS4O,EACTnU,MAAOmU,EACP3O,IAAKi8B,EACL/7B,YAAak7B,EACb77B,aAAcjO,SAAgB,QAAT6qC,EAAP7qC,EAASH,eAAO,IAAAgrC,OAAA,EAAhBA,EAAkB58B,aAChCvJ,cAAeA,GAlBsB,CACzCrI,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCE,GAAI,CAAEJ,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,IAEvCG,UAAU,GAaNqS,oBAAoB,QACpB7F,SAAU,GACZ,EAIG2gC,EAAwB5uC,IACjC,MAAM2G,EAAY3G,EAAMiY,gBAAgB9M,UAGxC,IAFAX,EAAAA,EAAAA,mBAAkB7D,IAEb3G,EAAM6E,QAAQH,QAAQwb,KAAKolB,QAAU3+B,IAAcpE,EAAAA,gBAAgBC,YAAYxC,EAAMsK,UACtF,OAAO,KAGX,MAAMi7B,EAAUvlC,EAAMsK,SAASkG,MAAKjE,GAAQA,EAAKtH,WAAa0B,IAE9D,OAAK4+B,GAAYA,EAAQz6B,KAIlB7K,IAAAA,cAAA,OAAKC,UAAU,gCAAgCqlC,EAAQz6B,MAHnD,IAG8D,EAGvEikC,EAAgB/uC,IAClB,MAAM,MAAEiV,EAAK,QAAEpQ,EAAO,SAAEwkB,EAAQ,eAAEC,EAAc,UAAEznB,GAAc7B,EAEhE,OAAIiV,EAEIhV,IAAAA,cAACmmC,EAAAA,eAAc,CACX1jC,GAAI2mB,EACJvO,SAAUwO,EACVrS,KAAM,CAAEhC,SACR/U,UAAU,8CACVsmB,cAAe3kB,EAAU2kB,cACzBC,kBAAmB5kB,EAAU4kB,kBAC7BC,iBAAkB7kB,EAAU6kB,iBAC5B7hB,QAASA,IAId,IAAI,EAmBTmqC,GAAuBhvC,IACzB,MAAM,MAAEkE,EAAK,UAAErC,GAAc7B,EAE7B,IAAKkE,EACD,MAAO,GASX,MANsB,CAClByrC,IAAK9tC,EAAUknB,8BACf6mB,WAAY/tC,EAAUinB,+BACtB+mB,KAAM,IAGW3rC,EAAM,EAGlB4qC,GAAqB9uC,IAA+D,IAAA8vC,EAC7F,MAAM,kBAAE5mB,EAAiB,WAAErM,GAAe7c,EACpCkC,EAAoC,QAAhC4tC,EAAG5mB,EAAkBvP,mBAAW,IAAAm2B,OAAA,EAA7BA,EAA+Bl2B,eAAe9O,KAErDtF,EApCwBxF,KAC9B,MAAM,kBAAEkpB,GAAsBlpB,EAE9B,OAAKkpB,EAAkBvP,aAAgBuP,EAAkBvP,YAAYC,eAAegsB,WAI7E1c,EAAkBvP,YAAYC,eAAegsB,WAAWn7B,KAAI+E,IAC/D,GAAKA,EAAUuB,gBAAmBvB,EAAUuB,eAAeyD,MAI3D,OAAOhF,EAAUuB,eAAeyD,KAAK,IAR9B,EAST,EAuBiBu7B,CAAyB/vC,GAC5C,IAAKkpB,EAAkBvP,YACnB,MAAO,GAGX,MAAM6L,EAAc3I,EAChB5c,IAAAA,cAAA,KAAGC,UAAU,kDAAkDoa,KAAMuC,GAChE3a,GAGLjC,IAAAA,cAAA,OAAKC,UAAU,mDAAmDgC,GAGhE8tC,EAAyBxqC,EAAWmP,KAAK,MAE/C,OACI1U,IAAAA,cAAA,OAAKC,UAAU,8CACXD,IAAAA,cAAA,OAAKC,UAAU,mDAAmDslB,GAClEvlB,IAAAA,cAAA,OAAKC,UAAU,wDAAwD8vC,GACrE,ECrfDhtB,GAAmFyoB,IAAmC,IAAlC,UAAEvrC,EAAS,UAAE+iB,EAAS,KAAEd,GAAMspB,EAC3H,OAAQxoB,GACJ,IAAK,QACD,OAAOhjB,EAAAA,cAAA,KAAGC,UAAWkU,IAAW,yCAA0ClU,IAAaiiB,GAC3F,IAAK,SACD,OAAOliB,EAAAA,cAAA,KAAGC,UAAWkU,IAAW,0CAA2ClU,IAAaiiB,GAE5F,QACI,OAAOliB,EAAAA,cAAA,KAAGC,UAAU,4CAA4CiiB,GAAU,iOCgB/E,MAAM0D,WAAkC5lB,EAAAA,cAA/CK,cAAA,oBACW,KAAAE,MAAyC,CAC5CwX,WAAW,GAGE,KAAAi4B,mBAA6B,WAYvC,KAAAC,YAAc,IAAO5sC,IACxBrB,KAAKwB,SACD,CACIuU,UAAW/V,KAAKzB,MAAMwX,YAE1B,KACI/V,KAAKjC,MAAM6J,cAAc5H,KAAKzB,MAAMwX,UAAU,GAErD,CAkCT,CApDWvB,gCACHzW,EACAQ,GAEA,MAAM2vC,EAAenwC,EAAM4X,MAAMlI,QAAOqI,IAASA,EAAKC,YAAWlU,OACjE,IAAI0E,yWAASK,CAAA,GAAQrI,GAErB,OADAgI,EAAY,CAAEwP,UAA4B,IAAjBm4B,GAClB3nC,CACX,CAaOC,SACH,OACIxI,EAAAA,cAAA,aACIA,EAAAA,cAAA,MAAIC,UAAW,GAAG+B,KAAKguC,mCACnBhwC,EAAAA,cAAA,MAAImwC,MAAM,MAAK,aAAanuC,KAAKjC,MAAMolB,mBACnCnlB,EAAAA,cAAA,SAAOC,UAAU,sBACbD,EAAAA,cAAA,sBACgBgC,KAAKjC,MAAMolB,kBACvBllB,UAAU,iBACV4C,KAAK,WAAU,eACDb,KAAKzB,MAAMwX,UACzBy2B,QAASxsC,KAAKzB,MAAMwX,UACpBrV,SAAUV,KAAKiuC,gBAEnBjwC,EAAAA,cAAA,QAAMC,UAAU,iBAGtB+B,KAAKjC,MAAMiiB,UAAYhgB,KAAKjC,MAAM0G,oCAChCzG,EAAAA,cAAA,MAAImwC,MAAM,OAAOnuC,KAAKjC,MAAMqlB,wBAC5B,KACFpjB,KAAKjC,MAAMiiB,SAA4D,KAAjDhiB,EAAAA,cAAA,MAAImwC,MAAM,OAAOnuC,KAAKjC,MAAM6kB,cACpD5kB,EAAAA,cAAA,MAAImwC,MAAM,OAAOnuC,KAAKjC,MAAMulB,eAC1BtjB,KAAKjC,MAAMiiB,SAA2D,KAAhDhiB,EAAAA,cAAA,MAAImwC,MAAM,OAAOnuC,KAAKjC,MAAMwlB,aAClDvjB,KAAKjC,MAAMiiB,SAAgE,KAArDhiB,EAAAA,cAAA,MAAImwC,MAAM,OAAOnuC,KAAKjC,MAAMylB,kBAClDxjB,KAAKjC,MAAMiiB,SAA0D,KAA/ChiB,EAAAA,cAAA,MAAImwC,MAAM,OAAOnuC,KAAKjC,MAAM0lB,YAClDzjB,KAAKjC,MAAMiiB,SAA+D,KAApDhiB,EAAAA,cAAA,MAAImwC,MAAM,OAAOnuC,KAAKjC,MAAM2lB,iBAClD1jB,KAAKjC,MAAMiiB,SAA8DhiB,EAAAA,cAAA,WAAnDA,EAAAA,cAAA,MAAImwC,MAAM,OAAOnuC,KAAKjC,MAAM4lB,iBAIpE,y3BC6BJ,IAAMzO,EAAN,cAAiClX,EAAAA,UAY7BK,YAAYN,EAAgDQ,GACxDD,MAAMP,GAqRO,KAAAoX,yCAA2C,KACxD,IAAI1Q,GAAsC,EACP,IAAD2Q,EAA9BpV,KAAKjC,MAAMiX,KAAKK,eAChB5Q,GACuC,QAAnC2Q,EAAApV,KAAKjC,MAAMiX,KAAKK,aAAazT,cAAM,IAAAwT,GAElC,QAFkCA,EAAnCA,EAAqC7G,MACjC+G,GAA4B,2DAAjBA,EAAQzM,cACtB,IAAAuM,OAAA,EAFDA,EAEGG,aAAa,GAExB,OAAO9Q,CAAmC,EAG7B,KAAA+Q,mBAAqB,KAClC,MAAM,QAAE5S,EAAO,UAAEhD,GAAcI,KAAKjC,OAC9B,UAAEqF,GAAcR,GAChB,6BAAE6S,EAA4B,6BAAEC,GAAiC9V,EACjE+V,EAAQ3V,KAAKzB,MAAMqX,iBACnBC,EAAmBF,GAASA,EAAM9T,QAAU8T,EAAMlI,QAAOqI,GAAQA,EAAKC,YAAWvN,KAAIsN,GAAQA,EAAKE,kBAExG,GAAIH,GAAoBA,EAAiBhU,OAAS,EAAG,CACjD,MAAMoU,EAAgBJ,EAAiB,GAAGlI,cAEpCuI,EAAoC,KAC1CC,EAAAA,EAAAA,6BAA4B,CAAE7M,cAAe1G,EAAQJ,eAAiByT,EAAgBJ,GACjFlU,MAAKY,UACFvC,KAAKwB,SAAS,CACV4U,YAAaV,EACbW,gBAAiB,UACjBC,aAAc,eACd9X,QAAQ,UAGN,IAAI6E,SAAQC,GAAWiT,WAAWjT,EAAS4S,KACjDhR,OAAOC,SAASC,QAAQ,IAE3BpD,OAAMC,IACHmB,EAAUoT,QAAQ,4EAClBpT,EAAUnB,MAAMA,GAChBjC,KAAKwB,SAAS,CACV4U,YAAaX,EACbY,gBAAiB,UACjBC,aAAc,eACd9X,QAAQ,GACV,GACH,GAIE,KAAAiY,yBAA2B,KAAa,IAAAC,EACrD,IAAIC,GAAMC,EAAAA,EAAAA,IAAW,gBAAiB5W,KAAKjC,MAAM6E,QAAQJ,gBAAkB,GAE3E,OADAmU,EAAMA,EAAI9D,SAAS,KAAO8D,EAAIE,OAAO,EAAGF,EAAIG,QAAQ,MAAQH,EAC3B,QAAjCD,EAAI1W,KAAKjC,MAAMiX,KAAK+B,qBAAa,IAAAL,GAAQ,QAARA,EAA7BA,EAA+B9U,cAAM,IAAA8U,GAArCA,EAAuCM,YAAYC,GAC5C,GAAGN,QAAU3W,KAAKjC,MAAMiX,KAAK+B,cAAcnV,OAAOoV,YAAYC,KAElE,EAAE,EAGI,KAAAC,qBAAuB3U,UACpC,MACMkS,EADQzU,KAAKzB,MAAMqX,iBACGnI,QAAOqI,GAAQA,EAAKC,YAChD,GAAItB,EAAc5S,OAAS,EACvB,IAAK,MAAMsV,KAAe1C,EAAe,CAAC,IAAD2C,EAAAC,EAAAC,EAAAC,EAAAC,EACrC,MAAMC,EAAwD,QAAjDL,EAA0B,QAA1BC,EAAGF,EAAYO,mBAAW,IAAAL,OAAA,EAAvBA,EAAyBM,eAAejG,cAAM,IAAA0F,EAAAA,EAAI,GAC5DrU,EAAiD,QAA1CuU,EAA0B,QAA1BC,EAAGJ,EAAYO,mBAAW,IAAAH,OAAA,EAAvBA,EAAyBI,sBAAc,IAAAL,EAAAA,EAAI,CACvDtU,SAAU,EACV4U,iBAAkB,EAClB/H,UAAW,EACX3B,MAAO,EACP2J,cAAe,GAEb/S,EAA+C,QAAvC0S,EAAGL,EAAYnB,gBAAgB8B,gBAAQ,IAAAN,EAAAA,EAAI,EACzD,GAAIxX,KAAKmV,2CAA4C,CACjD,MAAMzQ,EAAYyS,EAAYnB,gBAAgB9M,gBACxClJ,KAAK+X,cAAchV,EAAS+B,EAAU2S,EAAS/S,EAAW,YAE1D1E,KAAK+X,cAAchV,EAAS+B,EAAU2S,EAAQ,CAIhE,OAAOpU,QAAQC,aAAQ,EAAO,EA2DjB,KAAA0U,eAAkBC,GAC3BC,EAAAA,GAASC,UACF,IAAIC,IAAIlT,OAAOC,SAASkT,MAE5B,IAAID,IAAIH,EAAWtB,IAAI2B,WAAWD,MAM5B,KAAAE,eAAiB,KAC9BvY,KAAKwB,SAAS,CACViW,QAASzX,KAAKzB,MAAMkZ,QACpBrB,YAAapW,KAAKzB,MAAM6X,YACxBC,gBAAiBrW,KAAKzB,MAAM8X,gBAC5BC,aAActW,KAAKzB,MAAM+X,aACzB9X,OAAQwB,KAAKzB,MAAMC,OACnBga,gCAAgC,GAClC,EAGW,KAAAC,6BAA+B,KAA6B,IAAAC,EACzE,IAAK1Y,KAAKzB,MAAMoa,0BACZ,OAAO,KAEX,MAAMlU,GAC0B,QAA5BiU,EAAA1Y,KAAKjC,MAAMiX,KAAKK,oBAAY,IAAAqD,GAAQ,QAARA,EAA5BA,EAA8B9W,cAAM,IAAA8W,GAA4F,QAA5FA,EAApCA,EAAsCnK,MAAK+G,GAA4B,2DAAjBA,EAAQzM,cAAkE,IAAA6P,OAAA,EAAhIA,EACMnD,aAAa,EAEvB,OACIvX,EAAAA,cAAC4a,EAAAA,sBAAqB,CAClB3a,UAAU,gCACVwC,GAAIT,KAAKjC,MAAM0C,GACfoY,SAAU7Y,KAAKjC,MAAM8a,SACrBjW,QAAS5C,KAAKjC,MAAM6E,QACpBkW,cAAe9Y,KAAK+Y,0CACpB/D,KAAMhV,KAAKzB,MAAMoa,0BACjBK,UAAWhZ,KAAKzB,MAAMia,+BACtBS,QAASjZ,KAAKuY,eACd9T,oCAAqCA,GACvC,EAaO,KAAAyU,kBAAoB,KACjC,MAAM,OAAErU,EAAM,QAAEjC,EAAO,KAAEoS,EAAI,UAAEpV,GAAcI,KAAKjC,MAC5CgZ,EAAgB/B,GAAQA,EAAK+B,eAAiB/B,EAAK+B,cAAcnV,OACvE,IAAKmV,EACD,OAAO,KAGX,MAAMoC,EAAUnZ,KAAKgY,eAAepV,EAAQH,SACtC2W,EAAevU,EAAOuU,cAAgB,GAEtCC,EADoBrZ,KAAKsZ,wBACOF,EAChCG,EAAaxC,GAAiBA,EAAcyC,WAC5CC,EAAe7Z,EAAU8Z,gBACzBC,EAAW/Z,EAAUga,YAE3B,OAAIL,GAAcH,EACP,KAIPpb,EAAAA,cAAC6b,EAAAA,uBAAsB,CACnB5b,UAAW,GAAG+B,KAAK/B,wBACnBiC,KAAK,aAAY,aACLN,EAAUka,oBACtBnD,IAAKwC,EAAQd,KACb0B,IAAI,OACJC,MAAOT,EACPH,aAAcA,EACda,aAAcZ,EACdI,aAAczZ,KAAKka,YAAYT,GAC/BE,SAAU3Z,KAAKma,YAAYR,GAC3BS,kBAAmBX,EACnBY,cAAeV,GACjB,EAkFO,KAAAW,wBAA2Bvc,IACxC,IAAIQ,EAAQ,CACRgc,oBAAqBva,KAAKzB,MAAMgc,oBAEhCxc,IACAQ,EAAKqI,EAAAA,EAAA,GACErI,GACA,CACCic,qBAAqBC,EAAAA,EAAAA,6BAA4B1c,MAI7DiC,KAAKwB,SAASjD,EAAM,EAIP,KAAAmc,yBAA2B,CACxCC,EACA/X,EACA8B,KAEA,MAAMkW,GAAaC,EAAAA,EAAAA,mBAAkBF,EAAgB/X,EAAQJ,mBAAeS,GAC5E,IAAK6X,EAAAA,iBAAiBC,mBAAmBH,SAA6B3X,IAAdyB,EAAyB,CAC7E,MAAMsW,EAAc,IAAI5C,IAAIwC,EAAY1V,OAAOC,SAASkT,MAExD,OADA2C,EAAYC,aAAaC,IAAI,YAAa,GAAGxW,QAAAA,EAAa,KACnDsW,EAAY3C,IAAK,CAG5B,OAAOuC,CAAU,EAIJ,KAAAO,WAAa,KAC1Bnb,KAAKwB,SAAS,CACVhD,QAAQ,GACV,EAGW,KAAA4c,gBAAkB7Y,MAAOkV,EAAiB3S,EAAkB/G,KACzE,MAAM,QAAE6E,EAAO,KAAEoS,EAAI,UAAE5R,EAAS,OAAEyB,EAAM,UAAEjF,GAAcI,KAAKjC,OACvD,cAAEgZ,GAAkB/B,EAE1B,GAAIpS,GACImU,SAAAA,EAAenV,OAAQ,CACvB,MAAMyZ,EAAyBtE,EAAcnV,OAAO0Z,mBACpD,GAAID,EAAwB,CACxB,MAAME,EAAiBF,EAAuBG,WACzC7F,GAA6BA,EAAMK,gBAAgByF,SAAWhE,IAE7DiE,EAAkB9U,EAAA,GAAQyU,EAAuBE,IACvD,GAAIF,EAAuBE,GAAgBvF,gBAAgB8B,WAAahT,EACpE,OAEJ,MAAM6W,EAAeD,EAAmB1F,gBAAgB8B,SACxD4D,EAAmB1F,gBAAgB8B,SAAWhT,EAC9C,MAAM,YAAE4S,GAAyBgE,EAAT5F,GAAI8F,EAAAA,EAAAA,GAAKF,EAAkBG,GAG/C9d,IACAA,EAAM+G,SAAWA,EACjB9E,KAAKwB,SAAS,CACVgZ,qBAAqBC,EAAAA,EAAAA,6BAA4B1c,MAIzDiC,KAAKwB,SAAS,CACVsa,6BAA6B,KAGjCC,EAAAA,EAAAA,6BAA4B,CAAEzS,cAAe1G,EAAQJ,eAAiBuU,EAAcnV,OAAOoV,YAAYC,GAAI,CACvGnB,EAAKE,kBAEJrU,MAAKqa,IASF,GARAhc,KAAKwB,SAAS,CACViW,UACArB,YAAa,GACbC,gBAAiB,UACjBC,aAAc,eACdwF,6BAA6B,EAC7Btd,QAAQ,IAERwd,EAAM,CACN,MAAMC,EAAUD,EAAKzN,MAAKoH,GAASA,EAAM8F,SAAWhE,IACpD4D,EAAuBE,GAAgBvF,gBAAkBiG,EACzD,MAAMC,EAAe,IAAIb,GACzBa,EAAaX,GAAkB,CAAE7D,cAAa1B,gBAAiBiG,GAC/D,MAAME,EAAoBvV,EAAAA,EAAA,GAAQmQ,EAAcnV,QAAM,IAAEwa,iBAAkBF,IAC1EtZ,EAAQJ,cAAc6Z,OAClB,IAAIC,EAAAA,8BAA8B1Z,EAAQJ,cAAcoO,eAAgB/L,GACxEsX,EACF,KAGTna,OAAMC,IACHmB,EAAUoT,QAAQ,6DAClBpT,EAAUnB,MAAMA,GAChB,MAAMmU,EAAcxW,EAAU2c,mCAC1Bxe,GACAA,IAAUA,EAAMiY,gBAAgB8B,SAAW6D,GAC3C3b,KAAKwB,SAAS,CACViW,UACArB,cACAC,gBAAiB,SACjBC,aAAc,8BACdwF,6BAA6B,EAC7Btd,QAAQ,EACRgc,qBAAqBC,EAAAA,EAAAA,6BAA4B1c,OAGrD2d,EAAmB1F,gBAAgB8B,SAAW6D,EAC9C3b,KAAKwB,SAAS,CACViW,UACArB,cACAC,gBAAiB,SACjBC,aAAc,8BACdwF,6BAA6B,EAC7Btd,QAAQ,IACT,GAER,CAAD,GAML,KAAAuZ,cAAgBxV,MAC7BQ,EACA+B,EACA2S,EACA/S,KAEA,MAAM,QAAE9B,EAAO,KAAEoS,EAAI,UAAEpV,EAAS,UAAEwD,GAAcpD,KAAKjC,OAC/C,KAAEye,GAASxH,GACX,qBAAEyH,EAAoB,0BAAEC,GAA8B9c,EAE5D,GAAIgD,GACI4Z,EAAK5a,OAAQ,CACb,MAAM+a,EAAwB,CAC1B5Z,UACA6Z,MAAO9X,EACPJ,mBAGE8X,EAAK5a,OACNib,iBAAiBF,GACjBhb,MAAMC,IACH,GAAsB,YAAlBA,EAAO8L,OACP,OAAOgC,EAAAA,EAAAA,4BACH,IAAIF,EAAAA,6BACAzM,EAAQC,SACRhD,KAAKjC,MAAM6E,QAAQJ,cAAcoO,eAAelO,YAAYC,UAC5DI,GAEJ/C,KAAKjC,MAAM6E,QAAQJ,eACrBb,MAAKmb,IACH,IAAKA,EACD,OAAOC,EAAAA,GAAYC,OAAO,oCAG9B,MAAMC,EAAsD,iBAAzCra,EAAQ+O,IAAI9M,OAAOqY,kBAetC,OAdAld,KAAKwB,SAAS,CACViW,UACArB,YAAa,GACbC,gBAAiB,UACjBC,aAAc,eACd9X,QAAQ,EACRga,gCAAiCyE,EACjCtE,0BAA2B,CACvB5V,UACA0M,aAAcqN,EACdhY,YAEJyV,oBAAoB,IAEjBwC,EAAAA,GAAYzZ,SAAS,IAGhC,OAAQ1B,EAAOub,WACX,IAAK,cACD,GAAIva,EAAQ+O,IAAI9M,OAAOuY,2BAA4B,CAAC,IAADC,EAAAC,EAC/C,MAAMC,GACS,QAAXF,EAAAb,EAAK5a,cAAM,IAAAyb,OAAA,EAAXA,EAAab,KAAKgB,aACP,QADgBF,EAC3Bd,EAAK5a,cAAM,IAAA0b,GAAsE,QAAtEA,EAAXA,EAAad,KAAKgB,UAAUjP,MAAK3M,GAAUA,EAAO6b,YAAc1a,EAAQC,kBAAS,IAAAsa,OAAA,EAAjFA,EAAmFxF,UACjF4F,EAAiB,oBAAoB9a,EAAQ+O,IAAI9M,OAAOuY,+DAgB9D,OAfApd,KAAKwB,SAAS,CACViW,UACArB,iBACyBnT,IAArBsa,GACMd,EACK1Y,QAAQ,gBAAiBwZ,EAAiBlZ,YAC1CN,QACG,gBACAnB,EAAQ+O,IAAI9M,OAAOuY,2BAA2B/Y,aAEtDqZ,EACVrH,gBAAiB,SACjBC,aAAc,8BACd9X,QAAQ,IAELue,EAAAA,GAAYzZ,SAAU,CAC1B,CACH,MAAMoa,EAAiB,yFAQvB,OAPA1d,KAAKwB,SAAS,CACViW,UACArB,YAAasH,EACbrH,gBAAiB,SACjBC,aAAc,8BACd9X,QAAQ,IAELue,EAAAA,GAAYzZ,SAAU,CAErC,IAAK,gBAAkB,IAADqa,EAQlB,OAPA3d,KAAKwB,SAAS,CACViW,UACArB,aAAgC,QAAnBuH,EAAA/b,EAAOgc,oBAAY,IAAAD,OAAA,EAAnBA,EAAqBE,mBAAoBnB,EACtDrG,gBAAiB,SACjBC,aAAc,8BACd9X,QAAQ,IAELue,EAAAA,GAAYzZ,UAEvB,QASI,OARAF,EAAU0a,MAAM,mFAChB9d,KAAKwB,SAAS,CACViW,UACArB,YAAasG,EACbrG,gBAAiB,SACjBC,aAAc,8BACd9X,QAAQ,IAELue,EAAAA,GAAYzZ,UAAS,IAI3CtB,OAAOC,IACJmB,EAAUoT,QAAQvU,EAAM8b,SACxB3a,EAAU0a,MAAM,yFACZhD,EAAAA,iBAAiBC,mBAAmB9Y,EAAM8b,SAC1C/d,KAAKwB,SAAS,CACViW,UACArB,YAAanU,EAAM8b,QACnB1H,gBAAiB,SACjBC,aAAc,8BACd9X,QAAQ,IAGZwB,KAAKwB,SAAS,CACViW,UACArB,YAAasG,EACbrG,gBAAiB,SACjBC,aAAc,8BACd9X,QAAQ,GACT,GAER,CAAD,EAKD,KAAAwf,kCAAoCzb,UACjD,MAAM,QAAEK,EAAO,KAAEoS,EAAI,UAAE5R,GAAcpD,KAAKjC,OACpC,cAAEgZ,GAAkB/B,EAE1B,GAAIpS,GAAWA,EAAQJ,cAAe,CAClC,MAAM0T,EAAoC,IAE1C,GADkBtT,EAAQH,QAAQwb,KAAKC,iBAAmBtb,EAAQH,QAAQwb,KAAKE,OAC3EC,MAAarH,GAAAA,EAAenV,QAAUkU,EAAM,CAC5C,MAAMuI,QAAsBC,EAAAA,EAAAA,kBAAgBC,EAAAA,EAAAA,4BAA2B3b,EAAQJ,eAAgBI,EAAQJ,eACvG,IAAIiC,GAAsC,EACO,IAAD+Z,EAAhD,GAAIle,EAAAA,gBAAgBC,YAAY8d,GAC5B5Z,GAGK,QAFD+Z,EAAAH,EAAc9P,MACT8G,GAAqD,2DAAtBA,EAAaxM,cAChD,IAAA2V,OAAA,EAFDA,EAEGjJ,aAAa,EAExB,MAAM7Q,GAAY4D,EAAAA,EAAAA,IAAa1F,EAAQJ,cAAcoO,gBACjDnM,IACAqR,EAAKE,gBAAgB9M,UAAYxE,IAErCyR,EAAAA,EAAAA,6BAA4B,CAAE7M,cAAe1G,EAAQJ,eAAiBsT,EAAKE,gBAAgBrI,cAAgB,CACvGmI,EAAKE,kBAEJrU,MAAKY,gBAEI,IAAIc,SAAQC,GAAWiT,WAAWjT,EAAS4S,KACjDhR,OAAOC,SAASC,QAAQ,IAE3BpD,OAAMC,IACHmB,EAAUoT,QAAQ,4EAClBpT,EAAUnB,MAAMA,EAAM,GACvB,MAEPmB,EAAUoT,QACN,kHACH,GAKI,KAAAiI,gBAAkBlc,UAC/B2C,OAAOC,SAASC,SACT/B,QAAQC,WAGF,KAAAob,gBAAkB,KAC/B,MAAM,QAAE9b,EAAO,KAAEoS,EAAI,UAAE5R,EAAS,UAAExD,GAAcI,KAAKjC,OAC/C,cAAEgZ,GAAkB/B,EAE1B,GAAIpS,GAAWA,EAAQJ,cAAe,CAElC,GADkBI,EAAQH,QAAQwb,KAAKC,iBAAmBtb,EAAQH,QAAQwb,KAAKE,OAC9DpH,GAAiBA,EAAcnV,OAAQ,EACpD+c,EAAAA,EAAAA,aAAY,CAAErV,cAAe1G,EAAQJ,eAAiBuU,EAAcnV,OAAOoV,aACtErV,OACAK,OAAOC,IAAiB,IAAA2c,EACrBxb,EAAUoT,QAAQ,qDAClBpT,EAAUnB,MAAMA,GAChBjC,KAAKwB,SAAS,CACViW,SAA6B,QAApBmH,EAAA7H,EAAcnV,cAAM,IAAAgd,OAAA,EAApBA,EAAsB5H,YAAYC,KAAM,GACjDb,YAAaxW,EAAUif,8BACvBxI,gBAAiB,SACjBC,aAAc,8BACd9X,QAAQ,GACV,IAEV,MAAMsgB,GAAUlI,EAAAA,EAAAA,IAAW,oBAAqB5W,KAAKjC,MAAM6E,QAAQJ,eAC/Dsc,GACA5Z,OAAOC,SAAS8B,OAAO6X,EAAQ,MAGnC1b,EAAUoT,QAAQ,iFAAiF,MAGvGpT,EAAUoT,QAAQ,oDAAqD,EAQ9D,KAAAuI,aAAe,KAC5B,MAAM,QAAEnc,GAAY5C,KAAKjC,MAGzB,GAAI6E,EAAQH,SAAWG,EAAQH,QAAQuc,QAA0C,WAAhCpc,EAAQH,QAAQuc,OAAOC,KACpE,MAAO,KAGX,GAAI/G,EAAAA,GAASC,WAAajT,OAAOga,WAAY,CACzC,MAAMrO,EAAejO,EAAQH,QAAQoO,aACrC,GAAIA,EACA,OAAIA,EAAa3R,IAAMgG,OAAOga,YAAcrO,EAAa3R,GAAGE,EACjD,KACAyR,EAAasO,IAAMja,OAAOga,YAAcrO,EAAasO,GAAG/f,EACxD,KACAyR,EAAauO,IAAMla,OAAOga,YAAcrO,EAAauO,GAAGhgB,EACxD,KACAyR,EAAavR,IAAM4F,OAAOga,YAAcrO,EAAavR,GAAGF,EACxD,KAEJ,IAAI,CAInB,MAAO,IAAI,EAQE,KAAA8a,YAAemF,GAExBrhB,EAAAA,cAAA,OAAKC,UAAU,wBACXD,EAAAA,cAAA,QAAMC,UAAW,GAAG+B,KAAKjC,MAAM8G,OAAO5G,6BAA4B,cAAc,SAChFD,EAAAA,cAAA,QAAMC,UAAU,aAAaohB,IAUxB,KAAAlF,YAAemF,GAExBthB,EAAAA,cAAA,OAAKC,UAAU,wBACXD,EAAAA,cAAA,QAAMC,UAAU,aAAaqhB,GAC7BthB,EAAAA,cAAA,QAAMC,UAAW,GAAG+B,KAAKjC,MAAM8G,OAAO5G,8BAA6B,cAAc,UA38BzF+B,KAAK/B,UAAY,oBACjB+B,KAAKuf,UACDxhB,EAAM6E,QAAQH,SAAW1E,EAAM6E,QAAQH,QAAQuc,QAAgD,WAAtCjhB,EAAM6E,QAAQH,QAAQuc,OAAOC,KAAoB,KAAO,KACrHjf,KAAKwf,gBAAkBxf,KAAKwf,gBAAgBxU,KAAKhL,MAEjDA,KAAKzB,MAAQ,CACTkZ,QAAS,GACTrB,YAAa,GACbC,gBAAiB,UACjBC,aAAc,eACd9X,QAAQ,EACRga,gCAAgC,EAChCiH,qCAAqC,EACrC7J,iBAAkB,GAClB2E,oBAAoB,EACpBuB,6BAA6B,GAEjC9b,KAAK0F,kBAAmBga,EAAAA,EAAAA,oBACpB1f,KAAKjC,MAAM6E,QAAQH,QAAQkd,kBAC3B3f,KAAKjC,MAAM6hB,aACX5f,KAAKjC,MAAMqF,WAEfpD,KAAKwf,mBAEDtH,EAAAA,GAASC,WAAcnY,KAAKjC,MAAM6E,QAAQH,QAAQwb,KAAKC,iBAAoBle,KAAKjC,MAAM6E,QAAQH,QAAQod,OAAOC,UAC7G5a,OAAOC,SAAS8B,OAAOjH,KAAKjC,MAAM6E,QAAQH,QAAQwb,KAAK8B,WAAa,IAE5E,CAjCcC,eACV,MAA0B,OAAnBhgB,KAAKuf,WAAyC,OAAnBvf,KAAKuf,SAC3C,CAkCOhd,0BACHvC,KAAKwB,SAAS,CAAC,GACf,MAAMuV,QAAsB/W,KAAKjC,MAAMiX,KAAK+B,cAC5C/W,KAAKjC,MAAM8G,OAAOob,QAASC,MAAOnJ,aAAa,EAAbA,EAAeC,YAAYnO,OAAQ,GACrE7I,KAAKwB,SAAS,CACVoU,iBAAkBmB,aAAa,EAAbA,EAAeuE,qBAGjCpD,EAAAA,GAASC,YACTjT,OAAOib,iBAAiB,SAAUngB,KAAKwf,iBACvCxf,KAAKwf,kBAEb,CAEOY,uBACClI,EAAAA,GAASC,WACTjT,OAAOmb,oBAAoB,SAAUrgB,KAAKwf,gBAElD,CAEOnZ,sBACHC,EACAC,GAEA,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,QAAUuI,CAInD,CAEOE,SACH,MAAM,QAAEyZ,EAAO,UAAEhiB,GAAc+B,KAAKjC,MAAM8G,QACpC,4BAAEyb,EAA2B,+BAAEC,GAAmCvgB,KAAKjC,MAAM6B,WAC7E,cAAEmX,EAAa,KAAEyF,GAASxc,KAAKjC,MAAMiX,KAE3C,GAAoB,YAAhBwH,EAAK9O,QAAwB8S,EAAAA,iBAAiBC,kBAAkB1J,IAA2C,YAAzBA,EAAcrJ,OAAsB,CACtH,MAAMgT,EAAU9Z,EAAAA,EAAA,GACR5G,KAAKjC,OAAiD,IAC1DmX,mBAAoB,CAChByL,YAAa3gB,KAAKjC,MAClBE,UAAWkU,IAAWnS,KAAK/B,UAAWA,IAE1CyP,OAAQ,UACRkT,cAAe5iB,EAAAA,cAAC+J,EAAAA,EAAO,CAAC9J,UAAW+B,KAAK/B,UAAWC,IAAK8B,KAAKjC,MAAM6B,UAAUoI,2BAC7EiY,QAASA,GAAWjiB,EAAAA,cAAC6iB,EAAAA,QAAO7Z,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0BgiB,IAC1ErgB,UAAWI,KAAKjC,MAAM6B,YAE1B,OAAOI,KAAKjC,MAAM+iB,WAAWJ,EAAY,CAG7C,GAAoB,WAAhBlE,EAAK9O,QAAgD,WAAzBqJ,EAAcrJ,OAAqB,CAC/D,MAAMgT,EAAU9Z,EAAAA,EAAA,GACR5G,KAAKjC,OAAiD,IAC1DmX,mBAAoB,CAChByL,YAAa3gB,KAAKjC,MAClBE,UAAWkU,IAAW,GAAGnS,KAAK/B,YAAaA,IAE/CyP,OAAQ,SACRkT,cAAe5iB,EAAAA,cAAC+iB,EAAAA,gCAA+B,CAACC,UAAU,SAASd,KAAMK,IACzEN,QAASA,GAAWjiB,EAAAA,cAAC6iB,EAAAA,QAAO7Z,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0BgiB,IAC1ErgB,UAAWI,KAAKjC,MAAM6B,YAG1B,OAAOI,KAAKjC,MAAM+iB,WAAWJ,EAAY,CAG7C,MAAMO,EAAsBlK,GAAiBA,EAAcnV,OACrD0Z,EAAqB2F,GAAuBA,EAAoB3F,mBAEtE,IAAK2F,IAAwB3F,GAAoD,IAA9BA,EAAmBzZ,OAAc,CAChF,GAAIof,IAAwBjhB,KAAKkhB,gBAAkBhJ,EAAAA,GAASC,UAExD,OADAjT,OAAOC,SAASkT,KAAOrY,KAAKyW,2BACrB,KAGX,MAAM0K,EAAcva,EAAAA,EAAA,GACZ5G,KAAKjC,OAAiD,IAC1DmX,mBAAoB,CAChByL,YAAa3gB,KAAKjC,MAClBE,UAAWkU,IAAW,GAAGnS,KAAK/B,YAAaA,IAE/CyP,OAAQ,QACRkT,cAAe5iB,EAAAA,cAAC+iB,EAAAA,gCAA+B,CAACC,UAAU,QAAQd,KAAMI,IACxEL,QAASA,GAAWjiB,EAAAA,cAAC6iB,EAAAA,QAAO7Z,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0BgiB,IAC1ErgB,UAAWI,KAAKjC,MAAM6B,UACtBwhB,aACIH,GACAjhB,KAAKqhB,4BAA4BJ,EAAqBjhB,KAAKmV,4CAC/DmM,qBAAsBL,GAAuBjhB,KAAKuhB,6BAA6BN,EAAoBjK,YAAYC,IAC/GuK,qBAAsB,CAClBvjB,UAAW,GAAG+B,KAAK/B,uBACnBwjB,IAAK,SAIb,OAAOzhB,KAAKjC,MAAM+iB,WAAWK,EAAgB,CAGjD,MAAM9Z,EAAST,EAAAA,EAAA,GACP5G,KAAKjC,OAAiD,IAC1DmX,mBAAoB,CAChByL,YAAa3gB,KAAKjC,MAClBE,UAAWkU,IAAW,GAAGnS,KAAK/B,YAAaA,IAE/CyP,OAAQ,UACRgU,sBAAuB1hB,KAAKzB,MAAMC,QAC9BR,EAAAA,cAAA,OAAKC,UAAW,GAAG+B,KAAK/B,6BACpBD,EAAAA,cAAC8U,EAAAA,MAAK,CAAC1R,MAAOpB,KAAKzB,MAAM8X,gBAAiB7X,OAAQwB,KAAKzB,MAAMC,OAAQqI,OAAQ7G,KAAKmb,YAC9End,EAAAA,cAAA,oBAAgB,aAAagC,KAAKzB,MAAM6X,eAIpD6J,QAASA,GAAWjiB,EAAAA,cAAC6iB,EAAAA,QAAO7Z,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0BgiB,IAC1EuB,qBAAsB,CAClBvjB,UAAW,GAAG+B,KAAK/B,uBACnBwjB,IAAK,OAETE,cAAe,CACX1jB,UAAW,GAAG+B,KAAK/B,mBACnBwjB,IAAK,QACLvhB,KAAM,QAEV0hB,iBAAkB,CACd3jB,UAAW,GAAG+B,KAAK/B,uBACnBwjB,IAAK,MAETI,qBAAsB7hB,KAAK8hB,yBAAyB9hB,KAAKjC,MAAM6B,WAC/D+X,eAAgB,CACZ1Z,UAAW,GAAG+B,KAAK/B,6BACnBwjB,IAAK,KAETM,WAAY/hB,KAAKgiB,qBACjBC,UAAW,CAAEC,eAAgBC,IAASniB,KAAKob,gBAAiB,MAC5DgG,aAAcphB,KAAKqhB,4BAA4BJ,EAAqBjhB,KAAKmV,4CACzEiN,WAAYpiB,KAAKkZ,oBACjBmJ,sBAAuBriB,KAAKyY,+BAC5B6I,qBAAsBthB,KAAKuhB,6BAA6BN,EAAoBjK,YAAYC,IACxFsD,mBAAoBva,KAAKzB,MAAMgc,mBAC/B+H,uBAAwBtiB,KAAKsa,wBAC7BE,oBAAqBxa,KAAKzB,MAAMic,oBAChCwF,SAAUhgB,KAAKggB,WAGnB,OAAOhgB,KAAKjC,MAAM+iB,WAAWzZ,EACjC,CAEOkb,SAASzM,EAAmCC,GAC/CD,EAAKC,UAAYA,EAEjB,MAAMyM,EACFxiB,KAAKzB,MAAMqX,iBAAiBpN,KAAIzF,IAAU,IAAA0f,EAAAC,EAItC,OAHuB,QAAnBD,EAAA1f,EAAQ2U,mBAAW,IAAA+K,OAAA,EAAnBA,EAAqB9K,eAAejG,WAA2B,QAArBgR,EAAK5M,EAAK4B,mBAAW,IAAAgL,OAAA,EAAhBA,EAAkB/K,eAAejG,UAChFoE,EAAKC,UAAYA,GAEdhT,CAAO,KACZ,GAEV/C,KAAKwB,SAAS,CACVoU,iBAAkB4M,GAE1B,CAEOG,YAAY5M,GACf,MAAMyM,EACFxiB,KAAKzB,MAAMqX,iBAAiBpN,KAAIsN,IAC5BA,EAAKC,UAAYA,EACVD,MACL,GAEV9V,KAAKwB,SAAS,CACVoU,iBAAkB4M,GAE1B,CAEQV,yBAAyBliB,GAC7B,MAAM,aACFgjB,EAAY,kBACZC,EAAiB,YACjBC,EAAW,qBACXC,EAAoB,eACpBC,EAAc,oBACdC,EAAmB,mBACnBC,EAAkB,kBAClBC,EAAiB,uBACjBC,GACAxjB,EACEyjB,EAA2C,CAC7CT,aAAcA,EACdU,cAAeT,EACfU,YAAaT,EACbU,iBAAkBT,EAClBU,WAAYT,EACZU,gBAAiBT,EACjBU,eAAgBT,EAChBC,oBACAxN,MAAO3V,KAAKzB,MAAMqX,iBAClBoK,SAAUhgB,KAAKggB,SACfpY,aAAemO,IACX/V,KAAK2iB,YAAY5M,EAAU,EAE/BtR,oCAAqCzE,KAAKmV,2CAC1CiO,uBAAwBA,GAG5B,OAAOplB,EAAAA,cAAC4lB,EAAAA,0BAAyB5c,OAAAC,OAAA,GAAKoc,GAC1C,CAEQ9B,6BAA6B/c,GACjC,OACIxG,EAAAA,cAACiW,EAAAA,EAAwBjN,OAAAC,OAAA,GACjBjH,KAAKjC,MAAK,CACdyG,gBAAiBA,EACjBiQ,cAAezU,KAAKzB,MAAMqX,kBAAoB5V,KAAKzB,MAAMqX,iBAAiBnI,QAAOqI,GAAQA,EAAKC,YAC9F1B,oBAAqBrU,KAAKkX,qBAC1B3C,kBAAmBvU,KAAKwV,mBACxBP,eAAgBjV,KAAKggB,SACrBvb,oCAAqCzE,KAAKmV,2CAC1CzP,iBAAkB1F,KAAK0F,mBAGnC,CAEQme,2CACJ,MAAO,CACHC,mBAAoB9jB,KAAKjC,MAAM6B,UAAUkkB,mBACzCC,6BAA8B/jB,KAAKjC,MAAM6B,UAAUmkB,6BACnDC,mCAAoChkB,KAAKjC,MAAM6B,UAAUokB,mCACzDC,mCAAoCjkB,KAAKjC,MAAM6B,UAAUqkB,mCACzDC,sCAAuClkB,KAAKjC,MAAM6B,UAAUskB,sCAC5DC,kCAAmCnkB,KAAKjC,MAAM6B,UAAUukB,kCAEhE,CAEQpL,0CACJ,MAAO,CACH+K,mBAAoB9jB,KAAKjC,MAAM6B,UAAUkkB,mBACzCC,6BAA8B/jB,KAAKjC,MAAM6B,UAAUmkB,6BACnDK,iCAAkCpkB,KAAKjC,MAAM6B,UAAUwkB,iCACvDC,oCAAqCrkB,KAAKjC,MAAM6B,UAAUykB,oCAC1DC,iCAAkCtkB,KAAKjC,MAAM6B,UAAU0kB,iCACvDC,cAAevkB,KAAKjC,MAAM6B,UAAU2kB,cACpCC,kBAAmBxkB,KAAKjC,MAAM6B,UAAU4kB,kBACxCC,iBAAkBzkB,KAAKjC,MAAM6B,UAAU6kB,iBAE/C,CAmFQpD,4BACJtK,EACAtS,GAEA,MAAM,GAAEhE,EAAE,SAAEoY,EAAQ,QAAEjW,EAAO,UAAEhD,GAAcI,KAAKjC,OAC5C,2BACF2mB,EAA0B,yBAC1BC,EAAwB,yBACxBC,EAAwB,sBACxBC,EAAqB,wBACrBC,EAAuB,wBACvBC,EAAuB,wBACvBC,EAAuB,0BACvBC,GACArlB,EAEEslB,EAAmD,CACrDlQ,KAAM,CAAE+B,iBACRtW,KACAoY,WACAjW,UACA8C,iBAAkB1F,KAAK0F,iBACvByf,SAAU,CACNC,iBAAkBplB,KAAKye,gBACvB4G,iBAAkBrlB,KAAK0e,iBAE3Bja,sCACA6gB,iCAAkCtlB,KAAKulB,0CAA0C3lB,GACjFA,UAAW,CACP8kB,6BACAC,2BACAC,2BACAE,0BACAC,0BACAC,0BACAH,wBACAI,4BACAO,gCAAiCxlB,KAAK6jB,6CAI9C,OAAO4B,EAAAA,EAAAA,0BAAyBP,EACpC,CAEQK,0CAA0C3lB,GAC9C,MAAO,CACH8lB,yBAA0B9lB,EAAU+lB,6BACpCC,wBAAyBhmB,EAAUimB,mBACnCC,2BAA4BlmB,EAAUimB,mBACtCE,yBAA0B,GAC1BC,yBAA0BpmB,EAAUomB,yBACpCC,yBAA0BrmB,EAAUsmB,8BACpCC,+BAAgCvmB,EAAUwmB,eAElD,CA8CQlF,eACJ,OAAwC,IAAjClhB,KAAKsZ,uBAChB,CAEQA,wBACJ,MAAMF,EAAepZ,KAAKjC,MAAM8G,OAAOuU,cAAgB,GACvD,OAAQpZ,KAAKjC,MAAM6E,QAAQH,QAAQhE,QAAUuB,KAAKjC,MAAM6E,QAAQH,QAAQhE,MAAM4nB,KAAOjN,GAAiB,CAC1G,CAuCQ4I,qBACJ,MAAM,iBACFsE,EAAgB,eAChBC,EAAc,uBACdC,EAAsB,UACtBC,EAAS,kBACTjC,EAAiB,iBACjBC,EAAgB,oCAChBiC,EAAmC,sCACnCC,EAAqC,0BACrCxW,EAAyB,yBACzBE,EAAwB,0BACxBC,EAAyB,uBACzBnE,EAAsB,iBACtBya,EAAgB,yBAChBxa,EAAwB,yBACxBL,EAAwB,+BACxB8a,EAA8B,8BAC9BC,GACA9mB,KAAKjC,MAAM6B,WAET,QAAEgD,EAAO,UAAEQ,EAAS,KAAE4R,GAAShV,KAAKjC,OACpC,SAAEsK,GAAa2M,GACf,cAAE1N,GAAkBtH,KAAKjC,MAAM8G,OAErC,OAAO7E,KAAKzB,MAAMqX,iBAAiBpN,KAAI,CAACsN,EAAMxC,KAAS,IAAAyT,EACnD,MAAMC,EAA+C,CACjDC,kBAAmBnR,EACnBE,gBAAiBF,EAAKE,gBACtBhD,MAAuB,QAAlB+T,EAAEjR,EAAK4B,mBAAW,IAAAqP,OAAA,EAAhBA,EAAkBG,aACzBjlB,MAAO6T,EAAK7T,MACZklB,cAAerR,EAAKqR,cACpBvkB,UACAkZ,4BAA6B9b,KAAKzB,MAAMud,4BACxClB,WAAY9E,EAAK4B,YACX1X,KAAK0a,yBAAyB5E,EAAK4B,YAAYC,eAAgB/U,EAASkT,EAAKE,gBAAgB9M,WAC7F,GACN5B,gBACAlE,YACAgkB,SAAUpnB,KAAKjC,MAAM0C,GACrB4mB,eAAgBrnB,KAAKjC,MAAM8a,SAC3B/T,SAAUgR,EAAKE,gBAAgB8B,SAC/BqN,SAAU,CACNmC,WAAYtnB,KAAK+X,cACjBwP,aAAcvnB,KAAKge,kCACnBwJ,iBAAkBxnB,KAAKob,gBACvBmH,SAAUviB,KAAKuiB,SAASvX,KAAKhL,OAEjCJ,UAAW,CACP0mB,mBACAC,iBACAC,yBACArW,4BACAE,2BACAC,4BACAiU,cAAekC,EACfjC,oBACAC,mBACAtY,yBACAsb,iCAAkCd,EAClCe,mBAAoBhB,EACpBE,mBACAxa,2BACAL,2BACA8a,iCACAC,iCAEJxT,QACA0M,SAAUhgB,KAAKggB,SACfsC,uBAAwBtiB,KAAKsa,wBAC7B7V,oCAAqCzE,KAAKmV,2CAC1C9M,SAAUA,GAAYA,EAASzG,QAGnC,OAAO+lB,EAAAA,EAAAA,uBAAsBX,EAAqB,GAE1D,CAkVQxH,kBACJxf,KAAKuf,UAAYvf,KAAK+e,cAC1B,IA/5BArV,EAAAA,EAAAA,IAAA,CADCke,EAAAA,IAAU,iCAGDle,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,8BAoCTD,EAAAA,EAAAA,IAAA,CADCme,EAAAA,IAAM,sCA3CL3S,GAAkBxL,EAAAA,EAAAA,IAAA,CADvBkD,EAAAA,IACKsI,GA+9BN,qFCnlCA,MAgHM4S,EAAcA,CAAC/kB,EAAsCglB,EAAuBnG,KAC9E,IAAK7e,EACD,OAAO,KAGX,MAAM,IACF4F,EAAG,WACHqf,EAAU,mBACVC,EAAkB,aAClBrF,EAAY,aACZnT,EAAY,cACZ6T,EAAa,eACb4E,EAAc,aACdC,EAAY,YACZC,EAAW,qBACXC,EAAoB,oBACpBC,EAAmB,gBACnB5E,EAAe,MACf6E,EAAK,SACLvI,EAAQ,kBACRwI,EAAiB,oCACjB/jB,EAAmC,SACnC6G,GACAvI,EAYE0lB,EAViBnd,EACjB,CACIod,cAAe,OACfC,QAAS,IAEb,CACID,cAAe,OACfC,QAAS,GAKnB,OACI3qB,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,CAAC0B,IAAKA,EAAK1K,UAAW,GAAG2jB,EAAkB3jB,aAAiB2jB,GAC7D5jB,EAAAA,cAAA,UAAKgqB,IACHhI,GAAYvb,GAAuCzG,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiBR,GACjFjqB,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiB7F,GAC3B5C,EACGhiB,EAAAA,cAAA,UACIA,EAAAA,cAAA,WAAMslB,GACNtlB,EAAAA,cAAA,OAAK6qB,MAAOJ,GACPV,EAAa,IAAG,IAChBrE,IAIT1lB,EAAAA,cAAA,UAAKslB,IAEPtD,GAAYhiB,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiBL,IACxCpI,GAAYhiB,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiBhZ,IACxCuQ,GAAYhiB,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiBJ,IACxCrI,GAAYhiB,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiBH,GACzCtI,GAAYhiB,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiBF,IACvCvI,IAAavb,GACXzG,EAAAA,cAAA,MAAI6qB,MAAOJ,GACNP,EACAC,GAGTnqB,EAAAA,cAAA,MAAI6qB,MAAOJ,GAAiBD,GACzB,EAIf,EArLmEzqB,IAC/D,MAAM,mBACFmX,EAAkB,OAClBxH,EAAM,cACNkT,EAAa,QACbX,EAAO,cACP0B,EAAa,qBACbE,EAAoB,WACpBE,EAAU,iBACVH,EAAgB,sBAChBF,EAAqB,qBACrBF,EAAoB,aACpBJ,EAAY,WACZgB,EAAU,sBACVC,EAAqB,qBACrBf,EAAoB,mBACpB/G,EAAkB,oBAClBC,EAAmB,uBACnB8H,EACA1iB,WAAW,eACPwmB,EAAc,kBACdvD,EAAiB,YACjBC,EAAW,qBACXC,EAAoB,eACpBC,EAAc,oBACdC,EAAmB,uBACnBG,IAEJrlB,EAEE+qB,EAAgB9qB,EAAAA,aAAkB,KACpCskB,GAA0BA,OAAuBrf,EAAU,GAC5D,CAACqf,IAEJ,OACItkB,EAAAA,cAAC+qB,EAAAA,OAAM/hB,OAAAC,OAAA,GAAKiO,GACP+K,EACAuB,GACGxjB,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKua,GACLJ,aAAY,EAAZA,EAAc4H,iBACd5H,aAAY,EAAZA,EAAc6H,eACd7H,aAAY,EAAZA,EAAc8H,eACd9H,aAAY,EAAZA,EAAc+H,oBACb5O,GAAsBmH,GAG/BJ,EACW,YAAX5T,GAAwBkT,EACxBe,GAAiBI,GAAcA,EAAWlgB,OAAS,GAChD7D,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,8BACZD,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAK0a,GACLE,EACD7jB,EAAAA,cAAA,aACK+jB,GACGA,EAAWvZ,KAAIzF,GACJ+kB,EAAY/kB,EAASkgB,EAAqBrB,OAIhEQ,GAGRC,EACDrkB,EAAAA,cAAC+I,EAAAA,MAAK,CACFqiB,cAAc,sCACdtoB,WAAS,EACTuoB,MAAM,EACNC,gBAAgB,aAChB9qB,OAAQ+b,EACR1T,OAAQiiB,GAER9qB,EAAAA,cAACkJ,EAAAA,YAAW,CAACL,OAAQiiB,GAAa,mBAClC9qB,EAAAA,cAAC8J,EAAAA,UAAS,KACN9J,EAAAA,cAAA,UACIA,EAAAA,cAAA,UAAKwc,aAAmB,EAAnBA,EAAqBoI,cAC1B5kB,EAAAA,cAAA,MAAIC,UAAU,gBACVD,EAAAA,cAAA,YAAO8kB,EAAW,KACjBtI,aAAmB,EAAnBA,EAAqB4N,aAE1BpqB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOolB,EAAsB,KAC5B5I,aAAmB,EAAnBA,EAAqByN,oBAE1BjqB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAO6kB,EAAiB,KACvBrI,aAAmB,EAAnBA,EAAqB8I,eAE1BtlB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAO+kB,EAAoB,KAC1B,IACAvI,aAAmB,EAAnBA,EAAqB/K,cAE1BzR,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOglB,EAAc,KACpB,IACAxI,aAAmB,EAAnBA,EAAqB6N,sBAE1BrqB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOilB,EAAmB,KACzBzI,aAAmB,EAAnBA,EAAqB8N,qBAEzB5G,GAAyB1jB,EAAAA,cAAA,UAAK0jB,KAGvC1jB,EAAAA,cAACgU,EAAAA,YAAW,KACRhU,EAAAA,cAACkU,EAAAA,OAAM,CAAC/K,QAAS2hB,GAAgB1C,KAGpC,s0BCpCV,MAAMgoB,UAAiCpwC,IAAAA,cAyB1CK,YAAmBN,GACfO,MAAMP,GAwKF,KAAAswC,wBAA2BC,IAC/B,MAAMC,EAASvuC,KAAKzB,MAAMiwC,sBAC1B,GAAIxuC,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAO4pC,yBAA2BF,EAAU,EAAG,CACtE,MAAMG,EAAW,GACjB,IAAK,IAAIp7B,EAAQ,EAAGA,EAAQi7B,EAASj7B,IACjCo7B,EAASvd,KACLnzB,IAAAA,cAAA,MAAIC,UAAU,GAAG0K,IAAK2K,GAClBtV,IAAAA,cAAA,OAAKC,UAAU,0BAI3B,OAAOywC,CAAS,CAEd,EAOO,KAAAC,uBAA0BC,IAAwB,IAAAC,EAC/DC,EAAAA,GAAuBC,SAAS/uC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApCosC,EAAE7uC,KAAKjC,MAAMiX,KAAKg6B,0BAAkB,IAAAH,OAAA,EAAlCA,EAAoCjtC,QAAQqtC,eAAeL,GACvH5uC,KAAKwB,UAAS0tC,IAAgB,IAAAC,EAC1B,MAAO,CACHC,aAAwC,QAA5BD,EAAED,EAAcE,oBAAY,IAAAD,OAAA,EAA1BA,EAA4B1hC,QAAOnD,GAAQA,EAAKskC,SAAWA,IAC5E,GACH,EAMW,KAAAS,qBAAmC,KAChDrvC,KAAKwB,UAAS0tC,IAAgB,IAAAI,EAC1B,MAAO,CACHC,aAAsC,QAA1BD,EAAEJ,EAAcK,kBAAU,IAAAD,EAAAA,EAAItvC,KAAKwvC,kCAClD,GACH,EAMW,KAAAC,mCAAqC,KAAK,IAAAC,EACvDZ,EAAAA,GAAuBC,SAAS/uC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApCitC,EAAE1vC,KAAKjC,MAAMiX,KAAKg6B,0BAAkB,IAAAU,OAAA,EAAlCA,EAAoC9tC,QAAQ+tC,WACxG3vC,KAAKwB,SAAS,CAAE4tC,aAAc,IAAK,EAnNnCpvC,KAAKzB,MAAQ,CAAC,EAEdyB,KAAK4vC,YAAc,GAAGxB,EAAyBnwC,aAAa+B,KAAKjC,MAAM0C,MAAM+qC,EAAAA,OAAOC,KAAKC,iBACzF0C,EAAyByB,qBAAuB7vC,KAAK4vC,YAErD5vC,KAAKwvC,kCAAmC,CAC5C,CAEOvpC,oBAAiB,IAAA6pC,EAChB9vC,KAAK4vC,cAAgBxB,EAAyByB,uBAIlD7vC,KAAK+vC,gBACLjB,EAAAA,GAAuBC,SAAS/uC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApCqtC,EAAE9vC,KAAKjC,MAAMiX,KAAKg6B,0BAAkB,IAAAc,OAAA,EAAlCA,EAAoCluC,QAAQouC,kBAAkBC,UACtH,CACIC,WAAYlwC,KAAK4vC,YAKjBO,QAASA,KACLnwC,KAAKwvC,kCAAmC,EAExCxvC,KAAK+vC,eAAe,IAIpC,CAEO3vB,uBAAoB,IAAAgwB,EACvBtB,EAAAA,GAAuBC,SACnB/uC,KAAKjC,MAAM6E,QAAQH,QACe,QADR2tC,EAC1BpwC,KAAKjC,MAAMiX,KAAKg6B,0BAAkB,IAAAoB,OAAA,EAAlCA,EAAoCxuC,QACtCouC,kBAAkBK,YAAYrwC,KAAK4vC,YACzC,CAEOppC,SAAM,IAAA8pC,EAAAC,EACT,GAAIvwC,KAAK4vC,cAAgBxB,EAAyByB,qBAC9C,OAAO,KAGX,MAAMxoC,EAAST,EAAAA,EAAA,GACR5G,KAAKjC,OAAK,IACb4iB,YAAa,CACTA,YAAa3gB,KAAKjC,MAClBE,UAAWmwC,EAAyBnwC,UACpCwC,GAAIT,KAAK4vC,aAEbY,eAAgBxwC,KAAKywC,wBACrBC,oBAAoB,EACpBC,gCAAiC3wC,KAAKwvC,mCAGpClB,EAActuC,KAAK4wC,oCAA2D,QAAxBN,EAACtwC,KAAKzB,MAAM6wC,oBAAY,IAAAkB,EAAAA,EAAgC,QAAhCC,EAAIvwC,KAAKjC,MAAMiX,KAAKo6B,oBAAY,IAAAmB,OAAA,EAA5BA,EAA8B3uC,QAEtH,IAAKtB,EAAAA,gBAAgBC,YAAY+tC,GAC7B,OAAOtuC,KAAKjC,MAAM+iB,WAAWzZ,GAGjCA,EAAUqpC,oBAAqB,EAE/B,MAAMG,EAAgB7wC,KAAK8wC,oBAiB3B,OAhBKtwB,EAAAA,iBAAiBC,kBAAkBowB,KACpCxpC,EAAU0pC,cAAgB/wC,KAAKjC,MAAM6B,UAAUoxC,4CAC1CjtC,QAAQ,MAAOuqC,EAAYzsC,OAAOwC,YAClCN,QAAQ,MAAO8sC,EAAcxsC,aAGtCgD,EAAUkoC,WAAavvC,KAAKzB,MAAMgxC,WAClCloC,EAAU4pC,oBAAsBjxC,KAAKqvC,qBACrChoC,EAAU6pC,iBAAmBlxC,KAAKmxC,qBAAqB7C,GACvDjnC,EAAU+pC,wBAA0BpxC,KAAKquC,wBAAwBC,GACjEjnC,EAAUgqC,uBAAwBz6B,EAAAA,EAAAA,IAAW,qBAAsB5W,KAAKjC,MAAM6E,QAAQJ,eACtF6E,EAAUiqC,kCAAoCtxC,KAAKyvC,mCACnDpoC,EAAUkqC,sBAAwBvxC,KAAK2uC,uBACvCtnC,EAAUmqC,qBAAuBxxC,KAAKyxC,4BAA4BpqC,EAAUgqC,uBAC5EhqC,EAAUqqC,eAAiB1xC,KAAK2xC,wBAEzB3xC,KAAKjC,MAAM+iB,WAAWzZ,EACjC,CACQupC,oCAAoCtC,GAAwD,IAAAsD,EAChG,MAAMltC,GAAY4D,EAAAA,EAAAA,IAAatI,KAAKjC,MAAM6E,QAAQH,UAClD8F,EAAAA,EAAAA,mBAAkB7D,GAElB,OAD0F,QAAlEktC,EAAGtD,aAAW,EAAXA,EAAa7gC,QAAO1K,GAAWA,EAAQ2B,YAAcA,WAAU,IAAAktC,EAAAA,EAAI,EAElG,CACQrvC,sBAAmB,IAAAsvC,EACvB,MAAM73B,EAAQ80B,EAAAA,GAAuBC,SAAS/uC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApCovC,EAAE7xC,KAAKjC,MAAMiX,KAAKg6B,0BAAkB,IAAA6C,OAAA,EAAlCA,EAAoCjwC,QAAQoY,MAChHrV,EAAQ,IAAImtC,EAAAA,2CAA2C93B,GACvDs0B,QAAoByD,EAAAA,EAAAA,6CAA4CptC,EAAO3E,KAAKjC,MAAM6E,QAAQJ,eAC1FwvC,EAAyBhyC,KAAK4wC,oCAAoCtC,GACxEtuC,KAAKwB,SAAS,CAAE4tC,aAAc4C,IAC9BhyC,KAAKiyC,0BAA0BD,EACnC,CAEQC,0BAA0B3D,GAC9B,GAAIA,GAAehuC,EAAAA,gBAAgBC,YAAY+tC,GAAc,CACzD,MAAM4D,EAAQlyC,KAAK8wC,oBACnB,GAAIoB,GAASlyC,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAO4pC,wBAAyB,CAChE,MAAM0D,EAAcD,EAAQ5D,EAAYzsC,OAExC,OADA7B,KAAKwB,SAAS,CAAEgtC,sBAAuB2D,IAChCA,CAAY,CAAD,CAI9B,CAEQhB,qBAAqBzyC,GACzB,MAAM0zC,EAAiC,GAAGhE,EAAyBiE,6CAC7DC,EAAwB,GAAGF,mBAC3BG,EAAuB,GAAGnE,EAAyBiE,kCAEzD,OAAO3zC,EAAS8J,KAAI8lC,IAChB,MAAMvrC,EAAUurC,EAAYvrC,QAE5B,IAAIyvC,EACJ,GAAIxR,EAAAA,GAAiB7oB,UAAW,CAAC,IAADs6B,EAC5B,MAAM73B,GAAaC,EAAAA,EAAAA,mBAAkB9X,EAAS/C,KAAKjC,MAAM6E,QAAQJ,eAC3D2W,EAAU,IAAIf,IAAIwC,EAAY1V,OAAOC,SAASkT,OAChD4jB,EAAAA,EAAAA,IAAiBj8B,KAAKjC,MAAM6E,QAAQJ,cAAcoO,iBAClDuI,EAAQ8B,aAAaC,IAAI,YAAa,GAAGozB,EAAY5pC,aAEvC,QAAlB+tC,EAAA1vC,EAAQ4gC,kBAAU,IAAA8O,GAAlBA,EAAoBjqC,KAAI+E,IAAY,IAAA8E,EAChC,MAAMqgC,EAAyC,QAA3BrgC,EAAG9E,EAAUuB,sBAAc,IAAAuD,OAAA,EAAxBA,EAA0BE,MACjD,IAAKuI,EAAAA,iBAAiBC,mBAAmB23B,GAAiB,CACtD,MAAM3lC,GAAgB4lC,EAAAA,EAAAA,6CAA4CplC,EAAUC,oBAC5E2L,EAAQ8B,aAAaC,IAAInO,EAAe2lC,EAAiB,KAGjEF,EAAkBr5B,EAAQd,IAAK,CAGnC,MAAO,CACHm6B,kBACAlE,cACAsE,2BACI50C,IAAAA,cAAC60C,EAAAA,GAAmC,CAChC50C,UAAW,GAAGmwC,EAAyBiE,4BACvCzyC,UAAWI,KAAKjC,MAAM6B,UACtBgvC,OAAQN,EAAYM,OACpB7F,eAAgB/oC,KAAK2uC,uBACrB/rC,QAAS5C,KAAKjC,MAAM6E,QACpBnC,GAAIT,KAAKjC,MAAM0C,GACfoY,SAAU7Y,KAAKjC,MAAM8a,SACrB7D,KAAM,CAAC,IAGf4N,aACI5kB,IAAAA,cAAA,KAAGC,UAAWm0C,EAAgC/5B,KAAMm6B,GAC/CxyC,KAAK4sC,oBAAoB0F,EAAuBhE,EAAYvrC,UAGrE+vC,YACI90C,IAAAA,cAAA,KAAGC,UAAWs0C,EAAsBl6B,KAAMm6B,GACrClE,EAAYvrC,QAAQ8F,MAGhC,GAET,CAsDQioC,oBACJ,MAAMiC,GAAW/yB,EAAAA,EAAAA,UAAS,CAAE1N,QAAS0gC,EAAAA,YAAYC,QAASrwC,QAAS5C,KAAKjC,MAAM6E,QAAQH,UACtF,MAAiB,OAAbswC,GAAkC,OAAbA,EACd/yC,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAOquC,qCAElClzC,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAOsuC,qCACzC,CAQQvG,oBAAoB3uC,EAAmB8E,GAAuB,IAAAyN,EAAAC,EAAAC,EAClE,GAAI8P,EAAAA,iBAAiBC,kBAAkB1d,GACnC,OAGJ,MAAMqwC,EAAuB,kBACvBp0C,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAGi0C,EAAsBh0C,EAAG,EAAGC,EAAG,GACxCC,GAAI,CAAEH,EAAGi0C,EAAsBh0C,EAAG,EAAGC,EAAG,GACxCE,GAAI,CAAEJ,EAAGi0C,EAAsBh0C,EAAG,EAAGC,EAAG,IAE5CG,UAAU,GAGd,OACIxB,IAAAA,cAACoT,EAAAA,GAAK,CACFzI,IAAK5F,EAAQ8F,KACbyI,IAA4B,QAAzBd,EAAEzN,EAAQwO,uBAAe,IAAAf,EAAAA,EAAI,GAChCgB,YAKK,QALMf,GACPgB,EAAAA,EAAAA,qBACI1O,EAAQ2O,OACR1R,KAAKjC,MAAM6E,QAAQJ,cAAcoO,eAAelO,YAClB,QAD6BgO,EAC3D1Q,KAAKjC,MAAM6E,QAAQH,QAAQkP,WAAG,IAAAjB,GAAQ,QAARA,EAA9BA,EAAgC7L,cAAM,IAAA6L,OAAA,EAAtCA,EAAwCkB,yBAC3C,IAAAnB,EAAAA,EAAI,GAETI,aAAc7Q,KAAKjC,MAAM6E,QAAQH,QAAQoO,aACzCvJ,cAAetI,EACf6S,oBAAoB,QACpB5T,UAAWA,EACX2S,eAAgB5Q,KAAKjC,MAAM6E,QAAQJ,cAAcoO,gBAG7D,CAEQ6/B,wBAAqB,IAAA4C,EACzB,MAAMC,EAAwC,QAAxBD,EAAGrzC,KAAKzB,MAAMgxC,kBAAU,IAAA8D,EAAAA,EAAIrzC,KAAKwvC,iCACjD+D,EAA2B,GAAGnF,EAAyBoF,wCAC7D,IAAIC,EAAoB,GAAGrF,EAAyBsF,oCAKpD,OAJKJ,IACDG,EAAoB,GAAGrF,EAAyBsF,sCAG7C,CACHz1C,UAAWkU,IAAWohC,EAA0BnF,EAAyBsF,wBAAyBD,GAClGtsC,QAASnH,KAAKqvC,qBACdnvC,KAAM,SACN8L,SAAU,EAElB,CAEQylC,4BAA4BJ,GAChC,OACIrzC,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAW,GAAGmwC,EAAyBuF,oCACvCt7B,KAAMg5B,EACNvlC,MAAO9L,KAAKjC,MAAM6B,UAAUg0C,4CAE3B5zC,KAAKjC,MAAM6B,UAAUg0C,2CAGlC,CAEQjC,wBACJ,OACI3zC,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAW,GAAGmwC,EAAyBuF,6BACvC7nC,MAAO9L,KAAKjC,MAAM6B,UAAUi0C,4CAC5B1sC,QAASnH,KAAKyvC,oCAEbzvC,KAAKjC,MAAM6B,UAAUi0C,4CAGlC,EAxUuBzF,EAAAnwC,UAAY,gCAEZmwC,EAAA0F,mBAAqB,GAAG1F,EAAyBnwC,uBAEjDmwC,EAAAoF,uBAAyB,GAAGpF,EAAyB0F,qCAErD1F,EAAA2F,gBAAkB,GAAG3F,EAAyBoF,iCAE9CpF,EAAA4F,qBAAuB,GAAG5F,EAAyB2F,yBAEnD3F,EAAA6F,eAAiB,GAAG7F,EAAyBoF,gCAE7CpF,EAAAiE,kBAAoB,GAAGjE,EAAyB6F,8BAEhD7F,EAAAuF,gBAAkB,GAAGvF,EAAyBoF,iCAE9CpF,EAAAsF,wBAA0B,GAAGtF,EAAyB2F,4BA2TjF,6KC9YO,MAAMG,EAAgGn2C,IAAQ,IAAAo2C,EAAAC,EAAAC,EACjH,IAAKt2C,EAAM2yC,mBACP,OAAO,KAGX,MAAM4C,EAAmC,QAAnBa,EAAGp2C,EAAMwxC,kBAAU,IAAA4E,EAAAA,EAAIp2C,EAAM4yC,gCAE7CmD,EAAqB3hC,IACvBi8B,EAAAA,yBAAyBoF,uBACzBF,EAAmB,GAAK,GAAGlF,EAAAA,yBAAyBoF,qCAGxD,OACIx1C,EAAAA,cAAC+qB,EAAAA,OAAM/hB,OAAAC,OAAA,GAAKlJ,EAAM4iB,aACd3iB,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAWmwC,EAAAA,yBAAyB0F,oBACtC91C,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAW61C,GACb91C,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAW,GAAGmwC,EAAAA,yBAAyBoF,2CACzCx1C,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKlJ,EAAMyyC,gBACZxyC,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAWmwC,EAAAA,yBAAyB2F,iBACtC/1C,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAWmwC,EAAAA,yBAAyB4F,sBACtCh2C,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAW,GAAGmwC,EAAAA,yBAAyB4F,+BAC7Ch2C,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAW,GAAGmwC,EAAAA,yBAAyB4F,mCACxCj2C,EAAM6B,UAAU00C,oCAErBt2C,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAW,GAAGmwC,EAAAA,yBAAyB4F,kCACxCj2C,EAAMgzC,kBAKvB/yC,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAWmwC,EAAAA,yBAAyB6F,eAAgBxyB,IAAI,SAC1DzjB,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,GAAGwjB,IAAI,SACnBzjB,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAWmwC,EAAAA,yBAAyBiE,kBAAmB5wB,IAAI,MACtC,QAD0C2yB,EAChEr2C,EAAMmzC,wBAAgB,IAAAkD,OAAA,EAAtBA,EAAwB5rC,KAAI+rC,GAErBv2C,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,GAAGwjB,IAAI,KAAK9Y,IAAK4rC,EAAKjG,YAAYM,QAC7C2F,EAAK3B,2BACL2B,EAAK3xB,gBAIjB7kB,EAAMqzC,yBAEXpzC,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAWmwC,EAAAA,yBAAyBiE,kBAAmB5wB,IAAI,MACtC,QAD0C4yB,EAChEt2C,EAAMmzC,wBAAgB,IAAAmD,OAAA,EAAtBA,EAAwB7rC,KAAI+rC,GAErBv2C,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,GAAGwjB,IAAI,KAAK9Y,IAAK4rC,EAAKjG,YAAYM,QAC7C5N,EAAAA,GAAiB7oB,UAAYo8B,EAAKzB,iBAAc7vC,SAQ7EjF,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAWmwC,EAAAA,yBAAyBuF,iBACrC51C,EAAM2zC,eACN3zC,EAAMyzC,wBAId,EAIjB,oLClDYgD,kCAAZ,SAAYA,GACRA,EAAAA,EAAA,eACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,kBACAA,EAAAA,EAAA,iBACH,CAVD,CAAYA,IAAAA,EAA2B,KAehC,MAAMC,UAA6Bz2C,IAAAA,cAC9BwW,2BAA2BzR,GAC/B,OAAIyd,EAAAA,iBAAiBC,kBAAkB1d,EAAQ2xC,eACpC,KAIP12C,IAAAA,cAAA,YACK+E,EAAQ4xC,aACR5xC,EAAQ2xC,cAGrB,CAEQlgC,2BAA2BzR,GAAuB,IAAA6xC,EACtD,OAAIp0B,EAAAA,iBAAiBq0B,WAAsC,QAA5BD,EAAC7xC,EAAQ+xC,2BAAmB,IAAAF,OAAA,EAA3BA,EAA6BG,aAClD,KAGJ/2C,IAAAA,cAAA,YAAO+E,EAAQ+xC,oBAAqBC,cAC/C,CAEQvgC,0BAA0BzR,GAC9B,OAAIyd,EAAAA,iBAAiBC,kBAAkB1d,EAAQiyC,cACpC,KAGJh3C,IAAAA,cAAA,YAAO+E,EAAQiyC,aAC1B,CAEQxgC,0BAA0BzR,GAC9B,OAAIyd,EAAAA,iBAAiBC,kBAAkB1d,EAAQkyC,YACpC,KAGJj3C,IAAAA,cAAA,YAAO+E,EAAQkyC,WAC1B,CAEQzgC,uBAAuBzR,GAC3B,OAAIyd,EAAAA,iBAAiBC,kBAAkB1d,EAAQmyC,WACpC,KAIJl3C,IAAAA,cAAA,QAAMiG,yBAAyBkxC,EAAAA,EAAAA,IAAgBpyC,EAAQmyC,YAClE,CAEA72C,YAAmBN,GACfO,MAAMP,EACV,CAEOyI,SAAM,IAAA4uC,EACT,MAAMC,EAAgBr1C,KAAKjC,MAAMs3C,cACjC,GAAI70B,EAAAA,iBAAiBC,kBAAkB40B,GACnC,OAAO,KAGX,OAAQA,EAAcC,eAClB,KAAKd,EAA4Be,KAE7B,OAAOv3C,IAAAA,cAAA,aACX,KAAKw2C,EAA4BgB,SAC7B,OAAOf,EAAqBgB,oBAAoBJ,GACpD,KAAKb,EAA4BkB,SAC7B,OAAOjB,EAAqBkB,oBAAoBN,GACpD,KAAKb,EAA4BoB,QAC7B,OAAOnB,EAAqBoB,mBAAmBR,GACnD,KAAKb,EAA4BsB,QAC7B,OAAOrB,EAAqBsB,mBAAmBV,GACnD,KAAKb,EAA4Bt0B,KAC7B,OAAOu0B,EAAqBuB,gBAAgBX,GAChD,KAAKb,EAA4ByB,QAC7B,OAAOj2C,KAAKk2C,qBAAqBb,GACrC,KAAKb,EAA4B2B,MAE7B,OADAn2C,KAAKjC,MAAMqF,UAAUoT,QAAQ,oEACtB,KACX,KAAKg+B,EAA4BjH,MAE7B,OADAvtC,KAAKjC,MAAMqF,UAAUoT,QAAQ,oEACtB,KACX,QAEI,OADAxW,KAAKjC,MAAMqF,UAAUoT,QAAQ,kCAA6D,QAA7D4+B,EAAkCC,EAAcC,qBAAa,IAAAF,EAAAA,EAAI,2BACvF,KAEnB,CAEQc,qBAAqBnzC,GACzB,OAAIA,EAAQqzC,aACDp4C,IAAAA,cAAA,YAAOgC,KAAKjC,MAAM6B,UAAUy2C,+CAEhCr4C,IAAAA,cAAA,YAAOgC,KAAKjC,MAAM6B,UAAU02C,+CACvC,gBCxGJ,MAAMC,EACFx4C,IAEA,MAAMoJ,GAAUqvC,EAAAA,EAAAA,cAAY,KACxBz4C,EAAMgrC,eAAehrC,EAAM6wC,OAAO,GACnC,CAAC7wC,KAEE,UAAEE,GAAcF,EAEtB,OAAOC,IAAAA,cAACkU,EAAAA,OAAM,CAACjU,UAAWA,EAAW6N,MAAO/N,EAAM6B,UAAU62C,gDAAiDtvC,QAASA,GAAW,EAQxH0rC,EACT90C,GACCC,IAAAA,cAAoBu4C,EAA+Cx4C,qICU5D24C,EA2FAC,swBA3FZ,SAAYD,GACRA,EAAA,YACAA,EAAA,eACH,CAHD,CAAYA,IAAAA,EAAa,KA2FzB,SAAYC,GACRA,EAAAA,EAAA,eACAA,EAAAA,EAAA,gBACH,CAHD,CAAYA,IAAAA,EAAwB,KAQ7B,MAAMC,UAA0B54C,IAAAA,UA8FnCK,YAAmBN,GACfO,MAAMP,GAmJO,KAAA84C,gCAAkC,KAAW,IAAAhI,EAC1DC,EAAAA,GAAuBC,SAAS/uC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApCosC,EAAE7uC,KAAKjC,MAAMiX,KAAKg6B,0BAAkB,IAAAH,OAAA,EAAlCA,EAAoCjtC,QAAQ+tC,WACxG3vC,KAAKwB,SAAS,CAAE4tC,aAAc,IAAK,EAMtB,KAAA0H,4BAA8B,KAAW,IAAAC,EAEtD,GAAwB,QAAxBA,EAAI/2C,KAAKg3C,uBAAe,IAAAD,GAApBA,EAAsBlxC,QAAS,CAC/B,MAAMoxC,EAAyDj3C,KAAKg3C,gBAAgBnxC,QAAQqxC,uBACxFN,EAAkBO,sBAElB72C,EAAAA,gBAAgBC,YAAY62C,MAAMC,KAAKJ,MACnC/+B,EAAAA,GAASC,WAAawb,SAAS2jB,gBAAgBC,UANtC,EAOTN,EAA4B,GAAGO,UAAUnqC,IAAIupC,EAAkBa,4BAE/DR,EAA4B,GAAGO,UAAU3pB,OAAO+oB,EAAkBa,4BAA2B,GA+B5F,KAAAC,cAAiBr2C,IAAwC,IAAAs2C,EAC5C,QAA1BA,EAAA33C,KAAK43C,6BAAqB,IAAAD,GAAS,QAATA,EAA1BA,EAA4B9xC,eAAO,IAAA8xC,GAAnCA,EAAqCE,SAAS,CAAEC,IAAKz2C,EAAM02C,cAAcR,UAAWS,KAAM32C,EAAM02C,cAAcE,aAC9Gj4C,KAAKk4C,qBAAqB,EAQb,KAAAC,mBAAsBC,IAAuC,IAAAC,EAAAC,EAAAC,EAC1E,MAAMC,EAAoC,QAA3BH,EAAGr4C,KAAKy4C,2BAAmB,IAAAJ,OAAA,EAAxBA,EAA0BxyC,QAC5C,IAAK2yC,EACD,OAGJ,IAKIE,EALAC,EAAoC,QAA3BL,EAAGt4C,KAAK44C,2BAAmB,IAAAN,GAAS,QAATA,EAAxBA,EAA0BzyC,eAAO,IAAAyyC,OAAA,EAAjCA,EAAmCO,iBACjC51C,IAAd01C,IACAA,EAAY34C,KAAK84C,iBAIrB,MAAMC,EAAiBC,KAAKC,KAAKT,EAAUP,YAC3C,GAAIG,IAAczB,EAAyBqB,KAAM,CAC7CU,EAAkBK,EAAiBJ,EACnC,MAAMO,EAAkB,EACxBR,EAAkBM,KAAKxtC,IAAIktC,EAAiBQ,EAAiB,KAC1D,CACH,MAAMC,EAAYX,EAAUY,YAAcZ,EAAUK,YACpDH,EAAkBK,EAAiBJ,EACnCD,EAAkBM,KAAKruC,IAAI+tC,EAAiBS,EAAW,CAGvDjhC,EAAAA,GAASC,WAAkE,SAA1B,QAA3BogC,EAAA5kB,SAAS0lB,KAAKC,qBAAa,IAAAf,OAAA,EAA3BA,EAA6BgB,aAAa,UAChEb,GAAmBA,GAGvBF,EAAUX,SAAS,CACfC,IAAKU,EAAUjB,UACfS,KAAMU,IAGV14C,KAAKwB,UAAS0tC,IACV,QAA6CjsC,IAAzCisC,EAAcsK,uBACd,MAAO,CAAC,EAEZ,IAAIC,EAAS,EAIb,OAHIrB,IAAczB,EAAyBqB,OACvCyB,GAAU,GAEP,CACHD,uBAAwBtK,EAAcsK,uBAAyBC,EAC/DC,qBAAsBC,KAAKC,MAC3BC,wBAAoB52C,EACvB,IAGLjD,KAAKk4C,qBAAqB,EAOb,KAAA4B,qBAAuB,KAAK,IAAAC,EACrC7hC,EAAAA,GAASC,WAAkE,SAA1B,QAA3B4hC,EAAApmB,SAAS0lB,KAAKC,qBAAa,IAAAS,OAAA,EAA3BA,EAA6BR,aAAa,QAChEv5C,KAAKm4C,mBAAmBxB,EAAyBqD,OAEjDh6C,KAAKm4C,mBAAmBxB,EAAyBqB,KAAM,EAQ9C,KAAAiC,iBAAmB,KAAK,IAAAC,EACjChiC,EAAAA,GAASC,WAAkE,SAA1B,QAA3B+hC,EAAAvmB,SAAS0lB,KAAKC,qBAAa,IAAAY,OAAA,EAA3BA,EAA6BX,aAAa,QAChEv5C,KAAKm4C,mBAAmBxB,EAAyBqB,MAEjDh4C,KAAKm4C,mBAAmBxB,EAAyBqD,MAAO,EAO/C,KAAAlB,cAAgB,KAAa,IAAAqB,EAC1C,MAAM3B,EAAoC,QAA3B2B,EAAGn6C,KAAKy4C,2BAAmB,IAAA0B,OAAA,EAAxBA,EAA0Bt0C,QACtCktC,GAAW/yB,EAAAA,EAAAA,UAAS,CAAE1N,QAAS0gC,EAAAA,YAAYC,QAASrwC,QAAS5C,KAAKjC,MAAM6E,QAAQH,UACtF,IAAIk2C,EAAoB,IAcxB,MAZiB,OAAb5F,GAAqByF,EACrBG,EAAYH,GAAaA,EAAUK,YAAc,EAC5B,OAAb9F,GAAkC,OAAbA,IAAsByF,EAG/CA,IACAG,EAAYH,GAAaA,EAAUK,YAAc,GAHrDF,EAAYH,GAAaA,EAAUK,YAAc,EAOrDF,EAAYK,KAAKoB,MAAMzB,GAEhBA,CAAS,EAMH,KAAAT,oBAAsB,KAAK,IAAAmC,EAAAC,EACxC,MAAM9B,EAAoC,QAA3B6B,EAAGr6C,KAAKy4C,2BAAmB,IAAA4B,OAAA,EAAxBA,EAA0Bx0C,QAC5C,IAAK2yC,EACD,OAGJ,MACMW,EAAYX,EAAUY,YAAcZ,EAAUK,YAC9CE,EAAiBC,KAAKC,KAAKT,EAAUP,YAEvC//B,EAAAA,GAASC,WAAkE,SAA1B,QAA3BmiC,EAAA3mB,SAAS0lB,KAAKC,qBAAa,IAAAgB,OAAA,EAA3BA,EAA6Bf,aAAa,SAC5DR,GALuB,EAMnB/4C,KAAKu6C,yBACLv6C,KAAKu6C,wBAAyB,EAC9Bv6C,KAAKw6C,eAEDx6C,KAAKu6C,yBACbv6C,KAAKu6C,wBAAyB,EAC9Bv6C,KAAKw6C,eAGLzB,GAAkBI,EACdn5C,KAAKy6C,6BACLz6C,KAAKy6C,4BAA6B,EAClCz6C,KAAKw6C,eAEDx6C,KAAKy6C,6BACbz6C,KAAKy6C,4BAA6B,EAClCz6C,KAAKw6C,iBAGLzB,GAzBuB,EA0BnB/4C,KAAKy6C,6BACLz6C,KAAKy6C,4BAA6B,EAClCz6C,KAAKw6C,eAEDx6C,KAAKy6C,6BACbz6C,KAAKy6C,4BAA6B,EAClCz6C,KAAKw6C,eAGLzB,GAAkBI,EACdn5C,KAAKu6C,yBACLv6C,KAAKu6C,wBAAyB,EAC9Bv6C,KAAKw6C,eAEDx6C,KAAKu6C,yBACbv6C,KAAKu6C,wBAAyB,EAC9Bv6C,KAAKw6C,eAAa,EASb,KAAA7L,uBAA0BC,IAAwB,IAAAc,EAC/DZ,EAAAA,GAAuBC,SAAS/uC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApCitC,EAAE1vC,KAAKjC,MAAMiX,KAAKg6B,0BAAkB,IAAAU,OAAA,EAAlCA,EAAoC9tC,QAAQqtC,eAAeL,GACvH5uC,KAAKwB,UAAS0tC,IAAgB,IAAAC,EAC1B,IAAIuL,EAAqBxL,EAAcsK,uBAIvC,OAHIkB,IAAuB16C,KAAKu6C,wBAA0Bv6C,KAAKy6C,6BAC3DC,GAAsB,GAEnB,CACHtL,aAAwC,QAA5BD,EAAED,EAAcE,oBAAY,IAAAD,OAAA,EAA1BA,EAA4B1hC,QAAOnD,GAAQA,EAAKskC,SAAWA,IACzE8K,qBAAsBC,KAAKC,MAC3BC,wBAAoB52C,EACpBu2C,uBAAwBkB,EAC3B,GACH,EA2BW,KAAAC,eAAkB/L,GAAmB,KAClD5uC,KAAK46C,oBAAsBhM,EAE3B5uC,KAAKwB,SAAS,CACVk4C,qBAAsBC,KAAKC,MAC3BC,mBAAoBjL,GACtB,EAQW,KAAAiM,gBAAmBjM,GAAmB,KAC/C5uC,KAAK46C,sBAAwBhM,IAIjC5uC,KAAK46C,yBAAsB33C,EAC3BwJ,KAAS,KACLzM,KAAKwB,SAAS,CACVk4C,qBAAsBC,KAAKC,MAC3BC,wBAAoB52C,GACtB,GACH,IAAG,EAuHO,KAAA63C,QAAU,KACvB,MAAMC,GAAoBnkC,EAAAA,EAAAA,IAAW,OAAQ5W,KAAKjC,MAAM6E,QAAQJ,gBAAkB,GACxD,KAAtBmxB,SAASqnB,SACT91C,OAAOC,SAASkT,KAAO0iC,EAEvB71C,OAAO+1C,QAAQC,MAAO,EAtiB1Bl7C,KAAK4vC,YAAc,GAAGgH,EAAkB34C,aAAa+B,KAAKjC,MAAM0C,MAAM+qC,EAAAA,OAAOC,KAAKC,iBAElF1rC,KAAKzB,MAAQ,CACT6wC,kBAAcnsC,EACdy2C,qBAAsBC,KAAKC,MAC3BC,wBAAoB52C,EACpBu2C,uBAAwB,GAG5Bx5C,KAAKg3C,gBAAkBh5C,IAAAA,YACvBgC,KAAK43C,sBAAwB55C,IAAAA,YAC7BgC,KAAKy4C,oBAAsBz6C,IAAAA,YAC3BgC,KAAK44C,oBAAsB56C,IAAAA,WAC/B,CA3DQwW,kCAAkC9V,GACtC,MAAMy8C,EAAiBz8C,EAAS8J,KAAIzF,IAAO,IAAAq4C,EAAA,OAA0B,QAA1BA,EAAIr4C,EAAQo4C,sBAAc,IAAAC,OAAA,EAAtBA,EAAwBC,kBAAkB,IACnFC,EAAsCh7C,EAAAA,gBAAgBi7C,QAAQJ,GAG9DK,EAAqBl7C,EAAAA,gBAAgBm7C,YACvCH,EACK7tC,QAAO4nC,GAHY,IAGKA,EAAcqG,mBACtClzC,KAAI6sC,GAAiBA,EAAcxsC,QAEtC8yC,EAA2Br7C,EAAAA,gBAAgBs7C,OAAOJ,GAKxD,OAJ6Bl7C,EAAAA,gBAAgBm7C,YACzCE,EAAyBnzC,KAAIvI,GAAQq7C,EAAkB/sC,MAAK8mC,GAAiBA,EAAcxsC,OAAS5I,MAI5G,CAEQuU,8BAA8B9V,GAClC,MAAM6E,EAAa7E,EAAS8J,KAAIzF,GAAWA,EAAQqlB,YAAYub,aACzDkY,EAAoCv7C,EAAAA,gBAAgBi7C,QAAQh4C,GAAYkK,QAC1EF,IAAciT,EAAAA,iBAAiBC,kBAAkBlT,EAAUuB,kBAGzDgtC,EAAex7C,EAAAA,gBAAgBm7C,YAAYI,EAAcrzC,KAAI+E,GAAaA,EAAUC,sBAG1F,OAF2BlN,EAAAA,gBAAgBs7C,OAAOE,EAGtD,CAEQtnC,iCAAiCzR,GACrC,OAAI+X,EAAAA,iBAAiBC,mBAAmBhY,aAAO,EAAPA,EAASuwB,aACtC,KAEJt1B,IAAAA,cAAA,KAAGC,UAAW,GAAG24C,EAAkB34C,0BAA2B8E,EAASuwB,YAClF,CAEQ9e,qCACJ,MAAO,CACHvW,UAAW24C,EAAkBmF,mBAErC,CAoBO91C,oBAAiB,IAAA6pC,EACpB9vC,KAAK+vC,gBACLjB,EAAAA,GAAuBC,SAAS/uC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApCqtC,EAAE9vC,KAAKjC,MAAMiX,KAAKg6B,0BAAkB,IAAAc,OAAA,EAAlCA,EAAoCluC,QAAQouC,kBAAkBC,UACtH,CACIC,WAAYlwC,KAAK4vC,YAKjBO,QAASA,KAELnwC,KAAK+vC,eAAe,IAI5B73B,EAAAA,GAASC,WACTjT,OAAOib,iBAAiB,UAAU,KAC9BngB,KAAK82C,6BAA6B,IAG1C92C,KAAK82C,6BACT,CAEO12B,uBAAoB,IAAAgwB,EACvBtB,EAAAA,GAAuBC,SACnB/uC,KAAKjC,MAAM6E,QAAQH,QACe,QADR2tC,EAC1BpwC,KAAKjC,MAAMiX,KAAKg6B,0BAAkB,IAAAoB,OAAA,EAAlCA,EAAoCxuC,QACtCouC,kBAAkBK,YAAYrwC,KAAK4vC,YACzC,CAEOvpC,sBACHC,EACAC,GAEA,OAAIvG,KAAKzB,MAAM6wC,eAAiB7oC,EAAU6oC,cAAgBpvC,KAAKjC,QAAUuI,IAKrEtG,KAAKzB,MAAMs7C,qBAAuBtzC,EAAUszC,oBAC5C75C,KAAKzB,MAAMi7C,yBAA2BjzC,EAAUizC,uBAExD,CAEOhzC,SAAM,IAAA8pC,EAAAC,EACT,MAAMlpC,EAAST,EAAAA,EAAA,GACR5G,KAAKjC,OAAK,IACb4iB,YAAa,CACTA,YAAa3gB,KAAKjC,MAClBE,UAAW24C,EAAkB34C,WAEjC+9C,+BAAgCh8C,KAAK62C,gCACrCnG,oBAAoB,EACpBuL,gBAAgB,EAChBh8B,QAASjgB,KAAKk8C,iBACdC,QAASn8C,KAAKo8C,iBACd1K,eAAgB1xC,KAAK2xC,wBACrB0K,wBAAyBzF,EAAkB0F,8BAC3CC,gBAAiBv8C,KAAKw8C,yBACtBC,YAAaz8C,KAAK08C,qBAClBC,eAAgB38C,KAAK48C,8BACrBC,gBACI7+C,IAAAA,cAAA,OAAKC,UAAW,GAAG24C,EAAkB34C,8BAA+B+B,KAAKjC,MAAMsvB,MAAMyvB,+BAIvF1N,EAAsC,QAA1BkB,EAAGtwC,KAAKzB,MAAM6wC,oBAAY,IAAAkB,EAAAA,EAAItwC,KAAK+8C,qCAAiE,QAA7BxM,EAACvwC,KAAKjC,MAAMiX,KAAKo6B,oBAAY,IAAAmB,OAAA,EAA5BA,EAA8B3uC,QACxH,QAAqBqB,IAAjBmsC,EACA,OAAOpvC,KAAKjC,MAAM+iB,WAAWzZ,GAIjC,IADuBrH,KAAKjC,MAAM6E,QAAQH,QAAQ6xB,QAAQ0oB,mBAClC18C,EAAAA,gBAAgBC,YAAY6uC,GAEhD,OADA/nC,EAAU40C,gBAAiB,EACpBj8C,KAAKjC,MAAM+iB,WAAWzZ,GAG7B/G,EAAAA,gBAAgBC,YAAY6uC,KAC5B/nC,EAAU41C,iBAAmBj9C,KAAKjC,MAAM6B,UAAUs9C,2BAA2Bn5C,QAAQ,MAAOqrC,EAAavtC,OAAOwC,aAGpHrE,KAAKk4C,sBACL,MAAMiF,EAAuBn9C,KAAKmxC,qBAAqB/B,GACjDgO,EAAwBp9C,KAAKq9C,yBAAyBjO,GACtDkO,EAYA,GA4BN,OA3BAF,SAAAA,EAAuB50C,KAAI+E,IACvB,MAAMmlC,EAAiB1yC,KAAKu9C,0BAA0BhwC,EAAW4vC,GAEjE,OADAG,EAAsBnsB,KAAKuhB,GACpB4K,CAAqB,IAEhCj2C,EAAUqpC,oBAAqB,EAC/BrpC,EAAUm2C,eAAiBx9C,KAAKg3C,gBAChC3vC,EAAUo2C,qBAAuBz9C,KAAK43C,sBACtCvwC,EAAUq2C,mBAAqB19C,KAAKy4C,oBACpCpxC,EAAUs2C,mBAAqB39C,KAAK44C,oBACpCvxC,EAAUqyC,qBAAuB15C,KAAKzB,MAAMm7C,qBAC5CryC,EAAUwyC,mBAAqB75C,KAAKzB,MAAMs7C,mBAC1CxyC,EAAUu2C,0BAA4B59C,KAAKy6C,2BAC3CpzC,EAAUw2C,sBAAwB79C,KAAKu6C,uBACvClzC,EAAUmyC,uBAAyBx5C,KAAKzB,MAAMi7C,uBAC9CnyC,EAAUy2C,oBAAsB99C,KAAK85C,qBACrCzyC,EAAU02C,gBAAkB/9C,KAAKi6C,iBACjC5yC,EAAU22C,aAAeh+C,KAAK03C,cAC9BrwC,EAAU42C,cAAgBj+C,KAAK26C,eAC/BtzC,EAAU62C,eAAiBl+C,KAAK66C,gBAChCxzC,EAAUkqC,sBAAwBvxC,KAAK2uC,uBACvCtnC,EAAU6pC,iBAAmBiM,EAC7B91C,EAAU82C,mBAAqBvH,EAAkBwH,uBAAuBhP,GACxE/nC,EAAUg3C,gBAAkBf,EAC5Bj2C,EAAUi3C,qBAAuB1H,EAAkB2H,2BAA2BnP,GAC9E/nC,EAAUm3C,oBAAsBx+C,KAAKy+C,uBAAuBp3C,EAAUi3C,qBAAsBj3C,EAAU6pC,kBAE/FlxC,KAAKjC,MAAM+iB,WAAWzZ,EACjC,CA6BQ01C,qCACJzO,GAAqD,IAAAsD,EAErD,MAAMltC,GAAY4D,EAAAA,EAAAA,IAAatI,KAAKjC,MAAM6E,QAAQH,UAClD8F,EAAAA,EAAAA,mBAAkB7D,GAElB,OAD0F,QAAlEktC,EAAGtD,aAAW,EAAXA,EAAa7gC,QAAO1K,GAAWA,EAAQ2B,YAAcA,WAAU,IAAAktC,EAAAA,OAAI3uC,CAElG,CAEQV,sBAAmB,IAAAsvC,EACvB,MAAM73B,EAAQ80B,EAAAA,GAAuBC,SAAS/uC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApCovC,EAAE7xC,KAAKjC,MAAMiX,KAAKg6B,0BAAkB,IAAA6C,OAAA,EAAlCA,EAAoCjwC,QAAQoY,MAChHrV,EAAQ,IAAI+5C,EAAAA,GAAoC1kC,GACtD,IAAIs0B,QACEqQ,EAAAA,EAAAA,IAAqCh6C,EAAO3E,KAAKjC,MAAM6E,QAAQJ,eAAeb,MAAK2I,IACrFgkC,EAAchkC,CAAI,IAEtB,MAAM0nC,EAAyBhyC,KAAK+8C,qCAAqCzO,GACzEtuC,KAAKwB,SAAS,CAAE4tC,aAAc4C,GAClC,CAmMQ4M,iBAAiB77C,GAAmC,IAAA87C,EACxD,MAAMC,EAAgBx+C,EAAAA,gBAAgBC,YAAYP,KAAKjC,MAAMsvB,MAAM0xB,YAAc/+C,KAAKjC,MAAMsvB,MAAM0xB,WAAW,GAAK,KAClH,GAAIv+B,EAAAA,iBAAiBC,kBAAkBq+B,GACnC,OAAO,KAGX,MAAMjyC,EAAmD,QAAjCgyC,EAAG97C,EAAQqlB,YAAYub,kBAAU,IAAAkb,OAAA,EAA9BA,EAAgCpxC,QAAOF,IAAS,IAAA8E,EAAA,OAA4B,QAA5BA,EAAI9E,EAAUuB,sBAAc,IAAAuD,OAAA,EAAxBA,EAA0BE,KAAK,IAE9G,OAAOvU,IAAAA,aAAmB8gD,EAAqC,CAC3DE,kBAAmBj8C,EAAQqlB,YAAYplB,SACvC6J,sBAER,CAyCQ+/B,oBAAoB3uC,EAAmB8E,GAAuB,IAAAyN,EAAAC,EAClE,MACI7N,SACIJ,eACIoO,gBAAgB,YAAElO,IAEtBD,SACIkP,KAAK,iBAAEC,MAGf5R,KAAKjC,MAET,GAAIyiB,EAAAA,iBAAiBC,kBAAkB1d,GACnC,OAGJ,MAAMk8C,EAAwB,kBACxBjgD,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG8/C,EAAuB7/C,EAAG,EAAGC,EAAG,GACzCC,GAAI,CAAEH,EAAG8/C,EAAuB7/C,EAAG,EAAGC,EAAG,GACzCE,GAAI,CAAEJ,EAAG8/C,EAAuB7/C,EAAG,EAAGC,EAAG,IAE7CG,UAAU,GAGd,OACIxB,IAAAA,cAACoT,EAAAA,GAAK,CACFC,QAAStO,aAAO,EAAPA,EAAS8F,KAClBF,IAAK5F,EAAQ8F,KACbyI,IAA4B,QAAzBd,EAAEzN,EAAQwO,uBAAe,IAAAf,EAAAA,EAAI,GAChCgB,YAA+E,QAApEf,GAAEgB,EAAAA,EAAAA,qBAAoB1O,EAAQ2O,OAAQhP,EAAakP,UAAiB,IAAAnB,EAAAA,EAAI,GACnFI,aAAc7Q,KAAKjC,MAAM6E,QAAQH,QAAQoO,aACzCvJ,cAAetI,EACf6S,oBAAoB,QACpB5T,UAAWA,EACX2S,eAAgB5Q,KAAKjC,MAAM6E,QAAQJ,cAAcoO,gBAG7D,CAEQsuC,qBAAqBtQ,GACzB,MAAMuQ,EAAqBn/C,KAAKzB,MAAMs7C,qBAAuBjL,EAC7D,IAAImF,EAAkB6C,EAAkBwI,yBAIxC,OAHID,IACApL,EAAkB5hC,IAAW4hC,EAAiB,uCAE3C,CACH91C,UAAW81C,EACXprC,IAAK,GAAGorC,cAA4BnF,KAAU5uC,KAAKzB,MAAMs7C,sBAAsB75C,KAAKzB,MAAMi7C,yBAC1F6F,aAAcr/C,KAAK26C,eAAe/L,GAClC0Q,aAAct/C,KAAK66C,gBAAgBjM,GAE3C,CAEQ2Q,mBAAmB3Q,GACvB,MAAMuQ,EAAqBn/C,KAAKzB,MAAMs7C,qBAAuBjL,EAC7D,IAAI4Q,EAAgB5I,EAAkB6I,mBAItC,OAHIN,IACAK,EAAgBrtC,IAAWqtC,EAAe,uCAEvC,CACHvhD,UAAWuhD,EACX72C,IAAK,GAAG62C,cAA0B5Q,KAAU5uC,KAAKzB,MAAMs7C,qBACvDwF,aAAcr/C,KAAK26C,eAAe/L,GAClC0Q,aAAct/C,KAAK66C,gBAAgBjM,GACnC1uC,KAAM,WACN8L,SAAU,EAElB,CAEQ0zC,qBAAqBC,GAAuB,IAAAC,EAChD,GAAIp/B,EAAAA,iBAAiBC,kBAAkBk/B,aAAM,EAANA,EAAQE,eAC3C,OAAO,KAGX,MAAMC,EAAcH,EAIpB,OACI3hD,IAAAA,cAAC+hD,EAAAA,gBAAe,CACZC,UAAWF,EAAYD,cACvBI,UAAQ,EACRn5C,WAAWo5C,EAAAA,EAAAA,QAAOlgD,KAAKjC,MAAM6B,UAAUugD,4CAA6CL,EAAYD,cAAe,KAC/GO,YAAa,GAA2B,QAA3BR,EAAGE,EAAYO,oBAAY,IAAAT,EAAAA,EAPpB,IAQpBU,iCAA+B,EAC/BtrC,KAAM,CAAC,EACPpS,QAAS5C,KAAKjC,MAAM6E,QACpBnC,GAAIT,KAAKjC,MAAM0C,GACfoY,SAAU7Y,KAAKjC,MAAM8a,UAGjC,CAEQ+jC,8BACJ,OACI5+C,IAAAA,cAACkU,EAAAA,OAAMlL,OAAAC,OAAA,CACHhJ,UAAU,uCACN+B,KAAKjC,MAAMqF,UAAS,CACxBlD,KAAK,SACLmY,KAAK,IACLlR,QAASnH,KAAK86C,QACdhvC,MAAO9L,KAAKjC,MAAM6B,UAAU2gD,sBAE3BvgD,KAAKjC,MAAM6B,UAAU2gD,oBAGlC,CAgBQC,kBAAkBC,GACtB,OAAIA,IAAgBC,EAAAA,qBAAqBC,MAC9B3gD,KAAKjC,MAAM6B,UAAUghD,2CAE5BH,IAAgBC,EAAAA,qBAAqBG,KAC9B7gD,KAAKjC,MAAM6B,UAAUkhD,0CAG5BL,IAAgBC,EAAAA,qBAAqBK,MAC9B/gD,KAAKjC,MAAM6B,UAAUohD,gDADhC,CAIJ,CAEQzD,0BAA0BkD,EAAqB/hD,GACnD,MAAMuiD,EAAqB,GAAGrK,EAAkBsK,qCAAqCT,IAC/EU,EAAuBnhD,KAAKwgD,kBAAkBC,GAC9C1zC,GAAgB4lC,EAAAA,EAAAA,6CAA4C8N,GAClE,IAAIW,EAAyB1K,EAAcx2B,KAE3C,MAAMmhC,EAAgErhD,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAOy8C,wBAEhGhhD,EAAAA,gBAAgBC,YAAY8gD,IAC3BA,SAAAA,EAAiCxuC,SAAS0uC,EAAAA,eAAehM,OAD1Dj1C,MAEA+gD,IAAAA,EAAiCxuC,SAAS9F,KAE1Cq0C,EAAyB1K,EAAc8K,QAG3C,MAAMC,EAAyB/iD,EAAS8J,KAAIk5C,IAAkB,IAAAC,EAC1D,IAEIC,EAFAr0C,EAAgC,GAChCs0C,EAAoB,GAEI,QAA5BF,EAAA3hD,KAAKjC,MAAMiX,KAAKo6B,oBAAY,IAAAuS,GAAQ,QAARA,EAA5BA,EAA8B//C,cAAM,IAAA+/C,GAApCA,EAAsCn5C,KAAIs5C,IACwD,IAADC,EAAAC,EAAzFF,EAAkB15B,YAAYplB,WAAa0+C,EAAgB3+C,QAAQqlB,YAAYplB,WAC/EuK,EAAoD,QAA3Cw0C,EAA+B,QAA/BC,EAAGF,EAAkBv+C,kBAAU,IAAAy+C,OAAA,EAA5BA,EAA8Bz+C,kBAAU,IAAAw+C,EAAAA,EAAI,IAE5D,OAAOx0C,CAAS,IAGhB6zC,IAA2B1K,EAAc8K,SACzCI,EACI5jD,IAAAA,cAAA,OAAKC,UAAU,2BACVsP,EAAU/E,KAAIy5C,GAEPjkD,IAAAA,cAAA,OACIC,UAAU,+BACV0K,IAAK,gCAAgC+4C,EAAgB3+C,QAAQ6rC,UAE5DqT,EAAergD,OAAO4G,KAAI05C,IAAgB,IAAAC,EACvC,IAAIC,EACJ,MAAMC,EA8BA,QA9BQF,EACVD,EAAc15C,KAAiB85C,IAAa,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACxC,IAAIC,GAA8B,EAClC,MAAMn2C,EAAmE,QAAjD01C,EAAGb,EAAgB3+C,QAAQqlB,YAAYub,kBAAU,IAAA4e,OAAA,EAA9CA,EAAgD90C,QACvEnD,GAAQA,EAAKkD,qBAAuB80C,EAAW90C,qBAEnDX,SAAAA,EAAoBrE,KAAIy6C,IAAoB,IAAAC,EAQxC,YANyCjgD,IAArCggD,EAAkBn0C,gBAClBm0C,EAAkBn0C,eAAeq0C,eACJ,QADeD,EACxCZ,EAAWxzC,sBAAc,IAAAo0C,OAAA,EAAzBA,EAA2BC,eAE/BH,GAAqB,GAElBA,CAAkB,IAGzBV,EAAW90C,qBAAuBizC,IAClC2B,EAAqBE,EAAW90C,oBAEpC,MAAM0C,EAAgBnD,EACtB,MAAO,CACH6hC,OAAQ,GAAsC,QAAtC4T,EAA4B,QAA5BC,EAAGH,EAAWxzC,sBAAc,IAAA2zC,OAAA,EAAzBA,EAA2Bz/C,gBAAQ,IAAAw/C,EAAAA,EAAI,MACvC,QADyCE,EAA6B,QAA7BC,EAAIL,EAAWxzC,sBAAc,IAAA6zC,OAAA,EAAzBA,EAClDpwC,aAAK,IAAAmwC,EAAAA,EAAI,KACf1hD,MAAuC,QAAlC4hD,EAA2B,QAA3BC,EAAEP,EAAWxzC,sBAAc,IAAA+zC,OAAA,EAAzBA,EAA2BtwC,aAAK,IAAAqwC,EAAAA,EAAI,GAC3C1yC,gBACAkzC,aAAuC,QAA3BN,EAAER,EAAWxzC,sBAAc,IAAAg0C,OAAA,EAAzBA,EAA2BO,aACzCC,SAAmC,QAA3BP,EAAET,EAAWxzC,sBAAc,IAAAi0C,OAAA,EAAzBA,EAA2BQ,SACrCC,UAAWR,EACd,WACH,IAAAb,EAAAA,EAAI,GACV,OAAIC,GAAsBA,IAAuB3B,EAEzCziD,IAAAA,cAACylD,EAAAA,gBAAe,CACZ96C,IAAK83C,EACL/9C,YAAa1C,KAAKjC,MAAM6E,QAAQH,QAAQC,YACxCsZ,KAAMqmC,EACNqB,oBAAoB,IAIzB,IAAI,SASnCtC,IAA2B1K,EAAcx2B,MACzC3S,EAAU/E,KAAI8B,GACHA,EAAK1I,OAAO4G,KAAIwR,GACZA,EAAMxR,KAAI05C,IACb,GAAIA,EAAc10C,qBAAuBizC,EAAa,CAAC,IAADkD,EAAAC,EAClD,MAAMC,EACY,KAAdhC,EACM7hD,KAAKjC,MAAM6B,UAAUkkD,0BACrB9jD,KAAKjC,MAAM6B,UAAUkkD,0BAA0B//C,QAAQ,IAAK,IACtE89C,IAAwB3B,EAAAA,EAAAA,QAAO2D,EAAmE,QAArCF,EAA8B,QAA9BC,EAAE1B,EAAcpzC,sBAAc,IAAA80C,OAAA,EAA5BA,EAA8BrxC,aAAK,IAAAoxC,EAAAA,EAAI,GAAI,CAE9G,OAAO9B,CAAS,QAMhC,MAAMkC,EAAiB,CACnB/gD,SAAU0+C,EAAgB3+C,QAAQqlB,YAAYplB,SAC9CuP,MAAOsvC,EACPsB,YAAa1C,EACb8C,SAAU7B,EAAgB3+C,QAAQqlB,YAAY7W,iBAGlD,MAAO,CACHwyC,iBACArC,kBACAsC,KACIhmD,IAAAA,cAAA,OAAK2K,IAAK,GAAG+4C,EAAgB3+C,QAAQ6rC,UAAUqS,KAC1CG,IAA2B1K,EAAc8K,OAASI,EAAemC,EAAexxC,OAG5F,IAEL,MAAO,CACHkuC,cACA1zC,cAAeo0C,EACfF,qBACAQ,yBAER,CACQhD,uBAAuBtD,EAAkCz8C,GAC7D,OAAOy8C,EAAe3yC,KAAI6sC,IACtB,MAAM4O,EAAyB,GAAGrN,EAAkBsN,6CAA6C7O,EAAcxsC,OAEzGs7C,EAAsBzlD,EAAS8J,KAAIk5C,IAAkB,IAAA0C,EACvD,MAAMC,EAA6D,QAAzCD,EAAG1C,EAAgB3+C,QAAQo4C,sBAAc,IAAAiJ,OAAA,EAAtCA,EAAwC/I,mBAAmB9sC,MACpF+1C,GAAyBA,EAAsBz7C,OAASwsC,EAAcxsC,OAG1E,MAAO,CACHw7C,uBACA3C,kBACAsC,KACIhmD,IAAAA,cAAA,OAAK2K,IAAK,GAAG+4C,EAAgB3+C,QAAQ6rC,UAAUqV,KAC3CjmD,IAAAA,cAACy2C,EAAAA,GAAoB,CACjBY,cAAegP,EACfjhD,UAAWpD,KAAKjC,MAAMqF,UACtBR,QAAS5C,KAAKjC,MAAM6E,QACpBhD,UAAWI,KAAKjC,MAAM6B,aAIrC,IAGL,MAAO,CACHy1C,gBACA4O,yBACAE,sBACH,GAET,CAEQjI,iBACJ,OAAOl+C,IAAAA,cAAC6iB,EAAAA,QAAO,CAAC5iB,UAAW,GAAG24C,EAAkB34C,oBAAqBiiB,KAAMlgB,KAAKjC,MAAM6B,UAAU2kD,wBACpG,CAEQnI,iBACJ,OAAOp+C,IAAAA,cAAA,OAAKC,UAAW,GAAG24C,EAAkB34C,sBAAuB+B,KAAKjC,MAAM6B,UAAU4kD,6BAC5F,CAEQ7S,wBACJ,OACI3zC,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAW,GAAG24C,EAAkBmF,uCAAsC,aAC1D/7C,KAAKjC,MAAM6B,UAAU6kD,yCACjCt9C,QAASnH,KAAK62C,iCAEb72C,KAAKjC,MAAM6B,UAAU8kD,oCAGlC,CAOQrH,yBAAyB3+C,GAC7B,MAAM6E,EAAa7E,EAAS8J,KAAIzF,GAAWA,EAAQqlB,YAAYub,aACzDkY,EAAoCv7C,EAAAA,gBAAgBi7C,QAAQh4C,GAE5Du4C,EAAex7C,EAAAA,gBAAgBm7C,YAAYI,EAAcrzC,KAAI+E,GAAaA,EAAUC,sBAG1F,OAF2BlN,EAAAA,gBAAgBs7C,OAAOE,EAGtD,CAEQU,yBACJ,OACIx+C,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAWkU,IAAWykC,EAAkB+N,sBAAuB,GAAG/N,EAAkB+N,mCACpFzkD,KAAK,SACLiH,QAASnH,KAAK85C,qBACd8K,QAAS5kD,KAAK85C,sBAEd97C,IAAAA,cAAA,QAAMC,UAAW,GAAG24C,EAAkB+N,wCAAuC,cAAc,SAC3F3mD,IAAAA,cAAA,QAAMC,UAAU,sBAAsB+B,KAAKjC,MAAM6B,UAAUilD,kCAGvE,CAEQnI,qBACJ,OACI1+C,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAWkU,IAAWykC,EAAkB+N,sBAAuB,GAAG/N,EAAkB+N,+BACpFzkD,KAAK,SACLiH,QAASnH,KAAKi6C,iBACd2K,QAAS5kD,KAAKi6C,kBAEdj8C,IAAAA,cAAA,QAAMC,UAAW,GAAG24C,EAAkB+N,oCAAmC,cAAc,SACvF3mD,IAAAA,cAAA,QAAMC,UAAU,sBAAsB+B,KAAKjC,MAAM6B,UAAUklD,8BAGvE,CAEQC,kCAAkCnW,GACtC,OACI5wC,IAAAA,cAAC60C,EAAAA,GAAmC,CAChC50C,UAAW,GAAG24C,EAAkBoO,8BAChCr8C,IAAKimC,EACLhvC,UAAWI,KAAKjC,MAAM6B,UACtBgvC,OAAQA,EACR7F,eAAgB/oC,KAAK2uC,uBACrB/rC,QAAS5C,KAAKjC,MAAM6E,QACpBnC,GAAIT,KAAKjC,MAAM0C,GACfoY,SAAU7Y,KAAKjC,MAAM8a,SACrB7D,KAAM,CAAC,GAGnB,CAEQm8B,qBAAqBzyC,GACzB,MAAMumD,GAAmB38C,EAAAA,EAAAA,IAAatI,KAAKjC,MAAM6E,QAAQH,SAEzD,OADA8F,EAAAA,EAAAA,mBAAkB08C,GACXvmD,EAAS8J,KAAIzF,IAChB,IAAImiD,EACJ,GAAIlkB,EAAAA,GAAiB7oB,UAAW,CAAC,IAADgtC,EAC5B,MAAMvqC,GAAaC,EAAAA,EAAAA,mBAAkB9X,EAAQqlB,YAAapoB,KAAKjC,MAAM6E,QAAQJ,eACvE2W,EAAU,IAAIf,IAAIwC,EAAY1V,OAAOC,SAASkT,OAChD4jB,EAAAA,EAAAA,IAAiBj8B,KAAKjC,MAAM6E,QAAQJ,cAAcoO,iBAClDuI,EAAQ8B,aAAaC,IAAI,YAAa,GAAGnY,EAAQ2B,aAEvB,QAA9BygD,EAAApiD,EAAQqlB,YAAYub,kBAAU,IAAAwhB,GAA9BA,EAAgC38C,KAAI+E,IAAY,IAAA63C,EAC5C,MAAM1S,EAAyC,QAA3B0S,EAAG73C,EAAUuB,sBAAc,IAAAs2C,OAAA,EAAxBA,EAA0B7yC,MACjD,IAAKuI,EAAAA,iBAAiBC,mBAAmB23B,GAAiB,CACtD,MAAM3lC,GAAgB4lC,EAAAA,EAAAA,6CAA4CplC,EAAUC,oBAC5E2L,EAAQ8B,aAAaC,IAAInO,EAAe2lC,EAAiB,KAGjEwS,EAAiB/rC,EAAQd,IAAK,CAElC,MAAM8mC,EAAqBn/C,KAAKzB,MAAMs7C,qBAAuB92C,EAAQ6rC,OACrE,IAAI4Q,EAAgB5I,EAAkBwI,yBAClCD,IACAK,EAAgBrtC,IAAWqtC,EAAe,uCAE9C,MAAM6F,EAAuBtiD,EAAQ2B,YAAcugD,EAE7C7S,EAAiC,GAAGwE,EAAkBoO,+CACtD1S,EAAwB,GAAGF,mBAC3BG,EAAuB,GAAGqE,EAAkBoO,oCAC5CM,EAAwB,GAAG1O,EAAkBoO,qCAC7CO,EAAevlD,KAAK84C,gBACpBjwB,EAAQ,CACV28B,MAAO,GAAGD,MACVE,SAAU,GAAGF,MACbG,SAAU,GAAGH,OAEjB,MAAO,CACHI,mBAAoB,CAChB1nD,UAAWuhD,EACX72C,IAAK5F,EAAQ6rC,OACb1tC,IAAKlB,KAAK44C,oBACVyG,aAAcr/C,KAAK26C,eAAe53C,EAAQ6rC,QAC1C0Q,aAAct/C,KAAK66C,gBAAgB93C,EAAQ6rC,QAC3C1uC,KAAM,WACN8L,SAAU,EACV6c,MAAOA,GAEX9lB,UACA6X,WAAYsqC,EACZtS,2BAA4B5yC,KAAK+kD,kCAAkChiD,EAAQ6rC,QAC3EhsB,aACI5kB,IAAAA,cAAA,OAAKC,UAAWm0C,EAAgCzpC,IAAK5F,EAAQ6rC,QACxD5uC,KAAK4sC,oBAAoB0F,EAAuBvvC,EAAQqlB,cAGjE0qB,YACI90C,IAAAA,cAAA,KAAGC,UAAWs0C,EAAsBl6B,KAAM6sC,EAAgBv8C,IAAK5F,EAAQ6rC,QAClE7rC,EAAQqlB,YAAYvf,MAG7B4G,aACIzR,IAAAA,cAAA,OAAKC,UAAWqnD,EAAuB38C,IAAK5F,EAAQ6rC,QAC/C7rC,EAAQiQ,OACLhV,IAAAA,cAACmmC,EAAAA,eAAc,CACXvhC,QAAS5C,KAAKjC,MAAM6E,QACpBnC,GAAIT,KAAKjC,MAAM0C,GACfoY,SAAU7Y,KAAKjC,MAAM8a,SACrB7D,KAAM,CAAEhC,MAAOjQ,EAAQiQ,OACvBuR,cAAevkB,KAAKjC,MAAM6B,UAAUgmD,sCACpCphC,kBAAmBxkB,KAAKjC,MAAM6B,UAAUimD,0CACxCphC,iBAAkBzkB,KAAKjC,MAAM6B,UAAUkmD,4CAKvDC,UAAW/lD,KAAK4+C,iBAAiB77C,GACjCsiD,uBACAW,yBACIhoD,IAAAA,cAACkU,EAAAA,OAAM,CAACmG,KAAM6sC,EAAgBp5C,MAAO9L,KAAKjC,MAAM6B,UAAUqmD,+CACrDjmD,KAAKjC,MAAM6B,UAAUqmD,+CAG9BC,eAAgBlmD,KAAKu/C,mBAAmBx8C,EAAQ6rC,QAChDuX,iBAAkBnmD,KAAKk/C,qBAAqBn8C,EAAQ6rC,QACpDwX,mBACuBnjD,IAAnBF,EAAQ48C,OAAuB3hD,IAAAA,cAAA,OAAK2K,IAAK5F,EAAQ6rC,QAAS5uC,KAAK0/C,qBAAqB38C,EAAQ48C,cAAiB18C,EACjHojD,wBAC4BpjD,IAAxBF,EAAQqlB,YACJpqB,IAAAA,cAAA,OAAK2K,IAAK5F,EAAQ6rC,QAASgI,EAAkB0P,0BAA0BvjD,EAAQqlB,mBAE/EnlB,EAEX,GAET,EA5+BuB2zC,EAAA34C,UAAoB,yBAEpB24C,EAAApD,uBAAyB,GAAGoD,EAAkB34C,4BAE9C24C,EAAA9C,mBAAqB,GAAG8C,EAAkBpD,oCAE1CoD,EAAA3C,eAAiB,GAAG2C,EAAkB9C,4BAEtC8C,EAAAO,qBAAuB,GAAGP,EAAkB3C,yBAE5C2C,EAAAoO,oBAAsB,GAAGpO,EAAkBO,oCAE3CP,EAAA+N,sBAAwB,GAAG/N,EAAkB3C,0BAE7C2C,EAAA2P,mBAAqB,GAAG3P,EAAkB3C,uBAE1C2C,EAAAvE,kBAAoB,GAAGuE,EAAkB3C,sBAEzC2C,EAAAsK,uBAAyB,GAAGtK,EAAkB2P,qCAE9C3P,EAAAsN,2BAA6B,GAAGtN,EAAkB2P,yCAElD3P,EAAA4P,yBAA2B,GAAG5P,EAAkB3C,8BAEhD2C,EAAAwI,yBAA2B,GAAGxI,EAAkBvE,iCAEhDuE,EAAA6I,mBAAqB,GAAG7I,EAAkBvE,0BAE1CuE,EAAAmF,mBAAqB,GAAGnF,EAAkB34C,wBAE1C24C,EAAAa,2BAA6B,GAAGb,EAAkBO,+BAElDP,EAAA6P,oCAAsC,GAAG7P,EAAkB4P,wCA+8BtF,6KC9nCA,MAAME,EAA2BA,CAC7Bj0C,EAIAk0C,EACAnN,IAEO/mC,EAAOjK,KAAI,CAACxH,EAAOsS,IAClBA,IAAUkmC,EAENx7C,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,CACD0B,IAAK3H,EAAM0gD,gBAAgByE,iBAAiBx9C,KACxC3H,EAAM0gD,gBAAgByE,iBAAgB,CAC1CjmD,KAAK,WACL0mD,SAAS,IACT/9B,MAAO7nB,EAAM0gD,gBAAgBiE,mBAAmB98B,QAE/C89B,GAIN3oD,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,CAAC0B,IAAK2K,GAAWtS,EAAM0gD,gBAAgByE,iBAAgB,CAAEt9B,MAAO7nB,EAAM0gD,gBAAgBiE,mBAAmB98B,WAUvHg+B,EAAqBA,CACvBp0C,EAIAonC,IAEOpnC,EAAOjK,KAAIxH,GAEVhD,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GACGjG,EAAM0gD,gBAAgBwE,eAAc,CACxCv9C,IAAK,GAAG3H,EAAM0gD,gBAAgB3+C,QAAQ6rC,UAAUiL,IAChDhxB,MAAO7nB,EAAM0gD,gBAAgBiE,mBAAmB98B,QAE/C7nB,EAAMgjD,QAUV8C,EAAkF/oD,IAAQ,IAAAq2C,EAAAC,EAAA0S,EAAAC,EAAAC,EAAAC,EAAAC,EACnG,OACInpD,EAAAA,cAAC+qB,EAAAA,OAAM/hB,OAAAC,OAAA,GAAKlJ,EAAM4iB,aACb5iB,EAAM4+C,eACN5+C,EAAMkiB,QACPjiB,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAW,GAAG24C,EAAAA,kBAAkB34C,iCAAkCF,EAAMk/C,kBAC7El/C,EAAMk+C,gBAAkBl+C,EAAM2yC,wBAAqBztC,EAAYlF,EAAMo+C,QACrEp+C,EAAMk+C,eAAiBl+C,EAAM8+C,qBAAkB55C,EAChDjF,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKlJ,EAAMs+C,0BACVt+C,EAAMk+C,gBAAkBl+C,EAAM2yC,mBAAqB3yC,EAAM2zC,oBAAiBzuC,GAE/ElF,EAAM2yC,mBACH1yC,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAW24C,EAAAA,kBAAkBpD,wBAC/Bx1C,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAW24C,EAAAA,kBAAkB9C,oBAC/B91C,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAW24C,EAAAA,kBAAkB3C,eAAgB/yC,IAAKnD,EAAMy/C,gBAC1Dx/C,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAW,GAAG24C,EAAAA,kBAAkBO,wBAClCn5C,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAW,GAAG24C,EAAAA,kBAAkBO,0CAChCj2C,IAAKnD,EAAM0/C,sBAEV1/C,EAAM6/C,2BAA6B7/C,EAAMw+C,gBAC1Cv+C,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAWkU,IACPykC,EAAAA,kBAAkBvE,kBAClB,GAAGuE,EAAAA,kBAAkBO,qCAEzBj3C,KAAK,QAEkB,QAFZk0C,EAEVr2C,EAAMmzC,wBAAgB,IAAAkD,OAAA,EAAtBA,EAAwB5rC,KAAIk5C,IACzB,MAAM2D,EAAuB3D,EAAgB2D,qBACvC+B,EAAmB,GAAGxQ,EAAAA,kBAAkBoO,+BAC9C,OACIhnD,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GACGy6C,EAAgBiE,mBAAkB,CACtCh9C,IAAK+4C,EAAgBiE,mBAAmBh9C,IACxCkgB,MAAO64B,EAAgBiE,mBAAmB98B,QAEzC64B,EAAgB9O,2BAChB8O,EAAgB9+B,aAChBoe,EAAAA,GAAiB7oB,UAAYupC,EAAgB5O,iBAAc7vC,EAC3Dy+C,EAAgBjyC,aACjBzR,EAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAWmpD,EAAkBz+C,IAAK+4C,EAAgB3+C,QAAQ6rC,QAC3DyW,EACK3D,EAAgBqE,UAChBrE,EAAgBsE,0BAEvB,KAIlBjoD,EAAM8/C,uBAAyB9/C,EAAM0+C,cAG9Cz+C,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAW24C,EAAAA,kBAAkB2P,mBAC7Bc,SAAUtpD,EAAMigD,aAChB98C,IAAKnD,EAAM2/C,oBAEY,QAFMrJ,EAE5Bt2C,EAAMmzC,wBAAgB,IAAAmD,OAAA,EAAtBA,EAAwB7rC,KAAI,CAACm3C,EAAQh3C,KAAO,IAAA2+C,EAAAC,EACzC,YAAgCtkD,IAAzB08C,EAAOyG,eAAuC,IAARz9C,EACzC3K,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAWkU,IACP,GAAGykC,EAAAA,kBAAkB2P,iCACrB3P,EAAAA,kBAAkBvE,oBAGtBr0C,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAW24C,EAAAA,kBAAkB4P,yBAC7B79C,IAAK,UAAU5K,EAAMy7C,yBACrBt5C,KAAK,QAEkB,QAFZonD,EAEVvpD,EAAMmzC,wBAAgB,IAAAoW,OAAA,EAAtBA,EAAwB9+C,KAAI,CAACk5C,EAAiBpuC,IACvCA,IAAUvV,EAAMy7C,uBAEZx7C,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,CACD0B,IAAK+4C,EAAgByE,iBAAiBx9C,KAClC+4C,EAAgByE,iBAAgB,CACpCjmD,KAAK,WACL0mD,SAAS,IACT/9B,MAAO64B,EAAgBiE,mBAAmB98B,QAEzC9qB,EAAM6B,UAAU4nD,oCAKzBxpD,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,CACD0B,IAAK+4C,EAAgByE,iBAAiBx9C,KAClC+4C,EAAgByE,iBAAgB,CACpCjmD,KAAK,OACL0mD,SAAS,KACT/9B,MAAO64B,EAAgBiE,mBAAmB98B,YAK1D7qB,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAW,GAAG24C,EAAAA,kBAAkB4P,4BAA4B5P,EAAAA,kBAAkB6P,sCAC9EvmD,KAAK,QAEkB,QAFZqnD,EAEVxpD,EAAMmzC,wBAAgB,IAAAqW,OAAA,EAAtBA,EAAwB/+C,KAAIk5C,GAErB1jD,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GACGy6C,EAAgBwE,eAAc,CAClCv9C,IAAK,GAAG+4C,EAAgB3+C,QAAQ6rC,UAAU7wC,EAAM87C,qBAChDhxB,MAAO64B,EAAgBiE,mBAAmB98B,QAEzC64B,EAAgB0E,wBAOrCnjD,CACH,IAEkB,QADrB8jD,EACDhpD,EAAMmzC,wBAAgB,IAAA6V,OAAA,EAAtBA,EAAwBv+C,KAAI,CAACi/C,EAAa9+C,KAAO,IAAA++C,EAAAC,EAC9C,YAA0C1kD,IAAnCwkD,EAAYpB,oBAA4C,IAAR19C,EACnD3K,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAWkU,IACP,GAAGykC,EAAAA,kBAAkB2P,sCACrB3P,EAAAA,kBAAkBvE,oBAGtBr0C,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAW24C,EAAAA,kBAAkB4P,yBAC7B79C,IAAK,eAAe5K,EAAMy7C,yBAC1Bt5C,KAAK,QAEkB,QAFZwnD,EAEV3pD,EAAMmzC,wBAAgB,IAAAwW,OAAA,EAAtBA,EAAwBl/C,KAAI,CAACk5C,EAAiBpuC,IACvCA,IAAUvV,EAAMy7C,uBAEZx7C,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,CACD0B,IAAK+4C,EAAgByE,iBAAiBx9C,KAClC+4C,EAAgByE,iBAAgB,CACpCjmD,KAAK,WACL0mD,SAAS,IACT/9B,MAAO64B,EAAgBiE,mBAAmB98B,QAEzC9qB,EAAM6B,UAAUgoD,yCAKzB5pD,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,CACD0B,IAAK+4C,EAAgByE,iBAAiBx9C,KAClC+4C,EAAgByE,iBAAgB,CACpCjmD,KAAK,OACL0mD,SAAS,KACT/9B,MAAO64B,EAAgBiE,mBAAmB98B,YAK1D7qB,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAW,GAAG24C,EAAAA,kBAAkB4P,4BAA4B5P,EAAAA,kBAAkB6P,sCAC9EvmD,KAAK,QAEkB,QAFZynD,EAEV5pD,EAAMmzC,wBAAgB,IAAAyW,OAAA,EAAtBA,EAAwBn/C,KAAIk5C,GAErB1jD,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GACGy6C,EAAgBwE,eAAc,CAClCv9C,IAAK,GAAG+4C,EAAgB3+C,QAAQ6rC,UAAU7wC,EAAM87C,qBAChDhxB,MAAO64B,EAAgBiE,mBAAmB98B,QAEzC64B,EAAgB2E,6BAOrCpjD,CACH,IAEiB,QADpB+jD,EACDjpD,EAAMsgD,uBAAe,IAAA2I,OAAA,EAArBA,EAAuBx+C,KAAIu7C,IAEpBA,aAAc,EAAdA,EAAgBh3C,gBACZ/O,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAWkU,IACPykC,EAAAA,kBAAkBsK,uBAClBtK,EAAAA,kBAAkBvE,kBAClB0R,EAAe9C,oBAEnBt4C,IAAKo7C,EAAe9C,oBAEpBjjD,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAW24C,EAAAA,kBAAkB4P,yBAC7B79C,IAAK,GAAGo7C,EAAeh3C,iBAAiBhP,EAAMy7C,yBAC9Ct5C,KAAK,QAEJwmD,EACG3C,EAAetC,uBACfsC,EAAeh3C,cACfhP,EAAMy7C,yBAIdx7C,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAW,GAAG24C,EAAAA,kBAAkB4P,4BAA4B5P,EAAAA,kBAAkB6P,sCAC9EvmD,KAAK,QAEJ2mD,EAAmB9C,EAAetC,uBAAwB1jD,EAAM87C,wBAM3D,QADxBoN,EACDlpD,EAAMygD,2BAAmB,IAAAyI,OAAA,EAAzBA,EAA2Bz+C,KAAIq/C,IAC0D,IAA/E/sC,EAAAA,iBAAiBgtC,cAAcD,EAAmBxS,cAAcH,WACnEl3C,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAWkU,IACPykC,EAAAA,kBAAkBsN,2BAClBtN,EAAAA,kBAAkBvE,kBAClBwV,EAAmB5D,wBAEvBt7C,IAAKk/C,EAAmB5D,wBAExBjmD,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAW24C,EAAAA,kBAAkB4P,yBAC7B79C,IAAK,GAAGk/C,EAAmBxS,cAAcxsC,QAAQ9K,EAAMy7C,yBACvDt5C,KAAK,QAEJwmD,EACGmB,EAAmB1D,oBACnB0D,EAAmBxS,cAAcxsC,KACjC9K,EAAMy7C,yBAGdx7C,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAW,GAAG24C,EAAAA,kBAAkB4P,4BAA4B5P,EAAAA,kBAAkB6P,sCAC9EvmD,KAAK,QAEJ2mD,EAAmBgB,EAAmB1D,oBAAqBpmD,EAAM87C,2BAI1E52C,IAGRjF,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAWkU,IACP,GAAGykC,EAAAA,kBAAkB2P,8BACrB3P,EAAAA,kBAAkBvE,oBAGtBr0C,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAW24C,EAAAA,kBAAkB4P,yBAC7B79C,IAAK,OAAO5K,EAAMy7C,yBAClBt5C,KAAK,QAEkB,QAFZgnD,EAEVnpD,EAAMmzC,wBAAgB,IAAAgW,OAAA,EAAtBA,EAAwB1+C,KAAI,CAACk5C,EAAiBpuC,IACvCA,IAAUvV,EAAMy7C,uBAEZx7C,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,CACD0B,IAAK+4C,EAAgByE,iBAAiBx9C,KAClC+4C,EAAgByE,iBAAgB,CACpCjmD,KAAK,WACL0mD,SAAS,IACT/9B,MAAO64B,EAAgBiE,mBAAmB98B,QAEzC9qB,EAAM6B,UAAUmoD,iCAKzB/pD,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,CACD0B,IAAK+4C,EAAgByE,iBAAiBx9C,KAClC+4C,EAAgByE,iBAAgB,CACpCt9B,MAAO64B,EAAgBiE,mBAAmB98B,YAK1D7qB,EAAAA,cAAC4qB,EAAAA,KAAI,CACD3qB,UAAW,GAAG24C,EAAAA,kBAAkB4P,4BAA4B5P,EAAAA,kBAAkB6P,sCAC9EvmD,KAAK,QAEkB,QAFZinD,EAEVppD,EAAMmzC,wBAAgB,IAAAiW,OAAA,EAAtBA,EAAwB3+C,KAAIk5C,GAErB1jD,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GACGy6C,EAAgBwE,eAAc,CAClCv9C,IAAK,GAAG+4C,EAAgB3+C,QAAQ6rC,UAAU7wC,EAAM87C,qBAChDhxB,MAAO64B,EAAgBiE,mBAAmB98B,QAEzC64B,EAAgB3+C,QAAQqlB,YAAY1W,qBAWzEzO,EAEC,EAIjB,yNClUO,MAyCM+kD,EAAoEjqD,IAAsD,IAAAkqD,EAAAC,EACnI,MACIlzC,MAAM,mBAAEmzC,IACRpqD,EAEJ,QAAmFkF,KAA/EklD,SAA0D,QAAxCF,EAAlBE,EAAoBC,wBAAwB,GAAG1wC,mBAAW,IAAAuwC,OAAA,EAA1DA,EAA4DtwC,gBAC5D,OAAO,KAEX,MAAM7S,EAAWqjD,EAAmBC,wBAAwB,GAAGpyC,gBAAgB8B,SACzEuwC,EAActqD,EAAM6B,UAAU0oD,oCAC9BC,EAAkBxqD,EAAM6B,UAAU4oD,yCAClC1vC,EApDuB/a,KAAuD,IAAA0qD,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACpF,MAAO,CACHC,aAAwD,QAA5Cb,EAAE1qD,EAAM6B,UAAU2pD,kCAA0B,IAAAd,EAAAA,EAAI,GAC5De,qBAAmE,QAA/Cd,EAAE3qD,EAAM6B,UAAU6pD,qCAA6B,IAAAf,EAAAA,EAAI,GACvEgB,uBAA4G,QAAtFf,EAAE5qD,EAAM6B,UAAU+pD,4EAAoE,IAAAhB,EAAAA,EAAI,GAChHiB,kBAA+D,QAA9ChB,EAAE7qD,EAAM6B,UAAUiqD,oCAA4B,IAAAjB,EAAAA,EAAI,GACnEkB,qBAA2E,QAAvDjB,EAAE9qD,EAAM6B,UAAUmqD,6CAAqC,IAAAlB,EAAAA,EAAI,GAC/EmB,sBAAyE,QAApDlB,EAAE/qD,EAAM6B,UAAUqqD,0CAAkC,IAAAnB,EAAAA,EAAI,GAC7EoB,kBAAkE,QAAjDnB,EAAEhrD,EAAM6B,UAAUuqD,uCAA+B,IAAApB,EAAAA,EAAI,GACtExkC,cAA4C,QAA/BykC,EAAEjrD,EAAM6B,UAAU2kB,qBAAa,IAAAykC,EAAAA,EAAI,GAChDxkC,kBAAoD,QAAnCykC,EAAElrD,EAAM6B,UAAU4kB,yBAAiB,IAAAykC,EAAAA,EAAI,GACxDxkC,iBAAkD,QAAlCykC,EAAEnrD,EAAM6B,UAAU6kB,wBAAgB,IAAAykC,EAAAA,EAAI,GACtDkB,kBAAoD,QAAnCjB,EAAEprD,EAAM6B,UAAUwqD,yBAAiB,IAAAjB,EAAAA,EAAI,GACxDkB,0BAAsG,QAA7EjB,EAAErrD,EAAM6B,UAAU0qD,mEAA2D,IAAAlB,EAAAA,EAAI,GAC1GmB,mCAAwH,QAAtFlB,EAAEtrD,EAAM6B,UAAU+pD,4EAAoE,IAAAN,EAAAA,EAAI,GAC/H,EAqC0CmB,CAAiBzsD,GAEtD0sD,EA/BsBC,KAC5B,MAAMC,EAAsC,GAC5C,IAAK,MAAMC,KAAaF,EAAWtC,wBAAyB,CAAC,IAADyC,EACxD,MACMC,EAAuB,CACzBhzC,SAFa8yC,EAAU50C,gBAAgB8B,UAIrCpZ,EAAW,IAAIqsD,EAAAA,oBAAoBD,EAAgC,QAAvBD,EAAED,EAAUlzC,mBAAW,IAAAmzC,OAAA,EAArBA,EAAuBlzC,gBAC3EgzC,EAAax5B,KAAKzyB,EAAU,CAEhC,OAAOisD,CAAY,EAqBSK,CAAgB7C,GAC5C,OACInqD,IAAAA,cAACitD,EAAAA,mBAAkB,CACfpiB,cAAewf,QAAAA,EAAe,GAC9BpmB,eAAe,GACfipB,oBAAqB3C,EACrBzjD,SAAUA,EACVrE,GAAI1C,EAAM0C,GACVoY,SAAU9a,EAAM8a,SAChB5a,UAAWF,EAAME,UACjBktD,eAAev0C,EAAAA,EAAAA,IAAW,OAAQ7Y,EAAM6E,QAAQJ,eAChDwS,KAAM,CAAEjS,QAAkE,QAA3DmlD,EAAEC,EAAmBC,wBAAwB,GAAG1wC,mBAAW,IAAAwwC,OAAA,EAAzDA,EAA2DvwC,gBAC5E/U,QAAS7E,EAAM6E,QACfkW,cAAeA,EACfsyC,wBAfgC,EAgBhCC,qBAAsBZ,EACtBa,QAASvtD,EAAMutD,SACjB,ECtDJC,EAAoCxtD,IACtC,MACIiX,MAAM,mBAAEmzC,GAAoB,QAC5BvlD,EAAO,gBACP4oD,EAAe,UACf5rD,EAAS,SACTiZ,GACA9a,EAEJ,OACIC,EAAAA,cAACgqD,EAA6B,CAC1B/pD,UAAW,GAAGutD,qCACd/qD,GAJS,mBAKToY,SAAUA,EACV7D,KAAM,CAAEmzC,sBACRvlD,QAASA,EACThD,UAAWA,EACX0rD,QAAU1pD,IAAgB,IAAA6pD,EACK,QAA3BA,EAAI7pD,EAAO8pD,wBAAgB,IAAAD,GAAc,QAAdA,EAAvBA,EAAyB7tC,oBAAY,IAAA6tC,GAArCA,EAAuC5tC,kBACvC9f,EAAMonB,SAASwmC,eAAe/pD,EAAO8pD,iBAAiB9tC,aAAaC,iBAAkB,GAG/F,EASJ+tC,EAAuB7tD,GAAuC,KAhDtCA,KAC1B,MACIiX,MAAM,mBAAEmzC,GAAoB,SAC5BhjC,GACApnB,GACE,kBAAE8tD,GAAsB1mC,EAE1BgjC,GAAsBA,EAAmBnxC,YAAYC,IACrD40C,EAAkB1D,EAAmBnxC,YAAYC,GAAI,EAyCzD60C,CAAqB/tD,EAAM,uOC9ExB,MAAMguD,UAA6B/tD,EAAAA,UAStCK,YAAmBN,GAAiC,IAAAiuD,EAAAC,EAChD3tD,MAAMP,GAkBH,KAAA8I,OAAUxF,IACbA,EAAMC,iBACNtB,KAAKksD,oBAAqB,EACtBlsD,KAAKjC,MAAMouD,UACXnsD,KAAKwB,UAAS0tC,IAAa,CAAO1wC,QAAS0wC,EAAc1wC,WACzDwB,KAAKjC,MAAMouD,SAASnsD,KAAKzB,QAEzByB,KAAKwB,UAAS0tC,IAAa,CAAO1wC,QAAS0wC,EAAc1wC,UAAW,EAxBxEwB,KAAKksD,oBAAqB,EAC1BlsD,KAAKzB,MAAQ,CAAEC,OAAmC,QAA7BwtD,EAAqB,QAArBC,EAAEluD,EAAMquD,qBAAa,IAAAH,OAAA,EAAnBA,EAAqBztD,cAAM,IAAAwtD,GAAAA,GAClDhsD,KAAKqsD,kBAAoBl6C,IAAW,gBAAiBnS,KAAKjC,MAAMuuD,qBAAuBtsD,KAAKjC,MAAMuuD,qBAAuB,IACzH,MAAMC,EAAavsD,KAAKjC,MAAMwuD,WAAavsD,KAAKjC,MAAMwuD,WAAa,GAC/DvsD,KAAKjC,MAAMyuD,gBACXxsD,KAAKysD,iBAAmBt6C,IAAWnS,KAAKqsD,kBAAmBrsD,KAAKjC,MAAM2uD,UAAY1sD,KAAKjC,MAAM2uD,UAAYH,GACzGvsD,KAAK2sD,kBAAoB3sD,KAAKysD,mBAE9BzsD,KAAKysD,iBAAmBt6C,IAAWnS,KAAKqsD,kBAAmBrsD,KAAKjC,MAAM2uD,UAAY1sD,KAAKjC,MAAM2uD,UAAY,IACzG1sD,KAAK2sD,kBAAoBx6C,IAAWnS,KAAKqsD,kBAAmBE,GAEpE,CAiBOlmD,sBAAsBC,EAAuCC,GAChE,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,QAAUuI,CAInD,CAEOE,SACH,MAAM4lD,uWAAaxlD,CAAA,GAAwB5G,KAAKjC,MAAMquD,qBAGzBnpD,IAAzBmpD,EAAc5tD,QAAwBwB,KAAKksD,sBAC3CE,EAAc5tD,OAASwB,KAAKzB,MAAMC,QAEtC4tD,EAAcl7B,SAAWlxB,KAAKjC,MAAMmzB,SACpC,MAAM07B,EAAcz6C,IAAW,SAAUnS,KAAKjC,MAAME,WAC9C4uD,EAAwB,GAAG7sD,KAAKjC,MAAME,UAAY+B,KAAKjC,MAAME,UAAY,aAE/E,OADA+B,KAAKksD,oBAAqB,EAEtBluD,EAAAA,cAAA,OAAKC,UAAW2uD,GACZ5uD,EAAAA,cAACkU,EAAAA,OAAMlL,OAAAC,OAAA,GACCjH,KAAKjC,MAAM+uD,kBAAiB,CAChC3lD,QAASnH,KAAK6G,OAAM,gBACLulD,EAAc5tD,OAC7BuuD,OAAK,EACLzhD,SAAUtL,KAAKjC,MAAMivD,WACrB/uD,UAAW4uD,EACXzrD,MAAM,cAELpB,KAAKitD,iCAAiCb,EAAc5tD,OAAQouD,IAEjE5uD,EAAAA,cAACkvD,EAAAA,SAAQlmD,OAAAC,OAAA,GAAKmlD,IAG1B,CAEQa,iCAAiCE,EAA0BP,GAC/D,MAAMQ,EAAwBj7C,IAC1B,qBACAnS,KAAKjC,MAAMsvD,sBAAwBrtD,KAAKjC,MAAMsvD,sBAAwB,IAEpEC,EAAqB,GAAGV,YACxBW,EAAyB,GAAGX,gBAClC,OACI5uD,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,MAAIC,UAAWkU,IAAWi7C,EAAuBE,IAAsBttD,KAAKjC,MAAMyvD,mBAClFxvD,EAAAA,cAAA,QAAMC,UAAWkU,IAAWi7C,EAAuBG,IAA0BvtD,KAAKjC,MAAM0vD,uBACvFztD,KAAK0tD,qBAAqB,qBAAsBP,GAG7D,CAEQO,qBAAqBvoD,EAAkBgoD,GAC3C,IAAIQ,EAAaR,EAAkBntD,KAAKysD,iBAAmBzsD,KAAK2sD,kBAEhE,OADAgB,EAAa,GAAGA,KAAcxoD,IACvBnH,EAAAA,cAAA,QAAMC,UAAW0vD,GAC5B,EC7EJ,MAkBaC,EAA+B7vD,IACxC,MAAM,gBACFytD,EAAe,iBACfqC,EAAgB,kBAChBC,EAAiB,oBACjBC,EAAmB,SACnBC,EAAQ,YACRC,EAAW,YACX9yB,EAAW,oBACX+yB,EAAmB,kBACnBC,EAAiB,iBACjBC,EAAgB,mBAChBC,EAAkB,qBAClBC,EAAoB,kBACpBC,EAAiB,0BACjBC,GACAzwD,EAEE0wD,EApCqBF,IAAgDltD,IAC3EktD,EAAkBltD,EAAMgB,OAAOrB,OAAS,GAAG,EAmCrB0tD,CAAsBH,GAEtCI,EA7BwBL,IAAmDjtD,IACjFitD,EAAqBjtD,EAAMgB,OAAOrB,OAAS,GAAG,EA4BhB4tD,CAAyBN,GAEjDO,EACF7wD,EAAAA,cAAA,OAAKC,UAAW,GAAGutD,gCACfxtD,EAAAA,cAAA,MAAIC,UAAW,GAAGutD,qCAAkD,aAAc4C,GAC7EA,GAELpwD,EAAAA,cAAA,SACIC,UAAW,GAAGutD,qCACd3qD,KAAK,OAAM,aACCutD,EACZltD,IAAK2sD,EACLntD,SAAU+tD,KAKhBK,EACF9wD,EAAAA,cAAA,OAAKC,UAAW,GAAGutD,iCACfxtD,EAAAA,cAAA,MAAIC,UAAW,GAAGutD,sCAAmD,aAAc2C,GAC9EA,GAELnwD,EAAAA,cAAA,SACIC,UAAW,GAAGutD,sCACdv/C,QAAQ,SACR/K,IAAK4sD,EACLptD,SAAUiuD,EACVxtD,UAAW6sD,EACXntD,KAAK,SAAQ,YACH,SAAQ,aACNstD,EAAiB,gBACdF,EAAW,gBACX9yB,EAAW,gBACX4yB,EAAoBjpD,YA2B/C,MAAO,CACH/B,QAAS8rD,EACTE,aAvBA/wD,EAAAA,cAAA,OAAKC,UAAW,GAAGutD,4CACfxtD,EAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAW,GAAGutD,kDACdlgD,SAAU4iD,EAAmB,aACjBG,EACZlnD,QAASqnD,GAERH,IAiBTvpD,SAAUgqD,EACV14C,YAboB23C,EAAoBiB,aACxChxD,EAAAA,cAAC8U,EAAAA,MAAK,CAAC1R,MAAO2sD,EAAoBiB,aAAa34C,gBAAiB7X,OAAQuvD,EAAoBiB,aAAaxwD,QACrGR,EAAAA,cAAA,QAAMC,UAAW8vD,EAAoBiB,aAAa14C,eAClDtY,EAAAA,cAAA,YAAO+vD,EAAoBiB,aAAaC,mBAG5ChsD,EAQH,ECzIE,MAAMisD,EAMT7wD,YAAmB8Y,GACfnX,KAAKmX,YAAcA,EACnBnX,KAAK0I,YAAa,CACtB,GAPAgB,EAAAA,EAAAA,IAAA,CADCke,EAAAA,IAAU,iCC8Bf,MAAMunC,EAAwFpxD,IAC1F,MAAM,UAAE6B,GAAc7B,EAChBqxD,EAA4B,GAAGrxD,EAAME,qCAC3C,OACID,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,UACIA,IAAAA,cAAA,QAAMC,UAAWkU,IAAW,GAAGpU,EAAME,6BAEzCD,IAAAA,cAAA,UAAK4B,EAAUyvD,iCACfrxD,IAAAA,cAAA,UAAK4B,EAAU0vD,2BACftxD,IAAAA,cAAA,MAAIC,UAAWmxD,GAA4BxvD,EAAU2vD,6BACrDvxD,IAAAA,cAAA,UAAK4B,EAAU4vD,iCACfxxD,IAAAA,cAAA,MAAIC,UAAWmxD,GAA4BxvD,EAAU6vD,4BACrDzxD,IAAAA,cAAA,UAAK4B,EAAU8vD,2BAChB,EASLC,EAAuF5xD,IACzF,MAAM,UAAE6B,GAAc7B,EACtB,OACIC,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,MAAIC,UAAWkU,IAAW,GAAGpU,EAAME,4BACnCD,IAAAA,cAAA,UAAK4B,EAAUyvD,iCACfrxD,IAAAA,cAAA,WACD,EASE4xD,EAAiF7xD,IAC1F,MAAM8xD,EAAe,GAAG9xD,EAAME,iBAE9B,IAAI6xD,EAOJ,OALIA,EADA/xD,EAAMiiB,SACQhiB,IAAAA,cAAC2xD,EAAwC3oD,OAAAC,OAAA,GAAKlJ,IAE9CC,IAAAA,cAACmxD,EAAyCnoD,OAAAC,OAAA,GAAKlJ,IAI7DC,IAAAA,cAAA,SAAOC,UAAWF,EAAME,WACpBD,IAAAA,cAAA,MAAIC,UAAW4xD,GAAeC,GAC1B,EChCV9wD,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCG,UAAU,EACV8mC,iBAAiB,GAQfypB,EAAuFhyD,IAAuC,IAAAiyD,EAAAx8C,EAAAhD,EAAAy/C,EAChI,MAAMltD,EAAoD,QAA7CitD,EAAGjyD,EAAMiX,KAAKjS,QAAQoU,YAAYO,mBAAW,IAAAs4C,OAAA,EAA1CA,EAA4Cr4C,eACtDyuB,GAAmB30B,EAAAA,EAAAA,qBACrB1O,aAAO,EAAPA,EAAS2O,OACT3T,EAAM6E,QAAQJ,cAAcoO,eAAelO,YAClB,QAD6B8Q,EACtDzV,EAAM6E,QAAQH,QAAQkP,WAAG,IAAA6B,GAAQ,QAARA,EAAzBA,EAA2B3O,cAAM,IAAA2O,OAAA,EAAjCA,EAAmC5B,kBAGjCkiC,EAAqB,GAAG/1C,EAAME,qCAEpC,OACID,IAAAA,cAAA,OAAKC,UAAW61C,GACZ91C,IAAAA,cAACoT,EAAAA,GAAK,CACFR,eAAgB7S,EAAM6E,QAAQJ,cAAcoO,eAC5C3S,UAAW,GAAG61C,mBACdziC,QAAStO,aAAO,EAAPA,EAAS8F,KAClByI,IAA6B,QAA1Bd,EAAEzN,aAAO,EAAPA,EAASwO,uBAAe,IAAAf,EAAAA,EAAI,GACjCgB,YAAa40B,EACbv1B,aAAc9S,EAAM6E,QAAQH,QAAQoO,aACpCvJ,cAAkC,QAArB2oD,EAAElyD,EAAMuJ,qBAAa,IAAA2oD,EAAAA,EAAIjxD,EACtC6S,oBAAoB,UAEtB,EAId,IAAIq+C,EAOJ,MA8CM5iB,EAAkBA,CACpB9lB,EAKA/P,EACA1Z,IACEiQ,IACFwZ,EAAiB/P,EAASzJ,EAAUjQ,IAC7B,GAULoyD,EAAkBA,CACpB5oC,EACA6oC,EACAryD,IACC,KACDwpB,EAAa6oC,EAA0BryD,EAAM,EAQ3CsyD,EACFtyD,IACoB,IAAAuyD,EACpB,MACI1wD,WAAW,yCAAE2wD,EAAwC,oCAAEC,IACvDzyD,EACEgF,EAAoD,QAA7CutD,EAAGvyD,EAAMiX,KAAKjS,QAAQoU,YAAYO,mBAAW,IAAA44C,OAAA,EAA1CA,EAA4C34C,gBACrD84C,EAAmBtjB,IAAkBp5B,EAAAA,EAAAA,WAAS,GACrD,IAAI6G,EAAa,GACjB,QAAgB3X,IAAZF,EACA,OAAO,KAEN+X,EAAAA,iBAAiBC,mBAAmBhY,EAAQ8F,OAAU2X,EAAAA,iBAAiBC,kBAAkB1d,EAAQC,YAClG4X,GAAa81C,EAAAA,EAAAA,uBAAsB3tD,EAAQ8F,KAAO9F,EAAQC,SAAUjF,EAAM6E,QAAQJ,gBAGtF,MAAMmuD,EAAqB3yD,IAAAA,aAAkB,KACrCka,EAAAA,GAASC,YACTjT,OAAOC,SAASkT,KAAOuC,EAAW,GAEvC,CAACA,IAEE/T,EAAS7I,IAAAA,aAAkB,KAC7B,MAAM4yD,GAA6BH,EAC/BG,GACIV,GACAA,GAAuB,GAE3B/iB,EAAeyjB,GACfV,EAAyB/iB,IAEzB+iB,OAAyBjtD,EACzBkqC,EAAeyjB,GAA2B,GAE/C,CAACH,EAAmBtjB,IAEvB,GAAIryB,EAAAA,iBAAiBC,mBAAmBH,GACpC,OAAO,KAGX,MAAM3c,EAAY,GAAGF,EAAME,gCACrBmvC,EAA4B,GAAGnvC,uBAErC,OACID,IAAAA,cAAA,OAAKC,UAAWA,GACZD,IAAAA,cAACkU,EAAAA,OAAM,CAACjU,UAAW,GAAGA,YAAqBkJ,QAASN,IACnD4pD,GACGzyD,IAAAA,cAAA,OAAKC,UAAWmvC,GACZpvC,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAW,GAAGmvC,kBACdjmC,QAASwpD,EAAkB,aACfJ,GAEXC,GAELxyD,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAW,GAAGF,EAAME,4BAA2B,aACnCF,EAAM6B,UAAUixD,yCAE3B9yD,EAAM6B,UAAUixD,0CAI3B,EASDC,EAAsF/yD,IAAuC,IAAAgzD,EACtI,MAAMhuD,EAAoD,QAA7CguD,EAAGhzD,EAAMiX,KAAKjS,QAAQoU,YAAYO,mBAAW,IAAAq5C,OAAA,EAA1CA,EAA4Cp5C,eACtD3B,EAAkBjY,EAAMiX,KAAKjS,QAAQoU,YAAYnB,iBACjD,IAAErL,EAAG,IAAEa,EAAG,SAAE1G,GAAa/G,EACzBqxD,EAA4B,GAAGrxD,EAAME,gCAC3C,QAAgBgF,IAAZF,EAAuB,CAAC,IAAD0vC,EAAAue,EACvB,IAAIp2C,EAAa,GAKjB,OAJKE,EAAAA,iBAAiBC,mBAAmBhY,EAAQ8F,OAAU2X,EAAAA,iBAAiBC,kBAAkB1d,EAAQC,YAClG4X,GAAa81C,EAAAA,EAAAA,uBAAsB3tD,EAAQ8F,KAAO9F,EAAQC,SAAUjF,EAAM6E,QAAQJ,gBAIlFxE,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,UACIA,IAAAA,cAAC+xD,EAA2C/oD,OAAAC,OAAA,GAAKlJ,KAErDC,IAAAA,cAAA,UAAK+E,EAAQ2O,QACb1T,IAAAA,cAAA,UACIA,IAAAA,cAAA,OAAKC,UAAW,GAAGF,EAAME,2BACrBD,IAAAA,cAAA,KAAGC,UAAW,GAAGF,EAAME,0BAA2Boa,KAAMuC,GACnD7X,EAAQ8F,MAEb7K,IAAAA,cAAA,QAAMC,UAAW,GAAGF,EAAME,iCACH,QADkCw0C,EACpD1vC,EAAQ4gC,kBAAU,IAAA8O,OAAA,EAAlBA,EAAoBjqC,KAAI+E,IAAS,IAAA8E,EAAA,OAA4B,QAA5BA,EAAI9E,EAAUuB,sBAAc,IAAAuD,OAAA,EAAxBA,EAA0BE,KAAK,IAChE9E,QAAOilC,IAAmB53B,EAAAA,iBAAiBC,mBAAmB23B,KAC9DhgC,KAAK3U,EAAM6B,UAAUqxD,6CAItCjzD,IAAAA,cAAA,MAAIC,UAAWmxD,GApLHrxD,KACxB,MAAM,QAAE6E,EAAO,SAAEwkB,EAAQ,eAAEC,EAAc,UAAEznB,GAAc7B,EACnDiV,EAAQjV,EAAMiV,MAEpB,OAAIA,EAEIhV,IAAAA,cAACmmC,EAAAA,eAAc,CACX1jC,GAAI2mB,EACJvO,SAAUwO,EACVrS,KAAM,CAAEhC,SACR/U,UAAU,yCACVsmB,cAAe3kB,EAAU2kB,cACzBC,kBAAmB5kB,EAAU4kB,kBAC7BC,iBAAkB7kB,EAAU6kB,iBAC5B7hB,QAASA,IAId,IAAI,EAkK4CsuD,CAAmBnzD,IAC9DC,IAAAA,cAAA,UA3JaD,KACzB,MAAMiV,EAAQjV,EAAMiV,MAEpB,OAAIA,EAEIhV,IAAAA,cAAA,OAAKC,UAAU,oDACV6c,EAAAA,iBAAiBgtC,cAAc/pD,EAAMiY,gBAAgBy2B,gBAAkBz5B,EAAMy5B,eAInF,IAAI,EAiJMhG,CAAoB1oC,IACzBC,IAAAA,cAAA,MAAIC,UAAW,GAAGF,EAAME,+BACpBD,IAAAA,cAACypC,EAAAA,oBAAmB,CAChBhnC,GAAI,sCAAsCsC,EAAQC,YAAkC,QAA1BguD,EAAIh7C,EAAgByF,cAAM,IAAAu1C,EAAAA,EAAI,KACxFrmD,IAAKA,EACLa,IAAKA,EACLV,aAAchG,EACdqH,uBAAwBpO,EAAM6B,UAAUuxD,qCACxCplD,yBAA0BhO,EAAM6B,UAAUwxD,uCAC1ChlD,yBAA0BrO,EAAM6B,UAAUyxD,uCAC1C1oD,IAAKqN,EAAgByF,OACrBksB,WAAY5kC,EAAQ8gC,WACpBnjC,SAAU4sC,EAAgBvvC,EAAMkkB,UAAUuF,iBAAkBxR,EAAgByF,OAAQ1d,MAG5FC,IAAAA,cAAA,UACIA,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAW,GAAGF,EAAME,4BAA2B,aACnCF,EAAM6B,UAAUixD,wCAC5B1pD,QAASgpD,EAAgBpyD,EAAMkkB,UAAUsF,aAAcxpB,EAAMiX,KAAKjS,QAAShF,MAGpF,CAIX,OAAO,IAAI,EAQFuzD,EAAqFvzD,IAAuC,IAAAwzD,EACrI,MAAMxuD,EAAoD,QAA7CwuD,EAAGxzD,EAAMiX,KAAKjS,QAAQoU,YAAYO,mBAAW,IAAA65C,OAAA,EAA1CA,EAA4C55C,eACtD3B,EAAkBjY,EAAMiX,KAAKjS,QAAQoU,YAAYnB,iBACjD,IAAErL,EAAG,IAAEa,EAAG,SAAE1G,GAAa/G,EACH,IAADyzD,EAA3B,YAAgBvuD,IAAZF,EAEI/E,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,UACIA,IAAAA,cAAC+xD,EAA2C/oD,OAAAC,OAAA,GAAKlJ,KAErDC,IAAAA,cAAA,UACIA,IAAAA,cAAA,OAAKC,UAAW,GAAGF,EAAME,2BACrBD,IAAAA,cAAA,QAAMC,UAAW,GAAGF,EAAME,2BAA4B8E,EAAQC,UAC9DhF,IAAAA,cAAA,QAAMC,UAAW,GAAGF,EAAME,+BACtBD,IAAAA,cAACypC,EAAAA,oBAAmB,CAChBhnC,GAAI,sCAAsCsC,EAAQC,YAAkC,QAA1BwuD,EAAIx7C,EAAgByF,cAAM,IAAA+1C,EAAAA,EAAI,KACxF7mD,IAAKA,EACLa,IAAKA,EACLV,aAAchG,EACdqH,uBAAwBpO,EAAM6B,UAAUuxD,qCACxCplD,yBAA0BhO,EAAM6B,UAAUwxD,uCAC1ChlD,yBAA0BrO,EAAM6B,UAAUyxD,uCAC1C1oD,IAAKqN,EAAgByF,OACrBksB,WAAY5kC,EAAQ8gC,WACpBnjC,SAAU4sC,EAAgBvvC,EAAMkkB,UAAUuF,iBAAkBxR,EAAgByF,OAAQ1d,QAKpGC,IAAAA,cAAA,UACIA,IAAAA,cAACqyD,EAAwCrpD,OAAAC,OAAA,GAAKlJ,MAKvD,IAAI,EAQF0zD,EAA2E1zD,IACpF,MAAM8xD,EAAe,GAAG9xD,EAAME,iBAE9B,IAAI6xD,EAOJ,OALIA,EAHiG,QAAhF9vC,EAAAA,EAAAA,UAAS,CAAE1N,QAAS0gC,EAAAA,YAAY0e,SAAU9uD,QAAS7E,EAAM6E,QAAQH,UAGpEzE,IAAAA,cAACszD,EAAyCtqD,OAAAC,OAAA,GAAKlJ,IAE/CC,IAAAA,cAAC8yD,EAA0C9pD,OAAAC,OAAA,GAAKlJ,IAI9DC,IAAAA,cAAA,SAAOC,UAAWF,EAAME,WACpBD,IAAAA,cAAA,MAAIC,UAAW4xD,GAAeC,GAC1B,ECpUH6B,EAAqE5zD,IAC9E,MAAOiiB,EAAU4xC,GAAe5zD,IAAAA,SAAeD,EAAM8zD,cAC/CC,EAAyB/zD,EAAMiX,KAAK88C,uBACpCC,EAAsCh0D,EAAMiX,KAAK+8C,oCAKjDC,EAAiBA,KACnBJ,EAAY7zD,EAAM8zD,aAAa,EAG/B35C,EAAAA,GAASC,WACTjT,OAAOib,iBAAiB,SAAU6xC,GAGtC,MAAMje,EAAkB,GAAGh2C,EAAME,oBAC3B4xD,EAAe,GAAG9xD,EAAME,iBAE9B,OACID,IAAAA,cAAA,SAAOC,UAAWF,EAAME,WACpBD,IAAAA,cAAC4xD,EAAkC,CAC/BhtD,QAAS7E,EAAM6E,QACfiW,SAAU9a,EAAM8a,SAChBpY,GAAIszC,EACJ91C,UAAW81C,EACX/zB,SAAUA,EACVpgB,UAAW7B,EAAM6B,UACjBoV,KAAM,CAAC,IAEV88C,EAAuBtpD,KAAI,CAACypD,EAAmB3+C,KAAS,IAAA4+C,EAAAC,EAAAC,EACrD,IAAIttD,EAAWmtD,EAAkB96C,YAAYnB,gBAAgB8B,SAC7D,MAAM/U,EAAUkvD,EAAkB96C,YAAYO,YAC9C,IAAI/M,EAAc,EACda,EAAc,GAClB,MAAM6mD,EAAWtvD,SAAuB,QAAhBmvD,EAAPnvD,EAAS4U,sBAAc,IAAAu6C,OAAA,EAAvBA,EAAyBr6B,SACtCk6B,IAAwCvxC,EAAAA,iBAAiBC,kBAAkB4xC,KACvEA,EAASC,iBAAmBD,EAASC,gBAAkB,IACvD3nD,EAAM0nD,EAASC,iBAEfD,EAASv6B,iBAAmBu6B,EAASv6B,gBAAkB,IACvDtsB,EAAM6mD,EAASv6B,iBAEnBhzB,EAAWk0C,KAAKxtC,IAAI1G,EAAU6F,IAElC,MAAMqI,EAAiD,QAA5Cm/C,EAAGF,EAAkB96C,YAAYO,mBAAW,IAAAy6C,OAAA,EAAzCA,EAA2CjrC,aACzD,OACIlpB,IAAAA,cAACyzD,EAA+B,CAC5B7uD,QAAS7E,EAAM6E,QACfiW,SAAU9a,EAAM8a,SAChBpY,GAAI,GAAGovD,KAAgBv8C,IACvB3K,IAA8C,QAA3CypD,EAAEH,EAAkB96C,YAAYO,mBAAW,IAAA06C,OAAA,EAAzCA,EAA2Cz6C,eAAe3U,SAC/D/E,UAAW4xD,EACXjwD,UAAW7B,EAAM6B,UACjBogB,SAAUA,EACVhN,MAAOA,EACPoU,SAAUrpB,EAAMqpB,SAChBC,eAAgBtpB,EAAMspB,eACtB1c,IAAKA,EACLa,IAAKA,EACL1G,SAAUA,EACVwO,MAAOA,EACPhM,cAAevJ,EAAMuJ,cACrB0O,gBAAiBi8C,EAAkB96C,YAAYnB,gBAC/CiM,UAAWlkB,EAAMw0D,UACjBv9C,KAAM,CACFjS,QAASkvD,IAEf,IAGN,ylBCvBhB,MAAMO,UAAuBx0D,EAAAA,cA4GzBK,YAAmBN,GAAgD,IAAA2a,EAAA+5C,EAAAC,EAAAC,EAAAC,EAAAC,EAC/Dv0D,MAAMP,GAxGO,KAAA+0D,UAAoB,IAEpB,KAAAC,+BAAyC,EAEzC,KAAAC,eAAyB,SAEzB,KAAAC,oBAA8B,8BAU9B,KAAAC,sBAA6C,IAAIC,EAAAA,mBAAyBnzD,KAAK+yD,gCAExF,KAAAK,YAAwC,CAAC,EAEzC,KAAAC,uBAAsC,IAAIC,IAEjC,KAAAC,uBAAiC,yCAEjC,KAAAC,WAAqB,sBAK9B,KAAAC,sCAAgD,EAEhD,KAAAC,gCAA0C,EAE1C,KAAAC,uCAAiD,EAExC,KAAAC,yBAAuD,CACpEC,oBAAsBC,IACdA,GACA9zD,KAAKqzD,uBAAuBhmD,IAAIymD,EAAsB,EAS9DC,uBAAwBxxD,MAAOyxD,EAA6BC,KAAmD,IAAAC,EAG3G,GAFAl0D,KAAKozD,YAAYY,GAAuBC,EAEpCj0D,KAAKqzD,uBAAuBc,QAAqC,QAAjCD,EAAKl0D,KAAKzB,MAAM8nC,yBAAiB,IAAA6tB,OAAA,EAA5BA,EAA8BryD,QACnE,OAAO7B,KAAKkzD,sBACPkB,SAAQ7xD,SACEvC,KAAKq0D,sBAEfryD,OAAOC,IAEJ,GAAIA,IAAUqyD,EAAAA,wBAAwBC,gCAClC,MAAM,IAAIryD,MAAMD,EAAO,GAE5B,EAUfuyD,gBAAiBA,CAACtkD,EAAuBtQ,IAC9BI,KAAKiQ,iBAAiBC,EAAetQ,GAOhD60D,wBAA0BC,IACtB10D,KAAKwB,SAAS,CAAEkzD,uBAAsB,GAI7B,KAAAC,4BAA2D,CAKxEptC,aAAezR,IACX9V,KAAK40D,wBAAwB9+C,EAAKqB,YAAY,EASlDqQ,iBAAkBA,CAACqtC,EAAuC/vD,IAC/C9E,KAAK80D,mBAAmBD,EAAmB/vD,IA2RzC,KAAAiwD,mBAAqB,KAClC,MAAM,QAAEnyD,EAAO,KAAEoS,EAAI,UAAE5R,EAAS,UAAExD,GAAcI,KAAKjC,OAC/C,mBAAEoqD,GAAuBnzC,EACbpS,EAAQH,QAAQwb,KAAKC,iBAAmBtb,EAAQH,QAAQwb,KAAKE,OAC9DgqC,GAAsBA,EAAmBvmD,OACtDozD,EAAAA,wBAAAA,YAAoC,CAAE1rD,cAAe1G,EAAQJ,eAAiB2lD,EAAmBvmD,OAAOoV,aACnGrV,MAAK,KACFuD,OAAOC,SAASC,QAAQ,IAE3BpD,OAAOC,IACJmB,EAAUoT,QAAQ,qDAClBpT,EAAUnB,MAAMA,GAChBjC,KAAKi1D,mBACDr1D,EAAUs1D,0CACVl1D,KAAKgzD,eACLhzD,KAAKizD,qBACL,EACH,IAGT7vD,EAAUoT,QAAQ,+EAAgF,EA8GzF,KAAA2+C,mBAAsB12D,MAE9BA,GAASA,EAAMoD,OADG,KAEnB7B,KAAKwB,SAAS,CAAEsD,SAAU,EAAGuhC,kBAAmB,GAAI+uB,qBAAiBnyD,IACrEjD,KAAKi1D,mBAAmB,GAAI,GAAI,IAAI,IAEpCj1D,KAAKq1D,sBAELr1D,KAAKq1D,qBAAqBC,SAG9B,MAAM,UAAElyD,EAAS,QAAER,GAAY5C,KAAKjC,MAE/B+c,EAAAA,iBAAiBgtC,cAAcrpD,GAgChCuB,KAAKwB,SAAS,CAAE4zD,qBAAiBnyD,EAAWsyD,8BAA8B,KA/B1Ev1D,KAAKq1D,qBAAuB5oD,KAAS,MACjC+oD,EAAAA,EAAAA,eACI,IAAIC,EAAAA,mBACA7yD,EAAQJ,cAAcoO,eAAelO,YACrCjE,EACAmE,EAAQJ,cAAcoO,eAAelO,YAAYC,WAErD3C,KAAKjC,MAAM6E,QAAQJ,eAElBb,MAAK+zD,IACF11D,KAAKwB,SAAS,CACV4zD,gBAAiBM,aAAO,EAAPA,EAASjyB,QAC1B4C,kBAAmBqvB,aAAO,EAAPA,EAASC,qBAC5BJ,8BAA8B,IAE9BG,SAAAA,EAASjyB,SACTzjC,KAAK41D,yBAAyBF,EAAQjyB,QAAS,IAGtDzhC,OAAOC,IACJmB,EAAU45B,UAAU/6B,GACpBmB,EAAU0a,MAAM,6BAA6B,GAC/C,GACP9d,KAAK8yD,WAERv8C,YAAW,KAEPvW,KAAKq1D,sBAAsB,GA7BhB,GA+Bfr1D,KAAKwB,SAAS,CAAE+zD,8BAA8B,IAEoC,EAQzE,KAAAM,sBAAyB70D,IAAuB,IAAA80D,EAC7D,IAAIrqD,EAAepG,OAAOC,SAAStE,EAAO,IAC1C,MAAMuL,EAAevM,KAAK+1D,eAAelwD,mBAAmB2G,kBAAoBxM,KAAK+1D,eAAelwD,QAEpG,IAAImwD,EAAkB,EAClBC,GAA+B,EACnC,GAAIj2D,KAAKyzD,uCAAyCjzC,EAAAA,iBAAiBC,kBAA4C,QAA3Bq1C,EAAC91D,KAAKzB,MAAM62D,uBAAe,IAAAU,OAAA,EAA1BA,EAA4Bj+B,UAAW,CAAC,IAADq+B,EACxH,MAAM7D,EAAWryD,KAAKzB,MAAM62D,gBAAiBv9B,SAC7Cm+B,EAA2C,QAA5BE,EAAG7D,aAAQ,EAARA,EAAUC,uBAAe,IAAA4D,EAAAA,EAAI,EAC/C,MAAMC,EAAkBnd,KAAKxtC,IAAIC,EAAcuqD,GAC3CG,IAAoB1qD,IACpBwqD,GAAsB,GAE1BxqD,EAAe0qD,CAAgB,CAGnCn2D,KAAKwB,SAAS,CAAEsD,SAAU2G,IAAgB,KACtCgB,KAAS,KACDwpD,IAAwB5wD,OAAOuF,MAAM5K,KAAKzB,MAAMuG,WAAayH,IAC7DA,EAAaG,aAAa,gBAAiBjB,EAAapH,YACxDkI,EAAavL,MAAQyK,EAAapH,WAAW,GAjBnB,IAclCoI,EAKmC,GACrC,EASW,KAAAwD,iBAAmB,CAACC,EAAuBtQ,KAA0D,IAAAw2D,EAClH,MAAMzuB,EAAuC,QAA7ByuB,EAAGp2D,KAAKzB,MAAM62D,uBAAe,IAAAgB,OAAA,EAA1BA,EAA4BvyB,WAE/C,OAAQ3zB,GACJ,KAAKwwC,EAAAA,qBAAqBC,MACtB,OAAO/gD,EAAUuQ,0BACrB,KAAKuwC,EAAAA,qBAAqB2V,cACtB,OAAOz2D,EAAUwQ,kCACrB,KAAKswC,EAAAA,qBAAqBG,KACtB,OAAOjhD,EAAUyQ,yBACrB,KAAKqwC,EAAAA,qBAAqBK,MACtB,OAAOpZ,EAAa/nC,EAAU02D,2BAA6B12D,EAAU0Q,0BACzE,QACI,MAAO,GAAG,EAOL,KAAA+jD,kBAAoB9xD,UACjC,MACIK,SAAS,cACLJ,EACAC,SACIC,aAAa,UAAEC,MAGvB3C,KAAKjC,OACH,kBAAEsoC,EAAiB,gBAAE+uB,GAAoBp1D,KAAKzB,MAC9Cg4D,EAAuBj2D,EAAAA,gBAAgBC,YAAY8lC,GACzD,IAAK+uB,IAAoBmB,EACrB,OAGJ,MAAMC,EAAkB5vD,EAAA,GAAkC5G,KAAKozD,aAI/D,GAHApzD,KAAKwB,SAAS,CAAEkzD,qBAAqB,IAGjC10D,KAAKzB,MAAMk4D,2BAA2BC,WAAY,CAElD,MAAMC,EAAoB/vD,EAAA,GAAQ5G,KAAKzB,MAAMk4D,4BAC7CE,EAAqBD,gBAAazzD,EAClCjD,KAAKwB,SAAS,CAAEi1D,2BAA4BE,GAAwB,CAIxE,IAAK,MAAMC,KAAgB5vD,OAAO6vD,KAAKL,GACnC,GAAIx2D,KAAKzB,MAAMk4D,2BAA2BK,gBAAgBF,GAAe,CAErE,MAAMG,EAAUnwD,EAAA,GAAQ5G,KAAKzB,MAAMk4D,4BACnCM,EAAWD,gBAAgBF,QAAgB3zD,EAE3CjD,KAAKwB,SAAS,CAAEi1D,2BAA4BM,GAAc,CAMlE,MAAMloD,EAAmBw3B,aAAiB,EAAjBA,EACnB79B,KAAI+E,IAAY,IAAAypD,EACd,MAAO,CACHxpD,mBAAoBD,EAAUC,mBAC9BsB,eAC2F,QAD7EkoD,EACVh3D,KAAKmO,sBAAsBZ,EAAWipD,EAAmBjpD,EAAUC,4BAAoB,IAAAwpD,EAAAA,EAAIzpD,EAAUuB,eACzGC,oBAAqBxB,EAAUwB,oBAClC,IAEJtB,QAAOF,GACGA,EAAUuB,iBAMnBhQ,EAAkB,IAAIuE,SAA8Bd,UACtD,MAAM00D,QAAmB9zD,EAAAA,EAAAA,oBACrB,IAAIL,EAAAA,qBACAsyD,EAAgB7rD,gBAAkB6rD,EAAgB7rD,gBAAkB6rD,EAAgBpyD,SACpFL,EACAkM,OACA5L,EACAjD,KAAKjC,MAAM6E,QAAQH,SAEvBD,GAEAy0D,SACMztD,EAAAA,EAAAA,iCACF,IAAIC,EAAAA,qCACAwtD,EAAW1tD,gBAAkB0tD,EAAW1tD,gBAAkB0tD,EAAWj0D,SACrEL,EACAkM,EACA7O,KAAKjC,MAAM6E,QAAQH,SAEvBD,GAIRc,EAAQ2zD,EAAW,IAGjBjoD,QAAuBlQ,EAC7BkB,KAAKwB,SAAS,CAAE4zD,gBAAoC,OAAnBpmD,EAA0BA,OAAiB/L,GAAY,EAS3E,KAAAkL,sBAAwB,CACrCC,EACAC,KAEA,GAAIA,GAAcD,EAAqBE,gBACnC,OAAOF,EAAqBE,gBAAgBC,MAAKhB,GAAaA,EAAUvK,YAAcqL,GAG1E,EAUH,KAAA6oD,yBAA2B,CACxCC,EACAv3D,EACA+nC,KAEA,MAAMyvB,EAAqBx3D,EAAUy3D,qDAErC,OAAQF,GACJ,KAAKzW,EAAAA,qBAAqBC,MACtB,OAAO/gD,EAAU03D,oDACrB,KAAK5W,EAAAA,qBAAqB2V,cACtB,OAAOz2D,EAAU23D,4DACrB,KAAK7W,EAAAA,qBAAqBG,KACtB,OAAOjhD,EAAU43D,mDACrB,KAAK9W,EAAAA,qBAAqBK,MACtB,OAAOpZ,EAAayvB,EAAqBx3D,EAAU63D,oDACvD,QACI,MAAO,GAAG,EAUL,KAAAtsC,cAAgB,CAACiqC,EAAgCtwD,KAA6B,IAAA4yD,EAE3F,MAAMpqD,EAA8C,QAA7BoqD,EAAGtC,EAAgBzxB,kBAAU,IAAA+zB,OAAA,EAA1BA,EAA4BjqD,QAClDF,KAAeA,EAAUuB,gBAAkBvB,EAAUuB,eAAeyD,SAGxE,GAAIjS,EAAAA,gBAAgBC,YAAY+M,GAAoB,CAChD,MAAM8I,EAAcpW,KAAK23D,oBAAoBrqD,GAAmB,GAEhE,GAAItN,KAAKzB,MAAMk4D,2BAA2BK,gBAAiB,CAEvD,MAAMC,EAAUnwD,EAAA,GAAQ5G,KAAKzB,MAAMk4D,4BAInC,OAHAM,EAAWD,gBAAkB1gD,EAE7BpW,KAAKwB,SAAS,CAAEi1D,2BAA4BM,KACrC,CAAM,CAAD,CAIpB,GAAIjyD,GAdoB,EAcS,CAC7B,MAAMlF,EAAYI,KAAKjC,MAAM6B,UAE7B,OADAI,KAAKi1D,mBAAmBr1D,EAAUg4D,oCAAqC53D,KAAKgzD,eAAgBhzD,KAAKizD,qBAAqB,IAC/G,CAAM,CAEjB,OAAO,CAAI,EA8BE,KAAA6B,mBAAqB,CAACr9C,EAA6B3S,KAChE,MAAM,QAAElC,EAAO,KAAEoS,EAAI,UAAE5R,GAAcpD,KAAKjC,OACpC,mBAAEoqD,GAAuBnzC,EAC/B,GAAImzC,SAAAA,EAAoBvmD,OAAQ,CAC5B,MAAMi2D,EAA8B1P,EAAmBvmD,OAAOwmD,wBAC9D,GAAI9nD,EAAAA,gBAAgBC,YAAYs3D,GAA8B,CAC1D,MAAMt8C,EAAiBs8C,EAA4Br8C,WAC9C7F,GAAkCA,EAAMK,gBAAgByF,SAAWhE,IAElEiE,EAAkB9U,EAAA,GAAQixD,EAA4Bt8C,IAC5D,GAAIs8C,EAA4Bt8C,GAAgBvF,gBAAgB8B,WAAahT,EACzE,OAAO,EAEX,MAAMgzD,EAAmBp8C,EAAmB1F,gBAAgB8B,SAC5D4D,EAAmB1F,gBAAgB8B,SAAWhT,EAC9C,MAAM,YAAE4S,GAAyBgE,EAAT5F,GAAI8F,EAAAA,EAAAA,GAAKF,EAAkBG,GAEnDm5C,EAAAA,wBAAAA,4BACI,CAAE1rD,cAAe1G,EAAQJ,eACzB2lD,EAAmBvmD,OAAOoV,YAAYC,GACtC,CAACnB,EAAKE,kBAELrU,MAAKqa,IACF,GAAI1b,EAAAA,gBAAgBC,YAAYyb,GAAO,CACnC,MAAMC,EAAUD,EAAKzN,MAAKoH,GAASA,EAAM8F,SAAWhE,IACpDogD,EAA4Bt8C,GAAgBvF,gBAAkBiG,EAC9D,MAAMC,EAAe,IAAI27C,GACzB37C,EAAaX,GAAkB,CAAE7D,cAAa1B,gBAAiBiG,GAC/D,MAAM87C,EAAkBnxD,EAAAA,EAAA,GAAQuhD,EAAmBvmD,QAAM,IAAEwa,iBAAkBF,IAK7E,OAJAtZ,EAAQJ,cAAc6Z,OAClB,IAAI27C,EAAAA,uBAAuBp1D,EAAQJ,cAAcoO,gBACjDmnD,IAEG,CAAK,CAGhB,OAAO,CAAK,IAEf/1D,OAAOC,IACJmB,EAAUoT,QAAQ,yDAClBpT,EAAUnB,MAAMA,EAAM8b,SAItB,OAFArC,EAAmB1F,gBAAgB8B,SAAWggD,EAC9C93D,KAAKi1D,mBAFe,mCAEiBj1D,KAAKgzD,eAAgBhzD,KAAKizD,qBAAqB,IAC7E,CAAK,GACb,CAEX,OAAO,CAAM,CAGjB,OAAO,CAAK,EAOC,KAAA2B,wBAA2B9+C,IACxC,MAAM,QAAElT,EAAO,KAAEoS,EAAI,UAAE5R,GAAcpD,KAAKjC,OACpC,mBAAEoqD,GAAuBnzC,EAE/B,GAAImzC,SAAAA,EAAoBvmD,OAAQ,CACVgB,EAAQH,QAAQwb,KAAKC,iBAAmBtb,EAAQH,QAAQwb,KAAKE,MAE3E62C,EAAAA,wBAAAA,4BACI,CAAE1rD,cAAe1G,EAAQJ,eACzBsT,EAAKE,gBAAgBrI,cACrB,CAACmI,EAAKE,kBAELrU,MAAK,KACFuD,OAAOC,SAASC,QAAO,EAAM,IAEhCpD,OAAOC,IACJmB,EAAUoT,QAAQ,gEAClBpT,EAAUnB,MAAMA,EAAM8b,QAAQ,IAGtC3a,EAAUoT,QAAQ,yFAAyF,GAKtG,KAAArB,yCAA2C,KACxD,IAAI1Q,GAAsC,EACP,IAAD2Q,EAA9BpV,KAAKjC,MAAMiX,KAAKK,eAChB5Q,GACuC,QAAnC2Q,EAAApV,KAAKjC,MAAMiX,KAAKK,aAAazT,cAAM,IAAAwT,GAElC,QAFkCA,EAAnCA,EAAqC7G,MACjC+G,GAA4B,2DAAjBA,EAAQzM,cACtB,IAAAuM,OAAA,EAFDA,EAEGG,aAAa,GAExB,OAAO9Q,CAAmC,EAM7B,KAAAwzD,0BAA4B11D,UACzC,MACIK,SAAS,cAAEJ,GAAe,UAC1B5C,EAAS,UACTwD,GACApD,KAAKjC,OACH,wCACFm6D,EAAuC,wCACvCC,EAAuC,wCACvCC,GACAx4D,GACE,gBAAEw1D,EAAe,SAAEtwD,EAAQ,cAAEmR,GAAkBjW,KAAKzB,MAEpDmG,GAAY4D,EAAAA,EAAAA,IAAatI,KAAKjC,MAAM6E,QAAQH,SAIlD,GAFAzC,KAAKi1D,mBAAmB,GAAI,GAAI,IAAI,QAEZhyD,IAApBmyD,GAAiCp1D,KAAKmrB,cAAciqC,EAAiBtwD,GAAW,CAAC,IAADuzD,EAKhF,GAJIv9C,EAAAA,iBAAiBC,mBAAmB9E,UAC9BjW,KAAKs4D,qBAGXx9C,EAAAA,iBAAiBC,mBAAmB/a,KAAKzB,MAAM0X,eAE/C,YADAjW,KAAKi1D,mBAAmBkD,EAAyCn4D,KAAKgzD,eAAgBhzD,KAAKizD,qBAAqB,GAGpH,MAAMtuD,EAAQ,IAAI4zD,EAAAA,0BACdv4D,KAAKzB,MAAM0X,cACXm/C,EAAgBpyD,SAChB8B,EACoC,QAD5BuzD,EACRjD,EAAgBrwD,4BAAoB,IAAAszD,EAAAA,EAAI,KACxCr4D,KAAKmV,2CACLzQ,SAGE8zD,EAAAA,EAAAA,4BAA2B7zD,EAAOnC,GACnCb,MAAKC,IACEA,EAAO+L,gBACP3N,KAAKi1D,mBAAmBiD,EAAyC,UAAW,gBAAgB,GAC5FhzD,OAAOC,SAASC,SAChBpF,KAAKwB,SAAS,CAAC,GAAG,IAGzBQ,OAAOC,IACJmB,EAAU0a,MAAM,iFACG,wDAAf7b,EAAMhC,KACND,KAAKi1D,mBACDmD,EACAp4D,KAAKgzD,eACLhzD,KAAKizD,qBACL,GAGJjzD,KAAKi1D,mBACDkD,EACAn4D,KAAKgzD,eACLhzD,KAAKizD,qBACL,EACF,GAEP,GAQP,KAAAqF,mBAAqB/1D,UACzB,MACIK,SAAS,cAAEJ,GAAe,UAC1BY,EAAS,UACTxD,GACAI,KAAKjC,OACH,cAAEkY,GAAkBjW,KAAKzB,OACzB,wCAAE45D,GAA4Cv4D,EAEpD,GAAIkb,EAAAA,iBAAiBC,mBAAmB9E,GAAgB,CACpD,MAAMtR,EAAQ,IAAI8zD,EAAAA,uBAAuB,GAAIC,EAAAA,gBAAgBC,YAgB7D,aAdMC,EAAAA,EAAAA,mBAAkBj0D,EAAOnC,GAC1Bb,MAAKC,GACGkZ,EAAAA,iBAAiBC,mBAAmBnZ,EAAOqV,IAIzC,IAHHjX,KAAKwB,SAAS,CAAEyU,cAAerU,EAAOqV,KAC/BrV,EAAOqV,MAIrBjV,OAAOC,IACJmB,EAAU0a,MAAM,0EAChB1a,EAAUnB,MAAMA,EAAM8b,SACtB/d,KAAKi1D,mBAAmBkD,EAAyCn4D,KAAKgzD,eAAgBhzD,KAAKizD,qBAAqB,GACzG,MAER,EAAG,CAGd,OAAOh9C,CAAa,EAUP,KAAAg/C,mBAAqB,CAAChG,EAAqB54C,EAAyBC,EAAsB9X,KACvGwB,KAAKwB,SAAS,CAEVwtD,aAAc,CACVC,cACA54C,kBACAC,eACA9X,WAEN,EAl5BFwB,KAAK64D,kBAAoB76D,EAAAA,YACzBgC,KAAK+1D,eAAiB/3D,EAAAA,YAEtBgC,KAAK84D,mBAAoBp5C,EAAAA,EAAAA,oBACrB1f,KAAKjC,MAAM6E,QAAQH,QAAQkd,kBAC3B3f,KAAKjC,MAAM6hB,aACX5f,KAAKjC,MAAMqF,WAEfpD,KAAKzB,MAAQ,CACTg3D,8BAA8B,EAC9B5qD,IAAK,EACLa,IAAK,GACL1G,SAAU,EACVswD,qBAAiBnyD,EACjBojC,uBAAmBpjC,EACnBwzD,2BAA4B,CACxBK,gBAAiB,CAAC,GAEtB92C,SAAUhgB,KAAKggB,SACfthB,SAAU,GACVg2D,qBAAqB,EACrBz+C,cAAe,IAGnBjW,KAAK+4D,yBAA2B,oCAChC/4D,KAAKg5D,kCAAoC,yCACzCh5D,KAAKi5D,8BAAgC,wCAErCj5D,KAAKyzD,qCAEc,QAFsB/6C,EACF,QADE+5C,EACrCzyD,KAAKjC,MAAMiX,KAAKK,aAAazT,cAAM,IAAA6wD,GAAyF,QAAzFA,EAAnCA,EAAqClkD,MAAK8G,GCnLa,oEDmLGA,EAAaxM,cAAqD,IAAA4pD,OAAA,EAA5HA,EACMl9C,iBAAS,IAAAmD,GAAAA,EAEnB1Y,KAAK0zD,+BAEc,QAFgBhB,EACI,QADJC,EAC/B3yD,KAAKjC,MAAMiX,KAAKK,aAAazT,cAAM,IAAA+wD,GAA6F,QAA7FA,EAAnCA,EAAqCpkD,MAAK8G,GCpLlD,wEDoLkEA,EAAaxM,cAAyD,IAAA8pD,OAAA,EAAhIA,EACMp9C,iBAAS,IAAAm9C,GAAAA,EAEnB,MAAMzvB,EAAoBjjC,KAAKjC,MAAMiX,KAAKiuB,kBAC1CjjC,KAAK2zD,sCAAsG,QAAjEf,EAAG3vB,SAAyB,QAAR4vB,EAAjB5vB,EAAmBrhC,cAAM,IAAAixD,OAAA,EAAzBA,EAA2BqG,2CAAmC,IAAAtG,GAAAA,CAC/G,CAEqB5yC,eAEjB,MAAgB,QADHA,EAAAA,EAAAA,UAAS,CAAE1N,QAAS0gC,EAAAA,YAAY0e,SAAU9uD,QAAS5C,KAAKjC,MAAM6E,QAAQH,SAEvF,CAEO+D,SAAM,IAAA2yD,EAAAC,EACT,MAAM,KAAEpkD,GAAShV,KAAKjC,MACtB,IAAKiX,EAAK6tB,oBAAoBjhC,OAC1B,OAAO,KAEX,MAAMumD,EAAqBnzC,EAAKmzC,wBAEGllD,KAA/BklD,aAAkB,EAAlBA,EAAoBvmD,SACpB5B,KAAKwB,SAAS,CACV9C,SAAUypD,EAAmBvmD,OAAOwmD,wBACpCnyC,cAAekyC,EAAmBvmD,OAAOoV,YAAYC,KAG7D,MAAM,UAAEhZ,EAAY,GAAE,YAAEk9B,GAAgBn7B,KAAKjC,MAAM8G,OAC7Ci+B,EAAe9iC,KAAKjC,MAAMiX,KAAK6tB,oBAAoBjhC,QACnD,4BACFy3D,EAA2B,gCAC3BC,EAA+B,wBAC/BC,EAAuB,wCACvBC,EAAuC,gCACvCC,EAA+B,wCAC/BC,EAAuC,gDACvCC,EAA+C,0CAC/CC,EAAyC,uCACzCC,EAAsC,wCACtCC,EAAuC,yCACvCC,EAAwC,gCACxCC,GACAh6D,KAAKjC,MAAM6B,UAETq6D,EAAiE,CACnEC,4BAA6BN,EAC7BzpD,0BAA2BupD,EAC3BtpD,kCAAmCupD,EACnCtpD,yBAA0BwpD,EAC1BvpD,0BAA2BwpD,EAC3BxD,2BAA4ByD,IAG1B,6BAAExE,EAA4B,2BAAEkB,EAA0B,gBAAErB,EAAe,kBAAE/uB,GAAsBrmC,KAAKzB,MAExGw1C,EAAkB,GAAG/zC,KAAKwzD,qBAE1B2G,EACFn8D,EAAAA,cAAA,OAAKC,UAAW81C,GACZ/1C,EAAAA,cAAC6iB,EAAAA,QAAO,CAAC5iB,UAAW,GAAG81C,YAA2B7zB,KAAM85C,KAI1D3yD,EAAST,EAAAA,EAAA,GACP5G,KAAKjC,OAAmD,IAE5Dq8D,oBAAqB,CAAEn8D,UAAWkU,IAAW,sBAAuBlU,GAAY0iB,YAAa3gB,KAAKjC,OAClGs8D,aAAc,CAAEp8D,UAAW,gCAC3Bq8D,cAAex3B,aAAY,EAAZA,EAAcC,MAC7Bo3B,SACAI,QAAS,CACLt8D,UAAW,GAAG+B,KAAKwzD,wBACnB/xC,IAAK,OAET+4C,OAAQ,CACJ/4C,IAAKsqC,EACL9tD,UAAW,GAAG+B,KAAKwzD,qBACnBpH,cAAe,CAAE5tD,OAAQwB,KAAKzB,MAAMg3D,8BACpC/H,kBAAmB6L,EACnB5L,sBAAuB6L,EACvB1oD,eAAgB5Q,KAAKjC,MAAM6E,QAAQH,QACnCiD,iBAAkB1F,KAAK84D,mBAE3B2B,aAAcz6D,KAAK06D,sBACnBC,mBAAoB,CAChB18D,UAAW,GAAG+B,KAAK+4D,4BAA4BxD,EAA+B,UAAY,aAE9FqF,iCAAkC,CAC9B38D,UAAW+B,KAAKg5D,mCAEpB6B,6BAA8B,CAC1B58D,UAAW+B,KAAKi5D,+BAEpB6B,KAAMlN,EAA4B,CAC9BC,iBAAkB7tD,KAAK64D,kBACvB/K,kBAAmB9tD,KAAK+1D,eACxB7H,qBAAsBkH,EACtB/G,mBAAoBkL,EACpBnL,iBAAkBqL,EAClBtL,kBAAmBqL,EACnBxL,SAAU,GACVC,YAA2B,QAAhBkL,EAAEn5D,KAAKzB,MAAMoM,WAAG,IAAAwuD,EAAAA,EAAI,EAC/Bh+B,YAA2B,QAAhBi+B,EAAEp5D,KAAKzB,MAAMiN,WAAG,IAAA4tD,EAAAA,EAAIj+B,EAC/BqwB,gBAAiBxrD,KAAKwzD,WACtBzF,oBAAqB/tD,KAAKzB,MAC1BgwD,kBAAmBvuD,KAAKm1D,mBACxB7G,qBAAsBtuD,KAAK61D,sBAC3BrH,0BAA2BxuD,KAAKi4D,4BAEpC8C,UACI3F,GAAmB/uB,GACb20B,EAAAA,EAAAA,qBACIh7D,KAAKuzD,uBACLvzD,KAAKjC,MAAM6E,QACX5C,KAAKjC,MAAM6hB,aACX5f,KAAKjC,MAAMqF,UACXw2D,EACAK,EACAj6D,KAAK4zD,yBACLwB,EACA/uB,EACAowB,QAEJxzD,EACVsyD,6BAA8Bv1D,KAAKzB,MAAMg3D,6BACzC1D,aAAc7xD,KAAKzB,MAAMyhB,SACzBi7C,UAAW36D,EAAAA,gBAAgBC,YAAYP,KAAKzB,MAAMG,UAAYsB,KAAKk7D,4BAAyBj4D,EAC5Fme,aAAcphB,KAAKm7D,6BAA6BhT,aAAkB,EAAlBA,EAAoBvmD,UAGxE,OAAO5B,KAAKjC,MAAM+iB,WAAWzZ,EACjC,CAEQ8zD,6BAA6BhT,GACjC,MAAM,SAAEtvC,EAAQ,QAAEjW,EAAO,UAAEhD,GAAcI,KAAKjC,OACxC,+BACFq9D,EAA8B,oCAC9B9S,EAAmC,yCACnCE,EAAwC,4DACxC8B,EAA2D,qEAC3DX,EAAoE,2BACpEJ,EAA0B,8BAC1BE,EAA6B,6BAC7BI,EAA4B,sCAC5BE,EAAqC,mCACrCE,EAAkC,gCAClCE,EAA+B,kBAC/BC,EAAiB,kBACjB5lC,EAAiB,iBACjBC,EAAgB,cAChBF,GACA3kB,EACJ,GAAIU,EAAAA,gBAAgBC,YAAY4nD,aAAkB,EAAlBA,EAAoBC,yBAA0B,CAuC1E,MPlU8BrqD,KACtC,MAAM,gBAAEytD,EAAe,oBAAEuC,EAAmB,UAAEnuD,GAAc7B,GACtD,+BAAEq9D,GAAmCx7D,EAErCy7D,EAAkBtN,EAAoBuN,gBACxCt9D,EAAAA,cAAC8U,EAAAA,MAAK,CAAC1R,MAAO2sD,EAAoBuN,gBAAgBjlD,gBAAiB7X,OAAQuvD,EAAoBuN,gBAAgB98D,QAC3GR,EAAAA,cAAA,QAAMC,UAAW8vD,EAAoBuN,gBAAgBhlD,eACrDtY,EAAAA,cAAA,YAAO+vD,EAAoBuN,gBAAgBrM,mBAG/ChsD,EAGJ,MAAO,CACHs4D,oBAAqBhQ,EAAiCxtD,GACtD8tD,kBACI7tD,EAAAA,cAACkU,EAAAA,OAAM,CAACjU,UAAW,GAAGutD,mCAAkDrkD,QAASykD,EAAoB7tD,IAChGq9D,GAGThlD,YAAailD,EAChB,EO6ScG,CAtCoD,CACvDxmD,KAAM,CAAEmzC,sBACRqD,gBAAiBxrD,KAAKwzD,WACtB/yD,GAAI,mBACJoY,WACAjW,UACAuiB,SAAU,CACN0mC,kBAAmB7rD,KAAK+0D,mBACxBpJ,eAAiB5tC,GACb/d,KAAKwB,SAAS,CACV85D,gBAAiB,CACbrM,YAAalxC,EACb1H,gBAAiBrW,KAAKgzD,eACtB18C,aAActW,KAAKizD,oBACnBz0D,QAAQ,MAIxBuvD,oBAAqB/tD,KAAKzB,MAC1BqB,UAAW,CACPw7D,iCACA9S,sCACAE,2CACA8B,8DACAX,uEACAJ,6BACAE,gCACAI,+BACAE,wCACAE,qCACAE,kCACAC,oBACA5lC,oBACAC,mBACAF,kBAIgD,CAE5D,OAAO,IACX,CAMQm2C,sBAEJ,IAAK16D,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAO42D,sBAC/B,OAAO,KAGX,IAAKn7D,EAAAA,gBAAgBC,YAAYP,KAAKjC,MAAMsvB,MAAMquC,mBAC9C,OAAO,KAGX,MAAMC,EAAiB,GAAG37D,KAAKwzD,4BAC/B,OACIx1D,EAAAA,cAAA,OAAKC,UAAW09D,GACX39D,EAAAA,aAAmBgC,KAAKjC,MAAMsvB,MAAMquC,kBAAkB,GAA0B,CAC7Er1B,kBAAmBrmC,KAAKzB,MAAM8nC,oBAI9C,CAMQ60B,uBACJ,MAAMS,EAAiB,GAAG37D,KAAKwzD,4BAC/B,OAAOx1D,EAAAA,cAAA,OAAKC,UAAW09D,GAAiB37D,KAAK47D,uBAAuB57D,KAAKwzD,YAC7E,CAMQqI,8BACJ,MAEMC,EAFqC97D,KAAKzB,MAAMG,SAEU8J,KAAKzF,GAC1D,IAAImsD,EAAsBnsD,KAGrC,OAAOzC,EAAAA,gBAAgBm7C,YAAYqgB,EACvC,CAkCQF,uBAAuB39D,GAC3B,MAAMg2C,EAAiB,GAAGh2C,gBAE1B,OACID,EAAAA,cAAC2zD,EAA4B,CACzBlxD,GAAIwzC,EACJ7sB,SAAUpnB,KAAKjC,MAAM0C,GACrB4mB,eAAgBrnB,KAAKjC,MAAM8a,SAC3BA,SAAU7Y,KAAKjC,MAAM8a,SACrBlQ,IAAKsrC,EACLh2C,UAAWg2C,EACXj/B,KAAM,CACF88C,uBAAwB9xD,KAAK67D,8BAC7B9J,oCAAqC/xD,KAAKyzD,sCAE9C7wD,QAAS5C,KAAKjC,MAAM6E,QACpBhD,UAAWI,KAAKjC,MAAM6B,UACtBiyD,aAAc7xD,KAAKzB,MAAMyhB,SACzBuyC,UAAWvyD,KAAK20D,6BAG5B,CAEQiB,yBAAyB7yD,GAC7B,MAAM4H,EAAc3K,KAAK+7D,+BAA+B/7D,KAAKyzD,qCAAsC1wD,GAC7FyI,EAAcxL,KAAKg8D,+BACrBh8D,KAAK0zD,gCAAkC1zD,KAAKyzD,qCAC5C1wD,GAEJ,IAAI+B,EAAmB9E,KAAKi8D,aACxBj8D,KAAKyzD,qCACLzzD,KAAK2zD,sCACL5wD,GAEJ+B,EAAWk0C,KAAKxtC,IAAI1G,EAAU6F,GAE9B3K,KAAKwB,SAAS,CACVmJ,MACAa,MACA1G,YAER,CAEQi3D,+BAA+BhK,EAA8ChvD,GAAsB,IAAA21B,EACvG,OACIq5B,GACA/xD,KAAKk8D,2BADLnK,MAEAhvD,GAAiB,QAAV21B,EAAP31B,EAAS80B,gBAAQ,IAAAa,GAAjBA,EAAmB45B,iBACnBvvD,EAAQ80B,SAASy6B,gBAAkB,EAE5BvvD,EAAQ80B,SAASy6B,gBAGrB,CACX,CAEQ0J,+BAA+BxxC,EAAyCznB,GAAsB,IAAAo5D,EAClG,OACI3xC,GACAxqB,KAAKk8D,2BADL1xC,MAEAznB,GAAiB,QAAVo5D,EAAPp5D,EAAS80B,gBAAQ,IAAAskC,GAAjBA,EAAmBrkC,iBACnB/0B,EAAQ80B,SAASC,gBAAkB,EAE5B/0B,EAAQ80B,SAASC,gBAGrB93B,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAOuY,0BACzC,CAOQ8+C,0BAAuB,IAAAE,EAAAC,EAC3B,MAAMp5B,EAAoBjjC,KAAKjC,MAAMiX,KAAKiuB,kBAC1C,QAAuD,QAAhDm5B,EAAEn5B,SAAyB,QAARo5B,EAAjBp5B,EAAmBrhC,cAAM,IAAAy6D,OAAA,EAAzBA,EAA2Bn5B,2BAAmB,IAAAk5B,GAAAA,EAC3D,CAEQH,aACJlK,EACAuK,EACAv5D,GAAsB,IAAAw5D,EAEtB,IAAIC,EAAkB,EAEtB,OAAKzK,GAAwCuK,GAIzCv5D,SAAiB,QAAVw5D,EAAPx5D,EAAS80B,gBAAQ,IAAA0kC,GAAjBA,EAAmBE,iBAAmB15D,EAAQ80B,SAAS4kC,gBAAkB,IACzED,EAAkBz5D,EAAQ80B,SAAS4kC,iBAGhCD,GAPIA,CAQf,CAwRQ7E,oBACJ/1D,EACA+lC,GAEA,IAAK/lC,EACD,MAAO,CAAC,EAEZ,MAAM2B,EAA4D,CAAC,EAC7D3D,EAAYI,KAAKjC,MAAM6B,UAC7B,IAAK,MAAM2N,KAAa3L,EACpB2B,EAAWgK,EAAUC,oBAAsBxN,KAAKk3D,yBAAyB3pD,EAAUC,mBAAoB5N,EAAW+nC,GAEtH,OAAOpkC,CACX,GA9oBUmG,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,6BA62Bb,qFE3lCA,MAAM+yD,EAA2BC,IAC7B,MAAM,eAAEC,EAAc,oBAAEC,EAAmB,QAAE58C,EAAO,OAAE7S,EAAM,OAAE0vD,GAAWH,EAEzE,OACI3+D,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAK21D,GACN5+D,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAK41D,GAAsB58C,GAC/B7S,EACA0vD,EACE,EASTC,EAAmBhC,IACrB,QAAkB93D,IAAd83D,EAAyB,CACzB,MAAM,eAAE6B,EAAc,UAAEI,GAAcjC,EAEtC,OAAO/8D,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAK21D,GAAiBI,EAAUx0D,IAAIk0D,GAAiC,CAErF,OAAO,IAAI,EA8Ff,EA7C+D3+D,IAC3D,MAAM,oBACFq8D,EAAmB,aACnBC,EAAY,KACZS,EAAI,mBACJH,EAAkB,OAClBH,EAAM,UACNO,EAAS,iCACTH,EAAgC,6BAChCC,EAA4B,aAC5BhJ,EAAY,OACZsI,EAAM,UACNc,EAAS,QACTV,EAAO,aACPn5C,GACArjB,EAEJ,OACIC,EAAAA,cAAC+qB,EAAAA,OAAM/hB,OAAAC,OAAA,GAAKmzD,GACPD,EACAI,GACGv8D,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKszD,GACLn5C,aAAY,EAAZA,EAAchL,YACdgL,aAAY,EAAZA,EAAcm6C,oBACdn6C,aAAY,EAAZA,EAAcyqC,mBAGvB7tD,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKuzD,GACNx8D,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKozD,GAhEP4C,EACfnC,EACAjJ,EACAqL,EACAC,EACAC,EACArC,IAEOlJ,EACH7zD,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKi2D,GACNl/D,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKk2D,GACLrC,EAAK/3D,QACLg6D,EAAgBhC,GAChBD,EAAKh2D,SACN9G,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKm2D,GAA2BtC,EAAK1kD,aACzC0kD,EAAK/L,eAId/wD,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKi2D,GACNl/D,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKm2D,GAA2BtC,EAAK1kD,aAC1CpY,EAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKk2D,GACLrC,EAAK/3D,QACLg6D,EAAgBhC,GAChBD,EAAKh2D,SACLg2D,EAAK/L,eAwCDkO,CACGnC,EACAjJ,EACA8I,EACAC,EACAC,EACAE,GAEHh9D,EAAM08D,eAGdQ,EACI,+aC5CjB,SAASoC,EAAyBC,EAA2BhvB,GAAiC,IAAAivB,EAAAC,EAC1F,IAAKlvB,IAAgBA,EAAYmvB,gBAC7B,OAAO,KAGX,MACMC,EADcJ,EACkC3rD,IAAI9M,OAAO64D,kCAE3DC,EAEL,QAFsBJ,EAAGjvB,EAAYmvB,gBAAgBlvD,MAClDqvD,IAAc,IAAAC,EAAA,OAA0B,QAAtBA,EAAAD,EAAeE,eAAO,IAAAD,OAAA,EAAtBA,EAAwBE,uBAAwBL,CAAiC,WACtG,IAAAH,OAAA,EAFyBA,EAEvBS,SAEH,IAAK19D,EAAAA,gBAAgBC,YAAYo9D,GAC7B,OAAO,KAIX,OAD6E,QAA1DH,EAAGG,EAAkBpvD,MAAKjE,IAA2B,IAAnBA,EAAK2zD,mBAAmB,IAAAT,EAAAA,EAAIG,EAAkB,EAEvG,CAyBA,SAASO,EAAiBC,EAA+Bb,EAA2Bc,GAChF,MAAMC,EAAY,IAAIjmD,IAAI+lD,EAAuBb,EAAY76D,QAAQC,YAAY47D,SAC7ED,EAAUE,OACVF,EAAUE,QAAU,IAAIH,IAExBC,EAAUE,QAAUH,EAIxB,OADmB,IAAIhmD,IAAIimD,EAAUhmD,MACnBmmD,SAAWH,EAAUE,MAC3C,CAOA,SAASE,EAA2BC,GAChC,OAAKA,EAID1gE,IAAAA,cAAA,OAAKC,UAAU,gCACXD,IAAAA,cAAA,YAAO0gE,IAJJ,IAOf,CAoVA,SAASC,EACL1+D,EACA+S,EACA2sC,EACAif,EACAC,EACAC,GAEA,MAAMC,EAA2BC,EAAmBH,EAAaC,QAAAA,EAA4B,IAC7F,MAAO,GAAG7+D,QAAAA,EAAQ,MAAM+S,QAAAA,EAAS,MAAMisD,EAAmBtf,EAAQif,KAC9DG,EAA2B,IAAIA,IAA6B,IAEpE,CAMA,SAASE,EAAmBtf,EAAiBuf,GACzC,GAAIvf,GAAUuf,EAAiB,CAC3B,MAAMC,EAAgBxf,EAAOvsC,QAAQ,GACrC,OAAO8sC,EAAAA,EAAAA,QAAOgf,GAAmB,GAAIC,EAAe,IAAK,CAE7D,MAAO,EACX,CAEA,SAASH,EAAmBH,EAAsBC,GAC9C,OAAID,GAAeC,GACR5e,EAAAA,EAAAA,QAAO4e,GAA4B,GAAID,GAE3C,EACX,CAkCA,SAASO,EACLx8D,EACAiW,EACApY,EACA4+D,EACAC,EACA/6C,EACAC,EACAC,EACA86C,EACAC,EACA/vD,GAEA,MAAM1M,EAAyB,CAE3B6U,iBAAkBynD,EAAoBI,gBAAkBC,EAAAA,YAAYC,OAASD,EAAAA,YAAYE,YAGvF5sD,EAAsBvD,QAAAA,EAAgB,CACxCI,UAAWwvD,EAAoBxvD,UAC/BgI,cAAewnD,EAAoBnxD,MACnCm2B,wBAAyBg7B,EAAoBnxD,MAC7C2xD,gBAAiBR,EAAoBQ,gBAAkBR,EAAoBQ,gBAAkBR,EAAoBnxD,MACjH4xD,gBAAiBT,EAAoBS,gBAAkBT,EAAoBS,gBAAkBT,EAAoBnxD,OAGrH,OACIlQ,IAAAA,cAACmmC,EAAAA,eAAc,CACXvhC,QAASA,EACTnC,GAAIA,EACJoY,SAAUA,EACV9V,QAASA,EACTiS,KAAM,CAAEhC,SACRssD,YAAaA,EACb/6C,cAAeA,EACfC,kBAAmBA,EACnB+6C,qBAAsBA,EACtBC,eAAgBA,GAG5B,CAEA,SAASO,EACLz4D,EACAuJ,EACAyyC,EACAld,EACA/0B,EACAzO,GAAsC,IAAAo9D,EAEtC,IAAK1c,IAAazyC,IAAiBvJ,EAC/B,OAAO,KAGX,MAAM24D,EAAgBr9D,SAAmB,QAAZo9D,EAAPp9D,EAAS+O,IAAI9M,cAAM,IAAAm7D,OAAA,EAAnBA,EAAqBE,qBAE3C,IAAIC,EAAsB/5B,EADI65B,GAED75B,IACzB+5B,EAAsB,GAAG/5B,KAHC65B,KAK9B,MAAMG,EAAkB,CACpB9uD,IAAKgyC,EACLjyC,QAASA,GAAoB,GAC7BG,YAAa2uD,GAEXE,EAAa,CACfxvD,eACAvJ,iBAGJ,OADA+4D,EAAW/4D,cAAcg/B,iBAAkB,EAEvCtoC,IAAAA,cAACoT,EAAAA,GAAKpK,OAAAC,OAAA,CACF2J,eAAgBhO,aAAO,EAAPA,EAASJ,cAAcoO,gBACnCwvD,EACAC,EAAU,CACdxuD,oBAAoB,QACpByuD,qBAAmB,IAG/B,CAEO,MAAMC,EAAoEv/B,EAAAA,GAAiBw/B,wBAEhG,+WAAS55D,CAAA,CAAI65D,UA5auCj3B,IAsBjD,IAAAj5B,EAAAmwD,EAAAC,EAAAC,EAAA,IAtBkD,KACnD5rD,EAAI,QACJpS,EAAO,cACP0E,EAAa,YACbg4D,EAAW,cACX/6C,EAAa,kBACbC,EAAiB,iBACjBC,EAAgB,gBAChBy6C,EAAe,qBACf2B,EAAoB,UACpBC,EAAS,SACTjoD,EAAQ,GACRpY,EAAE,iBACFiF,EAAgB,gBAChBq7D,EAAe,wBACfC,EAAuB,4BACvBC,EAA2B,qBAC3B1B,EAAoB,eACpBC,EAAc,eACd0B,EAAc,wBACdC,EAAuB,oBACvBC,GACH53B,EACG,MAAMzmC,EAAUiS,EAAKjS,QACf0M,EAAeuF,EAAKvF,aAE1B,IAAImL,GAAa81C,EAAAA,EAAAA,uBAAmC,QAAdngD,EAACxN,aAAO,EAAPA,EAAS8F,YAAI,IAAA0H,EAAAA,EAAI,GAAqB,QAAnBmwD,EAAE39D,aAAO,EAAPA,EAASC,gBAAQ,IAAA09D,EAAAA,EAAIr7D,OAAOg8D,UAAWz+D,EAAQJ,mBAAeS,GACtH69D,IACAlmD,EAAasjD,EAAiBtjD,EAAYhY,EAAS,cAEvD,MAAM0+D,EAAiF,QAAxDX,EArInC,SAA6CrD,EAA2BhvB,GACpE,MAAMizB,EAAgBlE,EAAyBC,EAAahvB,GACtDkzB,EAAyBD,aAAa,EAAbA,EAAeE,iBAC9C,OAAKnhE,EAAAA,gBAAgBC,YAAYihE,IAI1B9tD,EAAAA,EAAAA,kBAAiB8tD,EAAuB,GAAIlE,EAAY76D,QAAQC,aAH5D4rC,aAAW,EAAXA,EAAa/8B,eAI5B,CA6HsCmwD,CAAoC9+D,EAASG,UAAQ,IAAA49D,EAAAA,EAAI59D,aAAO,EAAPA,EAASwO,gBAC9FowD,EAA2F,QAAnEf,EAjDlC,SACItD,EACA1iD,EACA0zB,GAEA,MAAMizB,EAAgBlE,EAAyBC,EAAahvB,GAC5D,OAAKizB,SAAAA,EAAeK,YASb1D,EAAiBtjD,EAAY0iD,EADhB,GAJAA,EACkC3rD,IAAI9M,OAAO64D,qCAEtCmE,mBAAmBN,EAAcK,gBANjDhnD,CASf,CAiCqCknD,CAAmCl/D,EAASgY,EAAY7X,UAAQ,IAAA69D,EAAAA,EAAIhmD,GAC9FmnD,EAAgBC,IAAqBjuD,EAAAA,EAAAA,UAAiB4tD,IACtDM,EAAiBC,IAAsBnuD,EAAAA,EAAAA,UAA6ButD,GAC3EtjE,IAAAA,WAAgB,KACZgkE,EAAkBL,GAClBO,EAAmBZ,EAA0B,GAC9C,CAAC1mD,EAAY+mD,EAA0BL,IAC1C,MAAOa,IAAuBpuD,EAAAA,EAAAA,UAAS,IAAIquD,EAAAA,YAErC/gC,EAAmBz+B,EAAQ+O,IAAI9M,OAAOw8B,iBAGtCq8B,EADc96D,EACkC+O,IAAI9M,OAAO64D,kCAO3D2E,EAAwBrkE,IAAAA,aAC1B,CAACs/D,EAA2Bhb,KACxB,MAAMpyC,EAAgBoyC,EAAWpyC,cAEjC,GADAiyD,EAAoBG,SAASpyD,EAAeoyC,GACxCxnC,EAAAA,iBAAiBC,mBAAmBunC,EAAWthD,OAC/C,OAEJ,MAAMo9D,EAAc,GAAGluD,KAAiBoyC,EAAWthD,QACnD,IAAIuhE,EAA2B,GAC/B,GAAIR,EAAelvD,SAAS3C,GAAgB,CACxC,MAAMsyD,EAAS,IAAIpqD,IAAI2pD,EAAgBzE,EAAY76D,QAAQC,YAAY47D,SACvEkE,EAAOvnD,aAAawnD,OAAOvyD,GAC3BqyD,EAA2BrE,EAAiBsE,EAAOn+D,WAAYzB,EAASw7D,EAAa,MAErFmE,EAA2BrE,EAAiB6D,EAAgBn/D,EAASw7D,GAGzE,GADA4D,EAAkBO,GACdryD,IAAkBwtD,EAAmC,CACrD,MAAMgF,EAAwBpiE,EAAAA,gBAAgBC,YAAY+hD,EAAWqgB,kBAC/DrgB,EAAWqgB,iBAAiB,QAC5B1/D,EACA2/D,GAAclvD,EAAAA,EAAAA,kBAAiBgvD,EAAuBpF,EAAY76D,QAAQC,aAChFw/D,EAAmBU,EAAa,IAGxC,CAACT,EAAqBv/D,EAASm/D,IAGnC,IAAKh/D,EACD,OAAO,KA8FX,MAAMyC,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAmB,GAAI3C,EAAQC,SAASqB,YAE5Ew+D,IAAY33C,EAAAA,EAAAA,wBAAuBxlB,EAAmBF,GAGtDs9D,GAAyBlgE,EAAQ+O,IAAI9M,QAA0D,oBAAhDjC,EAAQ+O,IAAI9M,OAAOigC,yBAExE,OACI9mC,IAAAA,cAAAA,IAAAA,SAAA,KACKijE,EACGjjE,IAAAA,cAAA,IAAAgJ,OAAAC,OAAA,CACIoR,KAAM0pD,EACN56D,SAASxB,EAAAA,EAAAA,kBAAiBD,EAAmBF,EAASzC,EAAQ8F,MAAM,aACxD81D,EACR57D,EAAQ8F,KACRjG,EAAQqQ,iBAAiBC,eAAenQ,EAAQmL,OAChDnL,EAAQggE,cACR7D,EACAn8D,EAAQigE,aACRnC,GAEJ5iE,UAAU,eACN4kE,IAEJ7kE,IAAAA,cAAA,OAAKC,UAAU,mCACXD,IAAAA,cAAA,OAAKC,UAAU,sBACV8hE,EACGz4D,EACA1E,EAAQH,QAAQoO,aAChBoxD,EACAl/D,EAAQwO,gBACRxO,EAAQ8F,KACRjG,IAGR5E,IAAAA,cAAA,OAAKC,UAAU,kCACXD,IAAAA,cAAA,MAAIC,UAAU,4BAA4B8E,EAAQ8F,MACjDu2D,EACGx8D,EACAiW,EACApY,EACAsC,EACAu8D,EACA/6C,EACAC,EACAC,EACA86C,EACAC,EACA/vD,GAEHqzD,IAA0BrE,EAA2B17D,EAAQgC,uBAuE/D0iD,GAtEoB1kD,EAAQuwB,YAuE5Ct1B,IAAAA,cAAA,KAAGC,UAAU,qBAAqBwpD,QAlE7BzpD,IAAAA,cAAA,IAAAgJ,OAAAC,OAAA,CACIoR,KAAM0pD,EACN56D,SAASxB,EAAAA,EAAAA,kBAAiBD,EAAmBF,EAASzC,EAAQ8F,MAAM,aACxD81D,EACR57D,EAAQ8F,KACRjG,EAAQqQ,iBAAiBC,eAAenQ,EAAQmL,OAChDnL,EAAQggE,cACR7D,GAEJjhE,UAAU,eACN4kE,IAEJ7kE,IAAAA,cAAA,OAAKC,UAAU,sBACV8hE,EACGz4D,EACA1E,EAAQH,QAAQoO,aAChBoxD,EACAl/D,EAAQwO,gBACRxO,EAAQ8F,KACRjG,IAGR5E,IAAAA,cAAA,OAAKC,UAAU,wBACXD,IAAAA,cAAA,MAAIC,UAAU,sBAAsB8E,EAAQ8F,MAC3Cu2D,EACGx8D,EACAiW,EACApY,EACAsC,EACAu8D,EACA/6C,EACAC,EACAC,EACA86C,EACAC,EACA/vD,GAEHqzD,IAA0BrE,EAA2B17D,EAAQgC,yBApKjDk+D,GAwKAlgE,EAAQ06D,iBAlKjCz/D,IAAAA,cAAA,OAAKC,UAAU,2BACVglE,GAAgBz6D,KAAK8B,IAAwB,IAAA44D,EAAAC,EAAAC,EAAAC,EAC1C,MAAMlM,EAAsD,QAApC+L,EAAe,QAAfC,EAAG74D,EAAKwzD,eAAO,IAAAqF,OAAA,EAAZA,EAAcpF,2BAAmB,IAAAmF,EAAAA,EAAI,GAChE,IAxBhB,SAAgChzD,GAC5B,MACMozD,EADoB1gE,EACiC+O,IAAI9M,OAAO0+D,wBACtE,OACIjjE,EAAAA,gBAAgBC,YAAY+iE,KAC3BA,EAAiCzwD,SAAS0uC,EAAAA,eAAehM,OAC1D+tB,EAAiCzwD,SAAS3C,EAAc6tD,oBAEhE,CAgBqByF,CAAuBrM,GACxB,OAAO,KAGX,MACMuG,EADc96D,EACkC+O,IAAI9M,OAAO64D,kCAC3DxtD,EAAgBinD,EAChB9U,EAiBA,QAjBQ+gB,EACG,QADHC,EACV/4D,EAAK0zD,gBAAQ,IAAAqF,OAAA,EAAbA,EAAe76D,KAAiB85C,IAAa,IAAAmhB,EAAAC,EAAAC,EAAAC,EACzC,MAAO,CACHh1B,OAAQ,GAAgB,QAAhB60B,EAAGn5D,EAAKtH,gBAAQ,IAAAygE,EAAAA,EAAI,MAAMtM,KAA4C,QAA1BuM,EAAIphB,EAAWsf,mBAAW,IAAA8B,EAAAA,EAAI,KAClF1iE,MAA6B,QAAxB2iE,EAAErhB,EAAWsf,mBAAW,IAAA+B,EAAAA,EAAI,GACjCzzD,gBACAkzC,aAAcd,EAAWuhB,mBACzBvgB,SAAUhB,EAAWwhB,eACrBnB,iBAAkBrgB,EAAWmf,iBAC7Bje,UAAWlB,EAAW2b,UACtBmD,oBAAqBA,GAAsBlhB,EAAAA,EAAAA,QAAOkhB,EAAqBlxD,GAAiB,GACxF88C,WACI3rB,IACA8/B,SAEC,QAFsByC,EAAvBzC,EAAyB5yD,MACrBw1D,IAAqB,IAAAC,EAAA,OAAID,EAAsB/iE,SAAiC,QAA5BgjE,EAAM1hB,EAAWsf,mBAAW,IAAAoC,EAAAA,EAAI,GAAG,WAC1F,IAAAJ,OAAA,EAFDA,EAEG5W,YACV,WACH,IAAAoW,EAAAA,EAAI,GAQV,OANIlzD,IAAkBwtD,GAClBp9D,EAAAA,gBAAgBC,YAAY8hD,KAC3BA,EAASv1B,MAAK00B,GAAUA,EAAOgC,cAEhCnB,EAAS,GAAGmB,WAAY,GAGxBxlD,IAAAA,cAACimE,EAAAA,gCAA+B,CAC5BrhE,QAASA,EACTy/C,SAAUA,EACV6hB,kBAAmB7B,EACnB15D,IAAK2B,EAAKtH,UACZ,KA7CP,MAuKLJ,EAAQ+O,IAAI9M,OAAOs/D,YA0CjC,SACI7G,EACAj2C,EACAD,EACA44B,EACAokB,EACAt9D,EACA+5D,GAEA,IAAK7gB,EACD,OAAO,KAGX,MAAMqkB,GAAgBD,aAAY,EAAZA,EAAc//D,kBAAcpB,EAC5C27D,EAAsBK,EAAmBjf,EAAWl5C,GACpDg4D,EAA2BE,EAAmB35D,OAAOg/D,GAAgBxD,GAE3E,OACI7iE,IAAAA,cAAC+hD,EAAAA,gBAAe,CACZn9C,QAAS06D,EACT78D,GAAI2mB,EACJvO,SAAUwO,EACV24B,UAAWA,EACXI,YAAaikB,EACbpkB,UAAQ,EACRn5C,UAAW83D,EACXiC,qBAAsB/B,EACtB9pD,KAAM,CAAC,GAGnB,CAvEgBsvD,CAAa1hE,EAASiW,EAAUpY,EAAIsC,EAAQggE,cAAehgE,EAAQigE,aAAc9D,EAAiB2B,IArU/E0D,GAsUIrD,IArU+B,KAA/BqD,GAK/BvmE,IAAAA,cAAA,OAAKC,UAAU,6BACXD,IAAAA,cAAA,YAAOumE,KALJ,KAqUFxD,GAtHT,SAAyByD,EAA4Bl6D,GACjD,GAAkB,OAAdk6D,EACA,OAEJ,MAAM33D,EAAyCs1D,EAAoBsC,YAAYj8D,KAAsB65C,IAC1F,CACH70C,oBAAoBk3D,EAAAA,EAAAA,4CAA2CriB,EAASnyC,eACxEpB,eAAgB,CACZ9L,SAAU,EACVuP,MAAO8vC,EAASrhD,WAI5B,OAAOhD,IAAAA,aAAmBwmE,EAAiC,CAAExlB,kBAAmB10C,EAAMuC,sBAC1F,CAwG4B83D,CAAgB5D,EAAiBh+D,EAAQC,UAC5Dg+D,GArTb,SACIA,EACAj+D,EACA2B,GAGA,OADA6D,EAAAA,EAAAA,mBAAkB7D,GACX1G,IAAAA,aAAmBgjE,EAA+C,CAAEj+D,UAAS2B,aACxF,CA8SwCkgE,CAA8B5D,EAAyBj+D,GAASuF,EAAAA,EAAAA,IAAa1F,EAAQH,WAxU7H,IAAmC8hE,GA2JEtB,GAgMVxb,EAlBhB,GA5ZmB,CAAC,IAsjB/B,8FCtmBKod,sDAAL,SAAKA,GACDA,EAAAA,EAAA,4DACAA,EAAAA,EAAA,+EACAA,EAAAA,EAAA,8EACH,CAJD,CAAKA,IAAAA,EAAmB,KAWxB,MAAMC,EAAsB/mE,GACjBC,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKlJ,EAAMgnE,mBAAoBhnE,EAAMW,UASrD,SAASsmE,EAAkBC,EAAqDliE,GAC5E,IAAKkiE,IAAoC3kE,EAAAA,gBAAgBC,YAAYwC,EAAQ06D,iBACzE,OAEJ,MAAMyH,EAAqBniE,EAAQ06D,gBAAgBlvD,MAAKs0D,GAAaA,EAAU7/D,WAAaiiE,IAC5F,OAAIC,EACOA,EAAmBhwB,eAD9B,CAIJ,CAUA,MAAMiwB,EAAgCA,CAClCpnE,EACAgF,EACAuQ,EACA2tD,KACoB,IAAAmE,EAAAC,EACpB,MAAM,OAAExgE,EAAM,QAAEjC,EAAO,UAAEhD,EAAS,gCAAE0lE,GAAoCvnE,EAClE2H,GAAmBga,EAAAA,EAAAA,oBAAmB3hB,EAAM6E,QAAQH,QAAQkd,kBAAoB5hB,EAAM6hB,aAAc7hB,EAAMqF,WAC1GmiE,EAAiBxnE,EAAM6E,QAAQ+O,IAAI9M,OAAO2gE,eAC1CC,EAAc1nE,EAAM8G,OAAO6gE,sBAA2C,SAAnBH,GAAgD,oBAAnBA,GAChFI,EAAY1E,EACZ,sDACA,iCACA2E,EAAgBtlE,EAAAA,gBAAgBC,YAAYxC,EAAMsvB,MAAMm3C,WAAazmE,EAAMsvB,MAAMm3C,UAAU,QAAKvhE,EAChGgiE,EAA4D,QAA7BG,EAAGrnE,EAAMiX,KAAKtW,SAASkD,cAAM,IAAAwjE,OAAA,EAA1BA,EAA4BH,gCAC9DY,EAA0D,QAAjCR,EAAGtnE,EAAMiX,KAAKK,aAAazT,cAAM,IAAAyjE,OAAA,EAA9BA,EAAgC92D,MAC9D8G,GAAsC,0DAAtBA,EAAaxM,OAE3B22D,EAA2C,CAC7CsG,oBAAqBlmE,EAAUkmE,qBAG7B9E,EAA0B1gE,EAAAA,gBAAgBC,YAAYxC,EAAMsvB,MAAM2zC,yBAClEjjE,EAAMsvB,MAAM2zC,wBAAwB,GACpC,KAEN,OACIhjE,IAAAA,cAAA,MAAIC,UAAW0nE,EAAWh9D,IAAK2K,GAC3BtV,IAAAA,cAACuiE,EAAAA,iBAAgB,CACb39D,QAASA,EACT8C,iBAAkBA,EAClB4B,cAAezC,EAAOyC,cACtBid,cAAe3kB,EAAU6mB,UACzBjC,kBAAmB5kB,EAAU4kB,kBAC7BC,iBAAkB7kB,EAAU6kB,iBAC5By6C,gBAAiBt/D,EAAUs/D,gBAC3B4B,UAAW2E,EACXhlE,GAAI1C,EAAM0C,GACVkI,IAAK5F,EAAQC,SACb6V,SAAU9a,EAAM8a,SAChB7D,KAAM,CAAEjS,WACRg+D,gBAAiB6E,EACjB5E,wBAAyBA,EACzBC,4BAA6BA,EAC7BC,eAAgB8D,EAAkBC,EAAiCliE,GACnEw8D,qBAAsBsG,aAAyB,EAAzBA,EAA2BtwD,UACjDiqD,eAAgBA,EAChB4B,oBAAqBxhE,EAAUwhE,oBAC/BD,wBAAyBmE,aAA+B,EAA/BA,EAAiC/2D,MACrDw1D,GACGzjE,EAAAA,gBAAgBC,YAAYwjE,IAC5BA,EAAsB,GAAGgC,kBAAoBhjE,EAAQwG,oBAGhE,EASPy8D,EAAkBjoE,IAAgG,IAAAkoE,EACpH,MAAMvnE,EAA0C,QAAlCunE,EAAGloE,EAAMiX,KAAKkxD,cAActkE,cAAM,IAAAqkE,OAAA,EAA/BA,EAAiCE,eAClD,IAAKznE,IAAa4B,EAAAA,gBAAgBC,YAAY7B,GAC1C,OAAO,KAEX,MAAM0nE,EAAqCvB,EAAoBuB,2BACzDC,EAA+CxB,EAAoBwB,qCACnEC,EAA+CzB,EAAoByB,qCACzE,OACItoE,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKlJ,EAAMgnE,mBACXhnE,EAAM+P,aACP9P,IAAAA,cAAA,MAAIC,UAAU,iBACTS,EAAS8J,KAAI,CAACzF,EAA8BuQ,IAGnC6xD,EAA8BpnE,EAAOgF,EAASuQ,EAFpDA,EAAQ8yD,IAA+BC,GACvC/yD,EAAQ8yD,IAA+BE,MAK5C,EASTC,EAAoBxoE,IACtB,MAAM,MAAE+N,EAAK,eAAE06D,GAAmBzoE,EAClC,OAAI+N,EACO9N,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKu/D,GAAiB16D,EAAM26D,YAErC,IAAI,EAQTC,EAA2B3oE,IAC7B,MAAM,2BAAE4oE,EAA0B,sBAAEC,EAAqB,2BAAEC,GAA+B9oE,EAC1F,OAAI6oE,EAEI5oE,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAK0/D,GACLC,EAAsBp+D,KAAI,CAACs+D,EAAUxzD,IAClCtV,IAAAA,cAACA,IAAAA,SAAc,CAAC2K,IAAK2K,GAChBwzD,EACAF,EAAsBtzD,EAAQ,IAAMuzD,MAOlD,IAAI,EAQFE,EAAwBA,CAAC/mD,EAAmBgnD,KAErD,MAEMC,EAAsCtzC,SAASuzC,cAAc,cAE7DC,EAAmCF,aAAe,EAAfA,EAAiBG,aAEpDC,EAAgBL,EAND,EAKWG,QAAAA,EAJV,GAMhBG,EAAgB3zC,SAASuzC,cAAc,uBACvCK,EAAmB5zC,SAASuzC,cAAc,6BAC1CM,EAAiBxnD,EAAW2T,SAASuzC,cAAc,4BAA8BvzC,SAASuzC,cAAc,uBAC1GM,GAAkBF,GAAiBC,EAC/BrvD,EAAAA,GAASC,WAAawb,SAAS2jB,gBAAgBC,UAAY8vB,GAC3DG,EAAehwB,UAAUnqC,IAAI,eAC7Bm6D,EAAe96D,aAAa,QAAS,QAAQ66D,EAAiBE,mBAE9DD,EAAehwB,UAAU3pB,OAAO,eAE7B25C,IACHtvD,EAAAA,GAASC,WAAawb,SAAS2jB,gBAAgBC,UAAY8vB,EAC3DG,EAAehwB,UAAUnqC,IAAI,aAE7Bm6D,EAAehwB,UAAU3pB,OAAO,YAChC25C,EAAehwB,UAAU3pB,OAAO,eAChC25C,EAAeE,gBAAgB,UAAQ,EAkDnD,MAwGMC,EAA0BA,CAC5BhhE,EACAihE,EACAC,EACAC,IAEO9pE,IAAAA,aACH2I,EAAWohE,MACX,CAAC,EACDphE,EAAWqhE,YACXC,EAAgBthE,EAAYihE,EAAYC,EAAgBC,GACxDnhE,EAAWuhE,aAiCbD,EAAkBA,CACpBlqE,EACA6pE,EACAC,EACAC,IAEID,EACO7pE,IAAAA,aAAmBD,EAAMoqE,UAAW,CAAC,EAAGC,EAAWP,EAAgBC,GA/BrD/pE,KACzB,MAAM,SAAEsqE,EAAQ,oBAAEC,EAAmB,wBAAEC,GAA4BxqE,EACnE,OAAIsqE,EAEIrqE,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKshE,GACNvqE,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKqhE,GACLD,EAAS7/D,KAAI,CAACggE,EAASl1D,IACpBtV,IAAAA,cAACA,IAAAA,SAAc,CAAC2K,IAAK2K,GAAQk1D,OAM1C,IAAI,EAkBsFC,CAAoBb,IAE9G,KAQLc,EAAiB3qE,IACnB,MAAM,SAAEsqE,EAAQ,oBAAEC,EAAmB,wBAAEC,GAA4BxqE,EACnE,OAAIsqE,EAEIrqE,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKshE,GACNvqE,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKqhE,GACLD,EAAS7/D,KAAI,CAACggE,EAASl1D,IACpBtV,IAAAA,cAACA,IAAAA,SAAc,CAAC2K,IAAK2K,GAAQk1D,OAM1C,IAAI,EAUTG,EAAsBA,CACxB5qE,EACAoyC,EACAvwC,KAEA,MAAM,SAAEyoE,GAAatqE,EACrB,OAAIsqE,EAEIrqE,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,2BACZD,IAAAA,cAAC4qB,EAAAA,KAAI,CAACnH,IAAI,SAASxjB,UAAU,wBAAuB,aAAa2B,EAAUgpE,cAAe58D,SAAU,EAAG7E,QAASgpC,GAC3GvwC,EAAUipE,WAKpB,IAAI,EASTT,EAAaA,CAACrqE,EAAyB+pE,KACzC,MAAM,iBAAEgB,EAAgB,eAAEjB,GAAmB9pE,EAC7C,OAAI8pE,IAAmBC,EACZ9pE,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAK6hE,GAAmBjB,GAEjC,IAAI,EAQTkB,EAAehrE,IACjB,MAAM,MAAE+N,EAAK,eAAE06D,GAAmBzoE,EAClC,OAAI+N,EAEI9N,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKu/D,GACNxoE,IAAAA,cAAC4qB,EAAAA,KAAI,CAACnH,IAAI,KAAKxjB,UAAU,IACpB6N,EAAMk9D,YACNl9D,EAAMm9D,YAKhB,IAAI,EAGf,EAhP+GlrE,IAAQ,IAAAmrE,EACnH,MAAM,sBACFC,EAAqB,WACrB/mD,EAAU,wBACVgnD,EAAuB,cACvBC,EAAa,SACbrpD,EAAQ,YACRspD,EAAW,kBACXC,EAAiB,eACjBC,EAAc,WACd5B,EAAU,kBACV6B,EAAiB,cACjBC,EAAa,qBACbC,EAAoB,iCACpBC,EAAgC,uBAChCC,EAAsB,mBACtBC,EAAkB,aAClBh8D,EAAY,UACZlO,GACA7B,GACJgsE,EAAAA,EAAAA,YAAU,KACFhsE,EAAM8G,OAAOmlE,iBAAmB9xD,EAAAA,GAASC,WA7DrD,SAA2B6H,EAAmBgnD,GAC1C9hE,OAAOib,iBAAiB,UAAU,KAC9B4mD,EAAsB/mD,EAAUgnD,EAAe,IAEnDD,EAAsB/mD,EAAUgnD,EACpC,CA0DYiD,CAAkBlsE,EAAMiiB,SAAUjiB,EAAM6E,QAAQ+O,IAAI9M,OAAOqlE,mBAA+B,GAE/F,CAACnsE,IACJ,MAAOwxC,EAAY46B,IAAiBp2D,EAAAA,EAAAA,WAAkB,GAChDlN,EAASA,KACXsjE,GAAe56B,EAAW,EAExB66B,EAAiBpsE,IAAAA,OAAa,OA1DxC,SAAyBqsE,EAA+CxjE,GACpE7I,IAAAA,WAAgB,KAKZ,SAASssE,EAAmBjpE,GACxB,MAAMkpE,EAAU52C,SAASuzC,cAAc,wCACnCmD,EAAgBxkE,SAAYwkE,EAAgBxkE,QAAQ2kE,SAASnpE,EAAMgB,SAAoBkoE,GACvF1jE,EAAOxF,EAEf,CAIA,OAHI6W,EAAAA,GAASC,WACTwb,SAASxT,iBAAiB,QAASmqD,GAEhC,KACCpyD,EAAAA,GAASC,WACTwb,SAAStT,oBAAoB,QAASiqD,EAAoB,CAEjE,GACF,CAACD,EAAiBxjE,GACzB,CAsCI4jE,CAAgBL,EAAgBvjE,GAChC,MAAMihE,EAAmE,QAAnDoB,EAAGnrE,EAAM6E,QAAQJ,cAAcoO,eAAenS,aAAK,IAAAyqE,OAAA,EAAhDA,EAAkDwB,eAC3E,OAAI1qD,EAEIhiB,IAAAA,cAAC+qB,EAAAA,OAAM/hB,OAAAC,OAAA,GAAKkiE,GACPW,EAAqB,KAClB9rE,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAK0iE,GACLjD,EAAwB+C,GACxBV,EAAYS,GACZjD,EAAiBiD,IAGzBH,EACDrrE,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,2BAA2BqrE,GAC1C3B,EAAwB4B,EAAmB3B,EAAY8B,EAAe5B,GACvE9pE,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAK4iE,GAAyBC,GAClCh8D,EACA/P,EAAM8G,OAAO8lE,wBAA0B3E,EAAejoE,GAAS+mE,EAAmB/mE,GAClFqkB,GAKTpkB,IAAAA,cAAC+qB,EAAAA,OAAM/hB,OAAAC,OAAA,GAAKkiE,GACPW,EAAqB,KAClB9rE,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAK0iE,GACLF,GAAqB/C,EAAwB+C,GAC7CD,GAAkBT,EAAYS,GAC9BA,GAAkBjD,EAAiBiD,IAG5CxrE,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAK4iE,GAAyBC,GACnC9rE,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAK2iE,GACN5rE,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC1nB,IAAKkpE,EAAgBnsE,UAAU,sBACjCD,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,4BACZD,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAWsxC,EAAa,oCAAsC,qCAAoC,aACvF,SACXpoC,QAASN,EAAM,gBACA0oC,EACfvjC,SAAU,GAETpM,EAAUgrE,YAEf5sE,IAAAA,cAAA,OAAKC,UAAU,iDAAiDorE,GAChErrE,IAAAA,cAAA,OAAKC,UAAU,6CACVyrE,IAAkB5B,GAAoBM,EAAWsB,KAGzD9B,GAAcr4B,GAAcm5B,EAAcd,GAC3C5pE,IAAAA,cAAC4qB,EAAAA,KAAI,CAAC3qB,UAAU,qBACX2pE,GAAcr4B,GAAco5B,EAAoBf,EAAY/gE,EAAQjH,KAI7E5B,IAAAA,cAAC4qB,EAAAA,KAAI5hB,OAAAC,OAAA,GAAKmiE,GACLt7D,EACA/P,EAAM8G,OAAO8lE,wBAA0B3E,EAAejoE,GAAS+mE,EAAmB/mE,GAClFqkB,IAGJ","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/add-line/spinner.tsx?8f4d","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/add-line/add-line.tsx?49a0","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/add-line/dropdown.tsx?8afb","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/add-line/not-found.tsx?ce32","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/common/gdn-order-template-quantity.tsx?aca0","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/add-line/product-configuration.tsx?dcf6","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/add-line/product-list.tsx?0c05","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/gdn-order-template-table-heading.tsx?4430","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/bulk-actions.tsx?e36a","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/gdn-order-template.tsx?eea6","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/gdn-order-template.view.tsx?d572","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/cart-icon.view.tsx?3413","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/components/create-order-template.component.tsx?f930","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/order-template-list.view.tsx?212c","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/cart-icon.view.tsx?be14","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/components/create-order-template.component.tsx?d950","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/order-template-list.view.tsx?3b52","webpack://Msdyn365.Commerce.Online/./src/modules/carousel/carousel.tsx?80d4","webpack://Msdyn365.Commerce.Online/./src/modules/carousel/carousel.view.tsx?d82f","webpack://Msdyn365.Commerce.Online/./src/validate-cart.ts?cd50","webpack://Msdyn365.Commerce.Online/./src/Common/get-product.ts?0a21","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/components/flyout-cart-line-items.tsx?f2c4","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/utils/get-products-in-mini-cart.ts?3c15","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/cart-icon.tsx?4ae8","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/cart-icon.view.tsx?f9dd","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/components/cartlineitem.component.tsx?eb8c","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/components/order-template-list.tsx?86c4","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/components/orderTemplateList-status-message.tsx?183c","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/components/create-order-template.tsx?ea38","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/order-template-list.tsx?18d0","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/order-template-list.view.tsx?103b","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/spinner.tsx?b423","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/bulk-actions.tsx?dbe8","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/add-line.tsx?5f8a","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/dropdown.tsx?1cba","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/not-found.tsx?392d","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/common/order-template-quantity.tsx?99a1","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/product-configuration.tsx?b256","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/product-list.tsx?4284","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-actions.tsx?8136","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-lines.tsx?3703","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-lines-status-message.tsx?2986","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-table-heading.tsx?665c","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/order-template.tsx?4ecb","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/order-template.view.tsx?a45e","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.tsx?39f6","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.view.tsx?28cb","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/product-specification.tsx?75ed","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/remove-from-comparison-button.tsx?1d8c","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.tsx?4f74","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.view.tsx?a0a9","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/add-to-list/add-to-cart-selected-items.tsx?de21","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-actions.tsx?ca97","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-drawer.tsx?8701","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-form.tsx?5cbb","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-product.ts?187e","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-header-component.tsx?69b3","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-row-component.tsx?cd92","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-table/quick-order-grid-table-component.tsx?7cbc","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/quick-order-grid.tsx?fddf","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/utilities.ts?1806","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/quick-order-grid.view.tsx?f941","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/product.component.tsx?fd23","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/search-result-container.view.tsx?6e86"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport default (props: { className: string; msg?: string }) => (\r\n <>\r\n
\r\n {props?.msg &&
{props?.msg}
}\r\n \r\n);\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\r\nimport { getCatalogId, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\r\nimport { ProductListLine, ProductSearchCriteria, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport { searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { ProductCatalog, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n addItemToOrderTemplate,\r\n AddItemToOrderTemplateInput,\r\n ArrayExtensions,\r\n getDimensionsForSelectedVariant,\r\n GetDimensionsForSelectedVariantInput,\r\n getSelectedVariant,\r\n SelectedVariantInput,\r\n validateCatalogId\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Modal, ModalBody, ModalHeader, getPayloadObject, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport { get } from 'lodash';\r\nimport { computed } from 'mobx';\r\nimport React from 'react';\r\n\r\nimport { IProductConfigurationState, NotFoundComponent, ProductConfiguration, ProductList } from '.';\r\nimport Spinner from './spinner';\r\n\r\nexport interface IAddLineToTemplateProps {\r\n context: ICoreContext;\r\n resources: IAddLineToTemplateResources;\r\n orderTemplateId: string;\r\n imageSettings?: IImageSettings;\r\n isMultipleCatalogFeatureEnabledInHq: boolean;\r\n catalogs?: ProductCatalog[] | undefined;\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\nexport interface IAddLineToTemplateResources {\r\n addLineModalLinkText: string;\r\n searchButtonAriaLabel: string;\r\n searchInputAriaLabel: string;\r\n searchModalPlaceholderText: string;\r\n selectCatalogTitleText: string;\r\n selectProductButtonText: string;\r\n addItemToTemplateText: string;\r\n addLineProductUnitPricePrefix: string;\r\n backButtonText: string;\r\n decrementButtonAriaLabel: string;\r\n incrementButtonAriaLabel: string;\r\n quantitySelectLabel: string;\r\n addLineProductUnitOfMeasurePrefix: string;\r\n notFoundSearchErrorNotice: string;\r\n notFoundSearchErrorRedediation: string;\r\n searchErrorMessage: string;\r\n productDimensionTypeColor: string;\r\n productDimensionTypeConfiguration: string;\r\n productDimensionTypeSize: string;\r\n productDimensionTypeStyle: string;\r\n searchResultsCountVerbage: string;\r\n searchResultsCountSubject: string;\r\n addToTemplateConfirmation: string;\r\n totalPriceLabel: string;\r\n progressNotificationText: string;\r\n addToTemplateDuplicateError: string;\r\n addToTemplateGenericError: string;\r\n dimensionMissingError: string;\r\n backToResultsText?: string;\r\n}\r\n\r\nenum CONTENT {\r\n Search,\r\n ProductList,\r\n ProductConfiguration,\r\n NotFound,\r\n Error,\r\n Loading\r\n}\r\n\r\ninterface IAddLineToTemplateState {\r\n isOpen: boolean;\r\n query: string;\r\n products: ProductSearchResult[];\r\n productCatalogs: ProductCatalog[] | null;\r\n content: number;\r\n selectedProduct: SimpleProduct | null;\r\n selectedCatalogId: number | undefined;\r\n selectedProductDimensions?: ProductDimensionFull[];\r\n selectedQuantity?: number;\r\n reloadPage?: boolean;\r\n}\r\n\r\n/**\r\n * Add Lines to order template.\r\n */\r\nexport class AddLineToTemplate extends React.Component {\r\n public state: IAddLineToTemplateState = {\r\n isOpen: false,\r\n query: '',\r\n products: [],\r\n productCatalogs: [],\r\n content: CONTENT.Search,\r\n selectedProduct: null,\r\n selectedCatalogId: 0\r\n };\r\n\r\n public defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\r\n xl: { q: 'w=64&h=64&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n public searchTextInput: React.RefObject = React.createRef(); // @TODO public/private\r\n\r\n private readonly addLineButtonRef: React.RefObject = React.createRef();\r\n\r\n constructor(props: IAddLineToTemplateProps) {\r\n super(props);\r\n }\r\n\r\n public onComponentDidMount(): void {\r\n this.searchTextInput.current?.focus();\r\n }\r\n\r\n public componentDidMount(): void {\r\n this._getCatalogs();\r\n }\r\n\r\n public onComponentDidUpdate(): void {\r\n this.searchTextInput.current?.focus();\r\n }\r\n\r\n @computed get showBackArrow(): boolean {\r\n return this.state.content === CONTENT.ProductConfiguration;\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IAddLineToTemplateProps, nextState: IAddLineToTemplateState): boolean {\r\n if (this.state === nextState && this.props === nextProps) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n resources: { addLineModalLinkText, backToResultsText }\r\n } = this.props;\r\n\r\n const modalProps = {\r\n ...this.props,\r\n className: 'msc-add-line-to-template',\r\n toggle: this._toggleModalHandler,\r\n isOpen: this.state.isOpen,\r\n ariaLabel: addLineModalLinkText\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {this.showBackArrow && (\r\n \r\n )}\r\n {addLineModalLinkText}\r\n \r\n {this._renderContent()}\r\n \r\n \r\n \r\n {addLineModalLinkText}\r\n \r\n \r\n );\r\n }\r\n\r\n private readonly _renderSearchForm = () => {\r\n const {\r\n resources: { searchButtonAriaLabel, searchModalPlaceholderText, selectCatalogTitleText }\r\n } = this.props;\r\n\r\n return (\r\n \r\n {this.state.productCatalogs && ArrayExtensions.hasElements(this.state.productCatalogs) && (\r\n <>\r\n \r\n \r\n {this._getCatalogNodes()}\r\n \r\n \r\n )}\r\n
\r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n private readonly _onSearchSubmit = (event: React.FormEvent): void => {\r\n event.preventDefault();\r\n\r\n const query = get(this, 'searchTextInput.current.value', null);\r\n\r\n if (!query) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n content: CONTENT.Loading\r\n });\r\n\r\n this._getSearchResults(query as string)\r\n .then(result => {\r\n if (result.length === 0) {\r\n this.setState({\r\n products: result,\r\n content: CONTENT.NotFound\r\n });\r\n } else {\r\n this.setState({\r\n products: result,\r\n content: CONTENT.ProductList\r\n });\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({\r\n content: CONTENT.Error\r\n });\r\n });\r\n };\r\n\r\n private readonly _onQuantityChangeHandler = (event: React.ChangeEvent) => {\r\n this.setState({\r\n selectedQuantity: +event.target.value\r\n });\r\n };\r\n\r\n private readonly _onSelectItem = async (product: ProductSearchResult): Promise => {\r\n const {\r\n actionContext,\r\n request: {\r\n apiSettings: { channelId }\r\n }\r\n } = this.props.context;\r\n const varianteInput = new SelectedVariantInput(product.RecordId, channelId, [], undefined, this.props.context.request);\r\n const productVariant = await getSelectedVariant(varianteInput, actionContext);\r\n\r\n if (!productVariant) {\r\n this.props.context.telemetry.error('Error retrieving product variant');\r\n return Promise.resolve([]);\r\n }\r\n\r\n const dimensions = await this._getProductDimensions(product as SimpleProduct);\r\n\r\n this.setState({\r\n selectedProductDimensions: dimensions,\r\n content: CONTENT.ProductConfiguration,\r\n selectedProduct: productVariant\r\n });\r\n\r\n return dimensions;\r\n };\r\n\r\n private readonly _onInputChange = (event: React.ChangeEvent): void => {\r\n this.setState({\r\n query: event.target.value\r\n });\r\n };\r\n\r\n private readonly _onBackButtonClickHandler = (): void => {\r\n this.setState({\r\n content: CONTENT.ProductList\r\n });\r\n };\r\n\r\n private readonly _highlightSearchTerm = (name: string) => {\r\n const parsedName = name && unescape(name.replace(new RegExp(this.state.query, 'i'), '$&'));\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n private readonly _resultCountText = (): string => {\r\n return this.props.resources.searchResultsCountVerbage\r\n .replace('{count}', this.state.products.length.toString())\r\n .replace('{subject}', `${this.props.resources.searchResultsCountSubject}${this.state.products.length > 1 ? 's' : ''}`);\r\n };\r\n\r\n private _renderContent(): React.ReactNode | null {\r\n switch (this.state.content) {\r\n case CONTENT.ProductConfiguration:\r\n const { selectedProduct, selectedProductDimensions } = this.state;\r\n const viewProps = {\r\n ...this.props,\r\n imageSettings: this.props.imageSettings || this.defaultImageSettings,\r\n product: selectedProduct!,\r\n dimensions: selectedProductDimensions!,\r\n addToTemplateHandler: this._addItemToTemplateHandler,\r\n onQuantityChangeHandler: this._onQuantityChangeHandler,\r\n highlightSearchTerm: this._highlightSearchTerm,\r\n searchForm: this._renderSearchForm()\r\n };\r\n\r\n return ;\r\n\r\n case CONTENT.ProductList:\r\n const productProps = {\r\n ...this.props,\r\n imageSettings: this.props.imageSettings || this.defaultImageSettings,\r\n clickHandler: this._onSelectItem,\r\n products: this.state.products,\r\n highlightSearchTerm: this._highlightSearchTerm,\r\n searchForm: this._renderSearchForm(),\r\n renderResultCountText: this._resultCountText\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n\r\n case CONTENT.Loading:\r\n return (\r\n \r\n {this._renderSearchForm()}\r\n \r\n \r\n );\r\n\r\n case CONTENT.NotFound:\r\n const { notFoundSearchErrorNotice, notFoundSearchErrorRedediation } = this.props.resources;\r\n\r\n return (\r\n \r\n

{this._resultCountText()}

\r\n {this._renderSearchForm()}\r\n \r\n
\r\n );\r\n\r\n case CONTENT.Error:\r\n return (\r\n \r\n {this._renderSearchForm()}\r\n
\r\n {this.props.resources.searchErrorMessage}\r\n
\r\n
\r\n );\r\n\r\n default:\r\n return {this._renderSearchForm()};\r\n }\r\n }\r\n\r\n private readonly _addItemToTemplateHandler = async (config: IProductConfigurationState): Promise => {\r\n const {\r\n orderTemplateId,\r\n context: { actionContext },\r\n isMultipleCatalogFeatureEnabledInHq\r\n } = this.props;\r\n const catalogId = this.state.selectedCatalogId;\r\n const input = isMultipleCatalogFeatureEnabledInHq\r\n ? new AddItemToOrderTemplateInput(\r\n orderTemplateId,\r\n config.product.RecordId,\r\n config.quantity,\r\n config.product.DefaultUnitOfMeasure || 'ea',\r\n isMultipleCatalogFeatureEnabledInHq,\r\n catalogId\r\n )\r\n : new AddItemToOrderTemplateInput(\r\n orderTemplateId,\r\n config.product.RecordId,\r\n config.quantity,\r\n config.product.DefaultUnitOfMeasure || 'ea'\r\n );\r\n const result = await addItemToOrderTemplate(input, actionContext);\r\n this.setState({\r\n isOpen: false,\r\n reloadPage: true\r\n });\r\n // reload when closing\r\n window.location.reload();\r\n return result;\r\n };\r\n\r\n /**\r\n *\r\n * Get all active product catalogs.\r\n */\r\n private _getCatalogs(): void {\r\n const { isMultipleCatalogFeatureEnabledInHq, catalogs } = this.props;\r\n\r\n // if Channel Multiple Catalogs Feature is enabled then show all catalogs.\r\n const productCatalogs = isMultipleCatalogFeatureEnabledInHq && catalogs ? catalogs : [];\r\n\r\n // get the current catalog id.\r\n const catalogId = getCatalogId(this.props.context.request);\r\n validateCatalogId(catalogId);\r\n // set the current catalog id as a default selected catalog id from the url\r\n this.setState({\r\n productCatalogs: productCatalogs,\r\n selectedCatalogId: catalogId\r\n });\r\n }\r\n\r\n private _getCatalogNodes(): JSX.Element[] | null {\r\n const { productCatalogs, selectedCatalogId } = this.state;\r\n if (productCatalogs && ArrayExtensions.hasElements(productCatalogs)) {\r\n return productCatalogs.map((productCatalog: ProductCatalog) => {\r\n // initially select default catalog in dropdown\r\n const isSelected = productCatalog.RecordId === selectedCatalogId;\r\n return (\r\n \r\n );\r\n });\r\n }\r\n return [];\r\n }\r\n\r\n private readonly _onCatalogSelectionChange = (event: React.ChangeEvent) => {\r\n this.setState({\r\n selectedCatalogId: Number.parseInt(event.target.value, 10)\r\n });\r\n };\r\n\r\n private _getSearchResults(searchText: string): Promise {\r\n const {\r\n context: {\r\n actionContext,\r\n request: {\r\n apiSettings: { channelId }\r\n }\r\n }\r\n } = this.props;\r\n const { selectedCatalogId } = this.state;\r\n const searchCriteriaInput: ProductSearchCriteria = {};\r\n\r\n searchCriteriaInput.Context = {\r\n ChannelId: channelId,\r\n CatalogId: selectedCatalogId\r\n };\r\n\r\n if (process.env.NODE_ENV === 'development' && process.env.ENABLE_CLOUD_SEARCH?.toLowerCase() !== 'true') {\r\n searchCriteriaInput.IncludeAttributes = false;\r\n } else {\r\n searchCriteriaInput.IncludeAttributes = true;\r\n }\r\n searchCriteriaInput.SearchCondition = `\"${searchText}\"`;\r\n\r\n return searchByCriteriaAsync({ callerContext: actionContext }, searchCriteriaInput);\r\n }\r\n\r\n private async _getProductDimensions(product: SimpleProduct): Promise {\r\n const {\r\n context: {\r\n actionContext,\r\n request: {\r\n apiSettings: { channelId }\r\n }\r\n }\r\n } = this.props;\r\n const id = product.MasterProductId ? product.MasterProductId : product.RecordId;\r\n\r\n return getDimensionsForSelectedVariant(\r\n new GetDimensionsForSelectedVariantInput(id, channelId, [], this.props.context.request),\r\n actionContext\r\n );\r\n }\r\n\r\n private readonly _toggleModalHandler = () => {\r\n if (this.state.isOpen) {\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'add-item-to-template', '');\r\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'add-item-to-template');\r\n this._getCatalogs();\r\n this.addLineButtonRef.current!.focus();\r\n }\r\n\r\n this.setState({\r\n isOpen: !this.state.isOpen,\r\n content: CONTENT.Search\r\n });\r\n\r\n if (this.state.reloadPage) {\r\n window.location.reload();\r\n this.setState({\r\n reloadPage: false\r\n });\r\n }\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\ninterface IDropdownState {\r\n /**\r\n * @friendlyName selectedIndex\r\n * @description Selected index.\r\n */\r\n selectedIndex: string;\r\n}\r\n\r\nexport interface IDropdownProps {\r\n dropdownId: number;\r\n dropdownName: string;\r\n dropdownList: IDropdownItemProps[];\r\n telemetryContent?: ITelemetryContent;\r\n onChange?(selection: IDropdownOnSelection): void;\r\n}\r\n\r\nexport interface IDropdownItemProps {\r\n value: string;\r\n id: number;\r\n}\r\n\r\nexport interface IDropdownOnSelection {\r\n dropdownId: number;\r\n selectId: string;\r\n selectedValue: string;\r\n}\r\n\r\n/**\r\n *\r\n * DropDown component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class Dropdown extends React.PureComponent {\r\n private readonly selectMenu: React.RefObject = React.createRef();\r\n\r\n constructor(props: IDropdownProps, state: IDropdownState) {\r\n super(props);\r\n this.state = {\r\n selectedIndex: ''\r\n };\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.selectMenu.current) {\r\n this.selectMenu.current.selectedIndex = 0;\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { dropdownId, dropdownList, dropdownName } = this.props;\r\n\r\n return (\r\n \r\n {dropdownList.map(\r\n (item: IDropdownItemProps) =>\r\n item && (\r\n \r\n {item.value}\r\n \r\n )\r\n )}\r\n \r\n );\r\n }\r\n\r\n private readonly _onChanged = (event: React.ChangeEvent): void => {\r\n this.setState({ selectedIndex: event.target.value });\r\n\r\n if (this.props.onChange) {\r\n this.props.onChange({\r\n dropdownId: this.props.dropdownId,\r\n selectId: event.target.value,\r\n selectedValue: event.target.innerText\r\n });\r\n }\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport const NotFoundComponent = (props: { error: string; msg: string }) => (\r\n <>\r\n
\r\n
{props.error}
\r\n
{props.msg}
\r\n \r\n);\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { debounce } from 'lodash';\r\nimport { reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\ninterface IQuantityProps {\r\n min?: number;\r\n max: number;\r\n currentCount?: number;\r\n disabled?: boolean;\r\n incrementGlyphClass?: string;\r\n decrementGlyphClass?: string;\r\n decrementButtonAriaLabel?: string;\r\n incrementButtonAriaLabel?: string;\r\n inputQuantityAriaLabel?: string;\r\n id?: string;\r\n onChange?(newValue: number): void;\r\n}\r\n\r\ninterface IQuantityState {\r\n currentInput: number;\r\n}\r\n\r\n/**\r\n * Quantity Component - This component is used to add or remove quantity.\r\n */\r\n@observer\r\nexport default class OrderTemplateQuantity extends React.PureComponent {\r\n public static defaultProps: Partial = {\r\n min: 1,\r\n decrementGlyphClass: 'fas fa-minus',\r\n incrementGlyphClass: 'fas fa-plus'\r\n };\r\n\r\n private readonly inputRef: React.RefObject = React.createRef();\r\n\r\n constructor(props: IQuantityProps) {\r\n super(props);\r\n this.state = { currentInput: props.currentCount || 1 };\r\n this._handleChange = this._handleChange.bind(this);\r\n\r\n reaction(\r\n () => this.props.currentCount,\r\n () => {\r\n this.setState({ currentInput: this.props.currentCount || 1 });\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element {\r\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\r\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\r\n const disabled = this.props.currentCount === this.props.min;\r\n const incDisabled = this.props.currentCount === this.props.max;\r\n const currentValue = this.state.currentInput;\r\n let extraClass = '';\r\n if (disabled) {\r\n // The quantity has reached its boundaries (max or min)\r\n extraClass = 'disabled';\r\n } else if (this.props.disabled) {\r\n // This.props.disabled shows if the state is not succeded yet\r\n extraClass = 'transition';\r\n }\r\n const getChangeHandler = (amount: number) => () => {\r\n this._onIncrementalChange(amount);\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n private _onIncrementalChange(amount: number): void {\r\n const updatedQuantity = this.state.currentInput + amount;\r\n\r\n if (updatedQuantity >= 1 && updatedQuantity <= this.props.max) {\r\n this.props.onChange && this.props.onChange(updatedQuantity);\r\n }\r\n }\r\n\r\n private _handleChange(e: React.ChangeEvent): void {\r\n const currentValue = Number.parseInt(e.target.value, 10);\r\n const minValue = this.props.min === undefined ? 1 : this.props.min;\r\n const inputElement =\r\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\r\n\r\n if (currentValue > this.props.max) {\r\n this.setState({ currentInput: this.props.max });\r\n } else {\r\n this.setState({ currentInput: currentValue }, () => {\r\n debounce(() => {\r\n if (!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue) && inputElement) {\r\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\r\n inputElement.setAttribute('value', currentValue.toString());\r\n }\r\n }, 200)();\r\n });\r\n }\r\n }\r\n\r\n private readonly _validateMin = (): void => {\r\n const minValue = this.props.min === undefined ? 1 : this.props.min;\r\n\r\n if (isNaN(this.state.currentInput) || this.state.currentInput < minValue) {\r\n this.props.onChange && this.props.onChange(minValue);\r\n } else {\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n }\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\r\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { ProductDimensionValue, ProductListLine } from '@msdyn365-commerce/retail-proxy';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n getDimensionsForSelectedVariant,\r\n GetDimensionsForSelectedVariantInput,\r\n getFallbackImageUrl,\r\n getPriceForSelectedVariant,\r\n getProductAvailabilitiesForSelectedVariant,\r\n getSelectedVariant,\r\n IProductInventoryInformation,\r\n PriceForSelectedVariantInput,\r\n ProductAvailabilitiesForSelectedVariantInput,\r\n SelectedVariantInput\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Alert, Button, ITelemetryContent, ModalBody, ModalFooter } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\nimport OrderTemplateQuantity from '../common/gdn-order-template-quantity';\r\nimport { Dropdown, IAddLineToTemplateProps, IAddLineToTemplateResources, IDropdownItemProps, IDropdownOnSelection } from '.';\r\n\r\nexport interface IProductCnnfigurationProps extends IAddLineToTemplateProps {\r\n product: SimpleProduct;\r\n dimensions: ProductDimensionFull[];\r\n imageSettings: IImageSettings;\r\n telemetryContent?: ITelemetryContent;\r\n searchForm: React.ReactNode;\r\n addToTemplateHandler(params: IProductConfigurationState): Promise;\r\n highlightSearchTerm(name: string): React.ReactNode;\r\n}\r\n\r\nexport interface IProductConfigurationState {\r\n quantity: number;\r\n unitPrice: number;\r\n totalPrice: number;\r\n product: SimpleProduct;\r\n dimensions: ProductDimensionFull[];\r\n selectedDimensions: {};\r\n productAvailableQuantity?: IProductInventoryInformation;\r\n buttonDisabled: boolean;\r\n showAddConfirmation: boolean;\r\n errorMessage?: string;\r\n isBusy: boolean;\r\n errors: { dimension?: string[]; add?: string };\r\n}\r\n\r\n/**\r\n * Configure selected product for addition to order template.\r\n */\r\nexport class ProductConfiguration extends React.Component {\r\n private selectedDimensions: {} = {};\r\n\r\n constructor(props: IProductCnnfigurationProps) {\r\n super(props);\r\n\r\n this.state = {\r\n quantity: 1,\r\n unitPrice: props.product.Price,\r\n totalPrice: props.product.Price,\r\n product: props.product,\r\n dimensions: props.dimensions.sort((a, b) => a.DimensionTypeValue - b.DimensionTypeValue),\r\n selectedDimensions: {},\r\n buttonDisabled: false,\r\n showAddConfirmation: false\r\n } as IProductConfigurationState;\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IProductCnnfigurationProps, nextState: IProductConfigurationState): boolean {\r\n if (this.state === nextState && this.props === nextProps) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { apiSettings }\r\n },\r\n request: { gridSettings }\r\n },\r\n resources: {\r\n addItemToTemplateText,\r\n addLineProductUnitPricePrefix,\r\n decrementButtonAriaLabel,\r\n incrementButtonAriaLabel,\r\n quantitySelectLabel,\r\n addLineProductUnitOfMeasurePrefix,\r\n totalPriceLabel\r\n },\r\n imageSettings,\r\n highlightSearchTerm\r\n } = this.props;\r\n const { buttonDisabled, product, quantity, unitPrice, totalPrice, showAddConfirmation, errors } = this.state;\r\n const isMultipleCatalogSelect = this.props.isMultipleCatalogFeatureEnabledInHq ? 'isMultipleCatalogSelect' : '';\r\n return (\r\n <>\r\n \r\n {this.props.searchForm}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{product?.ItemId}
\r\n {highlightSearchTerm(product?.Name ?? '')}\r\n
\r\n {addLineProductUnitPricePrefix}\r\n {` `}\r\n {this._formatPrice(unitPrice)}\r\n
\r\n
\r\n {addLineProductUnitOfMeasurePrefix}\r\n {` `}\r\n {product?.DefaultUnitOfMeasure}\r\n
\r\n
\r\n
\r\n
{this._getDimensionsNodes()}
\r\n
\r\n
\r\n
{quantitySelectLabel}
\r\n \r\n
\r\n
\r\n
\r\n {totalPriceLabel}\r\n {` `}\r\n {this._formatPrice(totalPrice)}\r\n
\r\n
\r\n \r\n {showAddConfirmation && (\r\n \r\n
\r\n )}\r\n {errors?.add && (\r\n
\r\n
\r\n )}\r\n \r\n {addItemToTemplateText}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private _getConfirmationMessage(): string {\r\n const selectedDimensionNames = this.state.dimensions\r\n .map(dimension => {\r\n let variant = dimension.DimensionValues?.find(\r\n value => value.RecordId === this.selectedDimensions[dimension.DimensionTypeValue]\r\n )?.Value;\r\n if (dimension.DimensionTypeValue === 3) {\r\n variant = `size ${variant}`;\r\n }\r\n return variant;\r\n })\r\n .filter(value => value);\r\n\r\n return this.props.resources.addToTemplateConfirmation\r\n .replace('{count}', this.state.quantity.toString())\r\n .replace('{productAndDimensions}', `${this.state.product.Name}, ${Object.values(selectedDimensionNames).join(', ')}`);\r\n }\r\n\r\n private _getDimensionsNodes(): React.ReactElement[] {\r\n const { dimensions } = this.state;\r\n const { resources } = this.props;\r\n\r\n return dimensions?.map((dimension: ProductDimensionFull) => {\r\n const { DimensionValues, DimensionTypeValue } = dimension;\r\n const mapDimensions = (value: ProductDimensionValue): IDropdownItemProps => ({\r\n id: value.RecordId,\r\n value: value.Value || ''\r\n });\r\n const dimensionName = this._getDropdownName(DimensionTypeValue, resources);\r\n const dropdownList: IDropdownItemProps[] = DimensionValues ? DimensionValues.map(mapDimensions) : [];\r\n dropdownList.unshift({ id: 0, value: `Choose a ${dimensionName}` });\r\n\r\n return (\r\n
\r\n
{dimensionName}
\r\n {this.state.errors?.dimension?.includes(DimensionTypeValue.toString()) && (\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n );\r\n });\r\n }\r\n\r\n private readonly _getDimensionsError = (dimensionName: string) =>\r\n this.props.resources.dimensionMissingError.replace(/{dimensionName}/g, dimensionName);\r\n\r\n private readonly _addToTemplateHandler = async (event: React.MouseEvent) => {\r\n // Hide confirmation of previous addition when adding multiple items\r\n this.setState({\r\n isBusy: true,\r\n showAddConfirmation: false,\r\n errors: { ...this.state.errors, add: undefined }\r\n });\r\n\r\n const missingDimensions = this.state.dimensions\r\n .map(dimension => dimension.DimensionTypeValue.toString())\r\n .filter(type => !this.selectedDimensions[type]);\r\n\r\n this.setState({\r\n errors: { dimension: missingDimensions }\r\n });\r\n if (missingDimensions.length > 0) {\r\n this.setState({\r\n isBusy: false\r\n });\r\n return;\r\n }\r\n\r\n this.props\r\n .addToTemplateHandler({ ...this.state })\r\n .then(status => {\r\n // Validate against the existance of a ProductListId\r\n if (status.ProductListId) {\r\n this.setState({\r\n isBusy: false,\r\n showAddConfirmation: true\r\n });\r\n }\r\n })\r\n .catch(error => {\r\n const { addToTemplateDuplicateError, addToTemplateGenericError } = this.props.resources;\r\n let errorMessage;\r\n\r\n if (error.error.name === 'Microsoft_Dynamics_Commerce_Runtime_DuplicateObject') {\r\n errorMessage = addToTemplateDuplicateError;\r\n } else {\r\n errorMessage = addToTemplateGenericError;\r\n }\r\n\r\n this.setState({\r\n isBusy: false,\r\n errors: { ...this.state.errors, add: errorMessage }\r\n });\r\n this.props.context.telemetry.error('Error adding item to order template');\r\n });\r\n };\r\n\r\n private readonly _onQuantityChange = (newValue: number) => {\r\n this.setState({\r\n quantity: newValue,\r\n totalPrice: newValue * this.props.product.Price\r\n });\r\n };\r\n\r\n private readonly _updateDimensionValue = (\r\n productDimensionFull: ProductDimensionFull,\r\n newValueId: string | undefined\r\n ): ProductDimensionValue | undefined => {\r\n if (newValueId && productDimensionFull.DimensionValues) {\r\n return productDimensionFull.DimensionValues.find(dimension => dimension.RecordId === +newValueId);\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n // Rehydrate the selected variants price, available dimensions & sizes\r\n private readonly _onDimensionChanged = async (selection: IDropdownOnSelection): Promise => {\r\n const { product, dimensions, context } = this.props;\r\n const {\r\n actionContext,\r\n request: {\r\n apiSettings: { channelId }\r\n }\r\n } = context;\r\n\r\n // Remaining error notifications for missing dimensions\r\n const remainingDimensionsErrors = this.state.errors?.dimension?.filter(id => id !== selection.dropdownId.toString());\r\n\r\n this.setState({\r\n isBusy: false,\r\n showAddConfirmation: false,\r\n buttonDisabled: true,\r\n errors: { add: undefined, dimension: remainingDimensionsErrors }\r\n });\r\n\r\n // Update currently selected dimensions\r\n this.selectedDimensions[selection.dropdownId] = +selection.selectId;\r\n\r\n const mappedDimensions = dimensions\r\n ?.map(dimension => {\r\n return {\r\n DimensionTypeValue: dimension.DimensionTypeValue,\r\n DimensionValue:\r\n this._updateDimensionValue(dimension, this.selectedDimensions[dimension.DimensionTypeValue]) ||\r\n dimension.DimensionValue,\r\n ExtensionProperties: dimension.ExtensionProperties\r\n };\r\n })\r\n .filter(dimension => {\r\n return dimension && dimension.DimensionValue;\r\n });\r\n\r\n const variantProduct = await getSelectedVariant(\r\n new SelectedVariantInput(\r\n product.MasterProductId ? product.MasterProductId : product.RecordId,\r\n channelId,\r\n mappedDimensions,\r\n undefined,\r\n this.props.context.request\r\n ),\r\n actionContext\r\n );\r\n\r\n if (!variantProduct) {\r\n this.props.context.telemetry.error(\r\n `Error retrieving variant product for product ${product.MasterProductId ? product.MasterProductId : product.RecordId}`\r\n );\r\n return;\r\n }\r\n\r\n const dimensionInput = new GetDimensionsForSelectedVariantInput(\r\n variantProduct.RecordId,\r\n channelId,\r\n mappedDimensions,\r\n this.props.context.request\r\n );\r\n const variantDimensions = await getDimensionsForSelectedVariant(dimensionInput, actionContext);\r\n\r\n if (!variantDimensions) {\r\n this.props.context.telemetry.error('Error retrieving dimensions for reconfigured product variant');\r\n this.setState({\r\n buttonDisabled: false\r\n });\r\n return;\r\n }\r\n\r\n const availabilityInput = new ProductAvailabilitiesForSelectedVariantInput(\r\n product.MasterProductId ? product.MasterProductId : product.RecordId,\r\n channelId\r\n );\r\n\r\n // @TODO sync UX quantity w/ actual availability\r\n const newAvailableQuantity = await getProductAvailabilitiesForSelectedVariant(availabilityInput, actionContext);\r\n const priceInput = new PriceForSelectedVariantInput(product.RecordId, channelId);\r\n const productPrice = await getPriceForSelectedVariant(priceInput, actionContext);\r\n\r\n if (!productPrice) {\r\n this.props.context.telemetry.error('Error retrieving price for reconfigured product variant');\r\n this.setState({\r\n buttonDisabled: false\r\n });\r\n return;\r\n }\r\n\r\n this.setState({\r\n buttonDisabled: false,\r\n productAvailableQuantity: (newAvailableQuantity && newAvailableQuantity[0]) || undefined,\r\n unitPrice: +(productPrice.BasePrice || product.Price),\r\n dimensions: variantDimensions.sort((a, b) => a.DimensionTypeValue - b.DimensionTypeValue),\r\n product: variantProduct\r\n });\r\n };\r\n\r\n private readonly _getDropdownName = (dimensionType: number, resources: IAddLineToTemplateResources): string => {\r\n switch (dimensionType) {\r\n case 1: // Color\r\n return resources.productDimensionTypeColor;\r\n case 2: // Configuration\r\n return resources.productDimensionTypeConfiguration;\r\n case 3: // Size\r\n return resources.productDimensionTypeSize;\r\n case 4: // Style\r\n return resources.productDimensionTypeStyle;\r\n default:\r\n return '';\r\n }\r\n };\r\n\r\n private _formatPrice(price: number): string {\r\n const {\r\n context: {\r\n cultureFormatter: {\r\n formatCurrency,\r\n\r\n // @ts-expect-error\r\n currencyCode\r\n }\r\n }\r\n } = this.props;\r\n\r\n return formatCurrency(price.toFixed(2), currencyCode);\r\n }\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\r\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport { getFallbackImageUrl, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\n\r\nimport { IAddLineToTemplateProps } from '.';\r\n\r\nexport interface IProductListProps extends IAddLineToTemplateProps {\r\n products: ProductSearchResult[];\r\n imageSettings: IImageSettings;\r\n searchForm: React.ReactNode;\r\n clickHandler(product: ProductSearchResult): Promise;\r\n highlightSearchTerm(name: string): React.ReactNode;\r\n renderResultCountText(): string;\r\n}\r\n\r\nexport const ProductList = (props: IProductListProps) => {\r\n const {\r\n products,\r\n context: {\r\n actionContext: {\r\n requestContext: { apiSettings }\r\n },\r\n request: { gridSettings },\r\n cultureFormatter: {\r\n formatCurrency,\r\n\r\n // @ts-expect-error\r\n currencyCode\r\n }\r\n },\r\n clickHandler,\r\n highlightSearchTerm,\r\n renderResultCountText,\r\n resources: { selectProductButtonText },\r\n imageSettings\r\n } = props;\r\n\r\n return (\r\n <>\r\n

\r\n {renderResultCountText()}\r\n

\r\n {props.searchForm}\r\n
\r\n {products.map((product: ProductSearchResult, index: number) => {\r\n const { Price, ItemId, Name, PrimaryImageUrl } = product;\r\n const price = formatCurrency(Price.toFixed(2), currencyCode);\r\n const primaryImageSource = generateImageUrl(PrimaryImageUrl ?? '', apiSettings) ?? '';\r\n const fallBackImg = getFallbackImageUrl(ItemId, apiSettings, props.context.request.app?.config?.OmniChannelMedia) ?? '';\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
{ItemId}
\r\n {highlightSearchTerm(Name ?? '')}\r\n
\r\n
\r\n
\r\n {price}\r\n \r\n
\r\n
\r\n );\r\n })}\r\n
\r\n \r\n );\r\n};\r\n\r\ninterface IProductSelectButton {\r\n product: ProductSearchResult;\r\n buttonText: string;\r\n clickHandler(product: ProductSearchResult): Promise;\r\n}\r\n\r\nconst ProductSelectButton = (props: IProductSelectButton) => {\r\n const [isBusy, setBusy] = useState(false);\r\n const { product, buttonText, clickHandler } = props;\r\n const getClickHandler = React.useCallback(async () => {\r\n setBusy(!isBusy);\r\n await clickHandler(product);\r\n setBusy(!isBusy);\r\n }, [clickHandler, isBusy, product]);\r\n\r\n return (\r\n \r\n {buttonText}\r\n \r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateLineViewModel } from '../gdn-order-template';\r\n\r\nexport interface IOrderTemplateTableHeadingProps {\r\n selectAllRowsText?: string;\r\n productNumber: string;\r\n productName: string;\r\n productUnitPrice: string;\r\n productUOM: string;\r\n productQuantity: string;\r\n productActions: string;\r\n lines: IOrderTemplateLineViewModel[];\r\n isMobile: boolean;\r\n clickHandler(isChecked: boolean): void;\r\n productImage?: string;\r\n isMultipleCatalogFeatureEnabledInHq?: boolean;\r\n productLineCatalogName?: string;\r\n}\r\n\r\n/**\r\n * Order Template's table state.\r\n */\r\nexport interface IOrderTemplateTableHeadingState {\r\n isChecked: boolean;\r\n}\r\n\r\nexport interface IOrderTemplateTableShortHeading {\r\n productNumber: string;\r\n productActions: string;\r\n}\r\n\r\n/**\r\n * Order Template's table heading.\r\n */\r\nexport class OrderTemplateTableHeading extends React.PureComponent {\r\n public state: IOrderTemplateTableHeadingState = {\r\n isChecked: false\r\n };\r\n\r\n private readonly componentClassName: string = 'ms-table';\r\n\r\n public static getDerivedStateFromProps(\r\n props: IOrderTemplateTableHeadingProps,\r\n state: IOrderTemplateTableHeadingState\r\n ): IOrderTemplateTableHeadingState {\r\n const checkedLines = props.lines.filter(line => !line.isChecked).length;\r\n let nextState = { ...state };\r\n nextState = { isChecked: checkedLines === 0 };\r\n return nextState;\r\n }\r\n\r\n public getOnChange = () => (event: React.ChangeEvent) => {\r\n this.setState(\r\n {\r\n isChecked: this.state.isChecked\r\n },\r\n () => {\r\n this.props.clickHandler(!this.state.isChecked);\r\n }\r\n );\r\n };\r\n\r\n public render(): JSX.Element {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {!this.props.isMobile && this.props.isMultipleCatalogFeatureEnabledInHq ? (\r\n {this.props.productLineCatalogName}\r\n ) : null}\r\n {!this.props.isMobile ? {this.props.productImage} : null}\r\n {this.props.productNumber}\r\n {!this.props.isMobile ? {this.props.productName} : null}\r\n {!this.props.isMobile ? {this.props.productUnitPrice} : null}\r\n {!this.props.isMobile ? {this.props.productUOM} : null}\r\n {!this.props.isMobile ? {this.props.productQuantity} : null}\r\n {!this.props.isMobile ? {this.props.productActions} : }\r\n \r\n \r\n );\r\n }\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateLineViewModel } from '../gdn-order-template';\r\nimport { IGdnOrderTemplateData } from '../gdn-order-template.data';\r\nimport { IGdnOrderTemplateProps } from '../gdn-order-template.props.autogenerated';\r\nimport { AddLineToTemplate } from '.';\r\n\r\ninterface IOrderTemplateBulkActionsProps extends IGdnOrderTemplateProps {\r\n orderTemplateId: string;\r\n selectedLines: IOrderTemplateLineViewModel[];\r\n isMinifiedView: boolean;\r\n isMultipleCatalogFeatureEnabledInHq: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n onAddSelectionToBag(): void;\r\n onRemoveSelection(): void;\r\n}\r\n\r\ninterface IOrderTemplateBulkActionsState {\r\n isAddDisabled: boolean;\r\n isRemoveDisabled: boolean;\r\n}\r\n\r\n/**\r\n * Bulk Order Template line actions.\r\n */\r\nexport class OrderTemplateBulkActions extends React.PureComponent {\r\n public state: IOrderTemplateBulkActionsState = {\r\n isAddDisabled: true,\r\n isRemoveDisabled: true\r\n };\r\n\r\n public static getDerivedStateFromProps(\r\n props: IOrderTemplateBulkActionsProps,\r\n state: IOrderTemplateBulkActionsState\r\n ): IOrderTemplateBulkActionsState {\r\n const selectedLines = props.selectedLines.length;\r\n let nextState = { ...state };\r\n nextState = {\r\n isAddDisabled: selectedLines === 0,\r\n isRemoveDisabled: selectedLines === 0\r\n };\r\n return nextState;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n addLineModalLinkText,\r\n searchButtonAriaLabel,\r\n searchInputAriaLabel,\r\n searchModalPlaceholderText,\r\n selectCatalogTitleText,\r\n selectProductButtonText,\r\n addItemToTemplateText,\r\n addLineProductUnitPricePrefix,\r\n backButtonText,\r\n decrementButtonAriaLabel,\r\n incrementButtonAriaLabel,\r\n quantitySelectLabel,\r\n addLineProductUnitOfMeasurePrefix,\r\n notFoundSearchErrorNotice,\r\n notFoundSearchErrorRedediation,\r\n searchErrorMessage,\r\n productDimensionTypeColor,\r\n productDimensionTypeConfiguration,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n addSelectedToBagButtonText,\r\n removeSelectedToBagButtonText,\r\n searchResultsCountVerbage,\r\n searchResultsCountSubject,\r\n addToTemplateConfirmation,\r\n totalPriceLabel,\r\n progressNotificationText,\r\n addToTemplateDuplicateError,\r\n addToTemplateGenericError,\r\n dimensionMissingError\r\n } = this.props.resources;\r\n\r\n const addLineProps = {\r\n context: this.props.context,\r\n telemetryContent: this.props.telemetryContent,\r\n resources: {\r\n addLineModalLinkText,\r\n searchButtonAriaLabel,\r\n searchInputAriaLabel,\r\n searchModalPlaceholderText,\r\n selectCatalogTitleText,\r\n selectProductButtonText,\r\n addItemToTemplateText,\r\n addLineProductUnitPricePrefix,\r\n backButtonText,\r\n decrementButtonAriaLabel,\r\n incrementButtonAriaLabel,\r\n quantitySelectLabel,\r\n addLineProductUnitOfMeasurePrefix,\r\n notFoundSearchErrorNotice,\r\n notFoundSearchErrorRedediation,\r\n searchErrorMessage,\r\n productDimensionTypeColor,\r\n productDimensionTypeConfiguration,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n searchResultsCountVerbage,\r\n searchResultsCountSubject,\r\n addToTemplateConfirmation,\r\n totalPriceLabel,\r\n progressNotificationText,\r\n addToTemplateDuplicateError,\r\n addToTemplateGenericError,\r\n dimensionMissingError\r\n },\r\n imageSettings: this.props.config.imageSettings,\r\n orderTemplateId: this.props.orderTemplateId,\r\n isMultipleCatalogFeatureEnabledInHq: this.props.isMultipleCatalogFeatureEnabledInHq,\r\n catalogs: this.props.data.catalogs?.result\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {!this.props.isMinifiedView && addSelectedToBagButtonText}\r\n \r\n \r\n \r\n {!this.props.isMinifiedView && removeSelectedToBagButtonText}\r\n \r\n \r\n );\r\n }\r\n\r\n private readonly addHandler = (event: React.MouseEvent) => {\r\n this.setState({\r\n isAddDisabled: true\r\n });\r\n\r\n this.props.onAddSelectionToBag();\r\n\r\n this.setState({\r\n isAddDisabled: false\r\n });\r\n };\r\n\r\n private readonly removeHandler = (event: React.MouseEvent) => {\r\n this.setState({\r\n isRemoveDisabled: true\r\n });\r\n\r\n this.props.onRemoveSelection();\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n IItemAddedToCartDialogData,\r\n IItemAddedToCartDialogResources,\r\n ILinesAddedToCartDialogResources,\r\n IOrderTemplateNameDialogResources,\r\n ItemAddedToCartDialog\r\n} from '@msdyn365-commerce/components';\r\nimport MsDyn365, { AsyncResult, getCatalogId, getUrlSync, ICoreContext, IRequestContext } from '@msdyn365-commerce/core';\r\nimport { ICartActionResult } from '@msdyn365-commerce/global-state';\r\nimport { ProductList, ProductListLine } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n deleteAsync,\r\n removeProductListLinesAsync,\r\n updateProductListLinesAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\r\nimport { FeatureState, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n ArrayExtensions,\r\n createGetFeatureStateInput,\r\n getFeatureState,\r\n getPriceForSelectedVariant,\r\n getProductUrlSync,\r\n ObjectExtensions,\r\n OrderTemplate,\r\n OrderTemplateLine,\r\n PriceForSelectedVariantInput,\r\n StringExtensions\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Alert,\r\n getTelemetryObject,\r\n Heading,\r\n IModuleProps,\r\n INodeProps,\r\n ITelemetryContent,\r\n UncontrolledPagination\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport debounce from 'lodash/debounce';\r\nimport { action, computed, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IOrderTemplateActionsProps,\r\n IOrderTemplateActionsViewProps,\r\n IOrderTemplateLineProps,\r\n IOrderTemplateLineViewProps,\r\n IOrderTemplateTableHeadingProps,\r\n OrderTemplateActionsView,\r\n OrderTemplateLinesStatusMessage,\r\n OrderTemplateLineView,\r\n OrderTemplateMobileLineView,\r\n OrderTemplateTableHeading\r\n} from '@msdyn365-commerce-modules/order-template';\r\nimport { ActiveOrderTemplateLinesInput } from './actions/get-gdn-order-template';\r\nimport { OrderTemplateBulkActions } from './components/bulk-actions';\r\nimport { IGdnOrderTemplateData } from './gdn-order-template.data';\r\nimport { IGdnOrderTemplateProps, IGdnOrderTemplateResources } from './gdn-order-template.props.autogenerated';\r\nimport Spinner from './components/add-line/spinner';\r\n\r\nexport interface IOrderTemplateLineActionMessageState {\r\n itemKey: string;\r\n userMessage: string;\r\n statusCssString: string;\r\n messageGlyph: string;\r\n isOpen: boolean;\r\n isItemAddedToOrderTemplateOpen: boolean;\r\n isConfirmAddSelectionToBagModalOpen: boolean;\r\n itemAddedToCartDialogData?: IItemAddedToCartDialogData;\r\n productSelection: IOrderTemplateLineViewModel[];\r\n isDetailsDisplayed: boolean;\r\n detailedProductView?: IOrderTemplateLineViewProps;\r\n isQuantityDisabledForUpdate?: boolean;\r\n}\r\n\r\nexport type orderTemplateLinesStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\r\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface IOrderTemplateViewProps extends IGdnOrderTemplateProps {\r\n OrderTemplateLines: IModuleProps;\r\n callbacks?: IOrderTemplateLinesCallbacks;\r\n status?: orderTemplateLinesStatus;\r\n statusMessage?: React.ReactNode;\r\n heading?: React.ReactNode;\r\n OrderTemplateActions?: INodeProps;\r\n ProductsTable?: INodeProps;\r\n ProductsTableRow?: INodeProps;\r\n ProductsTableHeading?: React.ReactNode;\r\n ProductDetails?: INodeProps;\r\n orderLines?: IOrderTemplateLineViewProps[];\r\n productListLines?: ProductListLine[];\r\n productsStatusMessage?: React.ReactNode;\r\n orderActions?: IOrderTemplateActionsViewProps | null;\r\n resources: IGdnOrderTemplateResources;\r\n pagination?: React.ReactNode;\r\n itemAddedToCartDialog?: React.ReactNode;\r\n bulkOrderLineActions?: React.ReactNode;\r\n isDetailsDisplayed?: boolean;\r\n detailedProduct?: IOrderTemplateLineProps;\r\n detailedProductView?: IOrderTemplateLineViewProps;\r\n productQuantityView?: React.ReactNode;\r\n addButton?: React.ReactNode;\r\n isMobile?: boolean;\r\n toggleDetailsDisplayed?(props: IOrderTemplateLineProps | undefined): void;\r\n}\r\n\r\nexport interface IOrderTemplateLinesCallbacks {\r\n updateQuantity(itemKey: string, quantity: number): void;\r\n}\r\n\r\nexport interface IOrderTemplateLineViewModel extends OrderTemplateLine {\r\n isChecked: boolean;\r\n productQuantityView: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * OrderTemplateLines component.\r\n * @extends {React.PureComponent, IOrderTemplateLineActionMessageState>}\r\n */\r\n@observer\r\nclass OrderTemplateLines extends React.Component, IOrderTemplateLineActionMessageState> {\r\n private readonly className: string;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n @observable\r\n private _viewport: GridSize;\r\n\r\n @computed get isMobile(): boolean {\r\n return this._viewport === 'xs' || this._viewport === 'sm';\r\n }\r\n\r\n constructor(props: IGdnOrderTemplateProps, state: IOrderTemplateLineActionMessageState) {\r\n super(props);\r\n this.className = 'ms-order-template';\r\n this._viewport =\r\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this._updateViewport = this._updateViewport.bind(this);\r\n\r\n this.state = {\r\n itemKey: '',\r\n userMessage: '',\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isOpen: false,\r\n isItemAddedToOrderTemplateOpen: false,\r\n isConfirmAddSelectionToBagModalOpen: false,\r\n productSelection: [],\r\n isDetailsDisplayed: false,\r\n isQuantityDisabledForUpdate: false\r\n };\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this._updateViewport();\r\n\r\n if (MsDyn365.isBrowser && !this.props.context.request.user.isAuthenticated && !this.props.context.request.params.isEditor) {\r\n window.location.assign(this.props.context.request.user.signInUrl || '/');\r\n }\r\n }\r\n\r\n @action\r\n public async componentDidMount(): Promise {\r\n this.setState({});\r\n const orderTemplate = await this.props.data.orderTemplate;\r\n this.props.config.heading!.text = orderTemplate?.productList.Name || '';\r\n this.setState({\r\n productSelection: orderTemplate?.orderTemplateLines as IOrderTemplateLineViewModel[]\r\n });\r\n\r\n if (MsDyn365.isBrowser) {\r\n window.addEventListener('resize', this._updateViewport);\r\n this._updateViewport();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.removeEventListener('resize', this._updateViewport);\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(\r\n nextProps: IGdnOrderTemplateProps,\r\n nextState: IOrderTemplateLineActionMessageState\r\n ): boolean {\r\n if (this.state === nextState && this.props === nextProps) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { heading, className } = this.props.config;\r\n const { emptyOrderTemplateLinesText, errorGettingOrderTemplateLines } = this.props.resources;\r\n const { orderTemplate, cart } = this.props.data;\r\n\r\n if (cart.status === 'LOADING' || ObjectExtensions.isNullOrUndefined(orderTemplate) || orderTemplate.status === 'LOADING') {\r\n const errorProps: IOrderTemplateViewProps = {\r\n ...(this.props as IGdnOrderTemplateProps),\r\n OrderTemplateLines: {\r\n moduleProps: this.props,\r\n className: classnames(this.className, className)\r\n },\r\n status: 'LOADING',\r\n statusMessage: ,\r\n heading: heading && ,\r\n resources: this.props.resources\r\n };\r\n return this.props.renderView(errorProps);\r\n }\r\n\r\n if (cart.status === 'FAILED' || orderTemplate.status === 'FAILED') {\r\n const errorProps: IOrderTemplateViewProps = {\r\n ...(this.props as IGdnOrderTemplateProps),\r\n OrderTemplateLines: {\r\n moduleProps: this.props,\r\n className: classnames(`${this.className}`, className)\r\n },\r\n status: 'FAILED',\r\n statusMessage: ,\r\n heading: heading && ,\r\n resources: this.props.resources\r\n };\r\n\r\n return this.props.renderView(errorProps);\r\n }\r\n\r\n const orderTemplateResult = orderTemplate && orderTemplate.result;\r\n const orderTemplateLines = orderTemplateResult && orderTemplateResult.orderTemplateLines;\r\n\r\n if (!orderTemplateResult || !orderTemplateLines || orderTemplateLines.length === 0) {\r\n if (orderTemplateResult && !this._isFirstPage() && MsDyn365.isBrowser) {\r\n window.location.href = this._getOrderTemplatePageUrl();\r\n return null;\r\n }\r\n\r\n const emptyViewProps: IOrderTemplateViewProps = {\r\n ...(this.props as IGdnOrderTemplateProps),\r\n OrderTemplateLines: {\r\n moduleProps: this.props,\r\n className: classnames(`${this.className}`, className)\r\n },\r\n status: 'EMPTY',\r\n statusMessage: ,\r\n heading: heading && ,\r\n resources: this.props.resources,\r\n orderActions:\r\n orderTemplateResult &&\r\n this._renderOrderTemplateActions(orderTemplateResult, this._isChannelMultipleCatalogsFeatureEnabled()),\r\n bulkOrderLineActions: orderTemplateResult && this._getOrderTemplateLineActions(orderTemplateResult.productList.Id),\r\n OrderTemplateActions: {\r\n className: `${this.className}-action-bar`,\r\n tag: 'div'\r\n }\r\n };\r\n\r\n return this.props.renderView(emptyViewProps);\r\n }\r\n\r\n const viewProps: IOrderTemplateViewProps = {\r\n ...(this.props as IGdnOrderTemplateProps),\r\n OrderTemplateLines: {\r\n moduleProps: this.props,\r\n className: classnames(`${this.className}`, className)\r\n },\r\n status: 'SUCCESS',\r\n productsStatusMessage: this.state.isOpen && (\r\n
\r\n \r\n {this.state.userMessage}\r\n \r\n
\r\n ),\r\n heading: heading && ,\r\n OrderTemplateActions: {\r\n className: `${this.className}-action-bar`,\r\n tag: 'div'\r\n },\r\n ProductsTable: {\r\n className: `${this.className}__table`,\r\n tag: 'table',\r\n role: 'grid'\r\n },\r\n ProductsTableRow: {\r\n className: `${this.className}-table-line`,\r\n tag: 'tr'\r\n },\r\n ProductsTableHeading: this._renderProductListHeader(this.props.resources),\r\n ProductDetails: {\r\n className: `${this.className}-table-line__link`,\r\n tag: 'a'\r\n },\r\n orderLines: this._renderProductList(),\r\n callbacks: { updateQuantity: debounce(this._changeQuantity, 2000) },\r\n orderActions: this._renderOrderTemplateActions(orderTemplateResult, this._isChannelMultipleCatalogsFeatureEnabled()),\r\n pagination: this._renderPagination(),\r\n itemAddedToCartDialog: this._renderItemAddedToCartDialog(),\r\n bulkOrderLineActions: this._getOrderTemplateLineActions(orderTemplateResult.productList.Id),\r\n isDetailsDisplayed: this.state.isDetailsDisplayed,\r\n toggleDetailsDisplayed: this._toggleDetailsDisplayed,\r\n detailedProductView: this.state.detailedProductView,\r\n isMobile: this.isMobile\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public onSelect(line: IOrderTemplateLineViewModel, isChecked: boolean): void {\r\n line.isChecked = isChecked;\r\n\r\n const updated =\r\n this.state.productSelection.map(product => {\r\n if (product.fullProduct?.ProductDetails.ItemId === line.fullProduct?.ProductDetails.ItemId) {\r\n line.isChecked = isChecked;\r\n }\r\n return product;\r\n }) || [];\r\n\r\n this.setState({\r\n productSelection: updated\r\n });\r\n }\r\n\r\n public onSelectAll(isChecked: boolean): void {\r\n const updated =\r\n this.state.productSelection.map(line => {\r\n line.isChecked = isChecked;\r\n return line;\r\n }) || [];\r\n\r\n this.setState({\r\n productSelection: updated\r\n });\r\n }\r\n\r\n private _renderProductListHeader(resources: IGdnOrderTemplateResources): React.ReactNode {\r\n const {\r\n productImage,\r\n productNumberText,\r\n productText,\r\n productUnitPriceText,\r\n productUOMText,\r\n productQuantityText,\r\n productActionsText,\r\n selectAllRowsText,\r\n productLineCatalogName\r\n } = resources;\r\n const headers: IOrderTemplateTableHeadingProps = {\r\n productImage: productImage,\r\n productNumber: productNumberText,\r\n productName: productText,\r\n productUnitPrice: productUnitPriceText,\r\n productUOM: productUOMText,\r\n productQuantity: productQuantityText,\r\n productActions: productActionsText,\r\n selectAllRowsText,\r\n lines: this.state.productSelection,\r\n isMobile: this.isMobile,\r\n clickHandler: (isChecked: boolean) => {\r\n this.onSelectAll(isChecked);\r\n },\r\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled(),\r\n productLineCatalogName: productLineCatalogName\r\n };\r\n\r\n return ;\r\n }\r\n\r\n private _getOrderTemplateLineActions(orderTemplateId: string): React.ReactNode {\r\n return (\r\n line.isChecked)}\r\n onAddSelectionToBag={this._onAddSelectionToBag}\r\n onRemoveSelection={this._onRemoveSelection}\r\n isMinifiedView={this.isMobile}\r\n isMultipleCatalogFeatureEnabledInHq={this._isChannelMultipleCatalogsFeatureEnabled()}\r\n telemetryContent={this.telemetryContent}\r\n />\r\n );\r\n }\r\n\r\n private _generateLinesAddedToCartDialogResources(): ILinesAddedToCartDialogResources {\r\n return {\r\n viewCartButtonText: this.props.resources.viewCartButtonText,\r\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\r\n linesAddedToCartHeaderItemsOneText: this.props.resources.linesAddedToCartHeaderItemsOneText,\r\n linesAddedToCartHeaderLinesOneText: this.props.resources.linesAddedToCartHeaderLinesOneText,\r\n linesAddedToCartHeaderLinesFormatText: this.props.resources.linesAddedToCartHeaderLinesFormatText,\r\n linesAddedToCartHeaderMessageText: this.props.resources.linesAddedToCartHeaderMessageText\r\n };\r\n }\r\n\r\n private _generateItemAddedToCartDialogResources(): IItemAddedToCartDialogResources {\r\n return {\r\n viewCartButtonText: this.props.resources.viewCartButtonText,\r\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\r\n itemAddedToCartHeaderItemOneText: this.props.resources.itemAddedToCartHeaderItemOneText,\r\n itemAddedToCartHeaderItemFormatText: this.props.resources.itemAddedToCartHeaderItemFormatText,\r\n itemAddedToCartHeaderMessageText: this.props.resources.itemAddedToCartHeaderMessageText,\r\n freePriceText: this.props.resources.freePriceText,\r\n originalPriceText: this.props.resources.originalPriceText,\r\n currentPriceText: this.props.resources.currentPriceText\r\n };\r\n }\r\n\r\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\r\n let isMultipleCatalogFeatureEnabledInHq = false;\r\n if (this.props.data.featureState) {\r\n isMultipleCatalogFeatureEnabledInHq =\r\n this.props.data.featureState.result?.find(\r\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\r\n )?.IsEnabled || false;\r\n }\r\n return isMultipleCatalogFeatureEnabledInHq;\r\n };\r\n\r\n private readonly _onRemoveSelection = (): void => {\r\n const { context, resources } = this.props;\r\n const { telemetry } = context;\r\n const { removeSelectedFailureMessage, removeSelectedSuccessMessage } = resources;\r\n const lines = this.state.productSelection;\r\n const productListLines = lines && lines.length && lines.filter(line => line.isChecked).map(line => line.productListLine);\r\n\r\n if (productListLines && productListLines.length > 0) {\r\n const productListId = productListLines[0].ProductListId;\r\n\r\n const maxWaitTimeInMilliSeconds: number = 1000;\r\n removeProductListLinesAsync({ callerContext: context.actionContext }, productListId!, productListLines)\r\n .then(async () => {\r\n this.setState({\r\n userMessage: removeSelectedSuccessMessage,\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isOpen: true\r\n });\r\n // eslint-disable-next-line no-promise-executor-return -- fix\r\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\r\n window.location.reload();\r\n })\r\n .catch(error => {\r\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\r\n telemetry.error(error);\r\n this.setState({\r\n userMessage: removeSelectedFailureMessage,\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isOpen: true\r\n });\r\n });\r\n }\r\n };\r\n\r\n private readonly _getOrderTemplatePageUrl = (): string => {\r\n let url = getUrlSync('ordertemplate', this.props.context.actionContext) || '';\r\n url = url.includes('?') ? url.substr(0, url.indexOf('?')) : url;\r\n if (this.props.data.orderTemplate?.result?.productList.Id) {\r\n return `${url}?id=${this.props.data.orderTemplate.result.productList.Id}`;\r\n }\r\n return '';\r\n };\r\n\r\n private readonly _onAddSelectionToBag = async (): Promise => {\r\n const lines = this.state.productSelection;\r\n const selectedLines = lines.filter(line => line.isChecked);\r\n if (selectedLines.length > 0) {\r\n for (const productLine of selectedLines) {\r\n const itemKey = productLine.fullProduct?.ProductDetails.ItemId ?? '';\r\n const product = productLine.fullProduct?.ProductDetails ?? {\r\n RecordId: 0,\r\n ProductTypeValue: 0,\r\n BasePrice: 0,\r\n Price: 0,\r\n AdjustedPrice: 0\r\n };\r\n const quantity = productLine.productListLine.Quantity ?? 0;\r\n if (this._isChannelMultipleCatalogsFeatureEnabled()) {\r\n const catalogId = productLine.productListLine.CatalogId;\r\n await this._addItemToBag(product, quantity, itemKey, catalogId);\r\n } else {\r\n await this._addItemToBag(product, quantity, itemKey);\r\n }\r\n }\r\n }\r\n return Promise.resolve(void 0);\r\n };\r\n\r\n private _renderOrderTemplateActions(\r\n orderTemplate: OrderTemplate,\r\n isMultipleCatalogFeatureEnabledInHq: boolean\r\n ): IOrderTemplateActionsViewProps {\r\n const { id, typeName, context, resources } = this.props;\r\n const {\r\n addTemplateToBagButtonText,\r\n renameTemplateButtonText,\r\n deleteTemplateButtonText,\r\n closeWindowButtonText,\r\n addToCartFailureMessage,\r\n addToCartSuccessMessage,\r\n addToCartProcessMessage,\r\n orderTemplateErrorMessage\r\n } = resources;\r\n\r\n const orderTemplateActions: IOrderTemplateActionsProps = {\r\n data: { orderTemplate },\r\n id,\r\n typeName,\r\n context,\r\n telemetryContent: this.telemetryContent,\r\n handlers: {\r\n onRenameTemplate: this._renameTemplate,\r\n onRemoveTemplate: this._removeTemplate\r\n },\r\n isMultipleCatalogFeatureEnabledInHq,\r\n renameOrderTemplateDialogStrings: this._generateOrderTemplateNameDialogResources(resources),\r\n resources: {\r\n addTemplateToBagButtonText,\r\n renameTemplateButtonText,\r\n deleteTemplateButtonText,\r\n addToCartFailureMessage,\r\n addToCartSuccessMessage,\r\n addToCartProcessMessage,\r\n closeWindowButtonText,\r\n orderTemplateErrorMessage,\r\n linesAddedToCartDialogResources: this._generateLinesAddedToCartDialogResources()\r\n }\r\n };\r\n\r\n return OrderTemplateActionsView(orderTemplateActions);\r\n }\r\n\r\n private _generateOrderTemplateNameDialogResources(resources: IGdnOrderTemplateResources): IOrderTemplateNameDialogResources {\r\n return {\r\n orderTemplateHeaderLabel: resources.renameOrderTemplateTitleText,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateTitle,\r\n orderTemplateDescription: '',\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n orderTemplateButtonLabel: resources.renameOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelBtnLabel\r\n };\r\n }\r\n\r\n private readonly _getCurrentUrl = (reqContext: IRequestContext): URL => {\r\n if (MsDyn365.isBrowser) {\r\n return new URL(window.location.href);\r\n }\r\n return new URL(reqContext.url.requestUrl.href);\r\n };\r\n\r\n /**\r\n * On close handler.\r\n */\r\n private readonly onCloseHandler = () => {\r\n this.setState({\r\n itemKey: this.state.itemKey,\r\n userMessage: this.state.userMessage,\r\n statusCssString: this.state.statusCssString,\r\n messageGlyph: this.state.messageGlyph,\r\n isOpen: this.state.isOpen,\r\n isItemAddedToOrderTemplateOpen: false\r\n });\r\n };\r\n\r\n private readonly _renderItemAddedToCartDialog = (): React.ReactNode | null => {\r\n if (!this.state.itemAddedToCartDialogData) {\r\n return null;\r\n }\r\n const isMultipleCatalogFeatureEnabledInHq =\r\n this.props.data.featureState?.result?.find(feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature')\r\n ?.IsEnabled || false;\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n private _isFirstPage(): boolean {\r\n return this._getCurrentPageNumber() === 0;\r\n }\r\n\r\n private _getCurrentPageNumber(): number {\r\n const itemsPerPage = this.props.config.itemsPerPage || 50;\r\n return (this.props.context.request.query && +this.props.context.request.query.skip / itemsPerPage) || 0;\r\n }\r\n\r\n private readonly _renderPagination = (): React.ReactNode | null => {\r\n const { config, context, data, resources } = this.props;\r\n const orderTemplate = data && data.orderTemplate && data.orderTemplate.result;\r\n if (!orderTemplate) {\r\n return null;\r\n }\r\n\r\n const fullUrl = this._getCurrentUrl(context.request);\r\n const itemsPerPage = config.itemsPerPage || 50;\r\n const currentPageNumber = this._getCurrentPageNumber();\r\n const skipCount = currentPageNumber * itemsPerPage;\r\n const totalItems = orderTemplate && orderTemplate.totalLines;\r\n const previousText = resources.flipperPrevious;\r\n const nextText = resources.flipperNext;\r\n\r\n if (totalItems <= itemsPerPage) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n private _renderProductList(): IOrderTemplateLineViewProps[] {\r\n const {\r\n selectOneRowText,\r\n moreButtonText,\r\n viewProductDetailsText,\r\n priceFree,\r\n originalPriceText,\r\n currentPriceText,\r\n addOrderTemplateItemToBagButtonText,\r\n removeItemFromOrderTemplateButtonText,\r\n productDimensionTypeColor,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n inputQuantityAriaLabel,\r\n deleteButtonText,\r\n incrementButtonAriaLabel,\r\n decrementButtonAriaLabel,\r\n unavailableProductErrorMessage,\r\n outOfStockProductErrorMessage\r\n } = this.props.resources;\r\n\r\n const { context, telemetry, data } = this.props;\r\n const { catalogs } = data;\r\n const { imageSettings } = this.props.config;\r\n\r\n return this.state.productSelection.map((line, index) => {\r\n const currentProductProps: IOrderTemplateLineProps = {\r\n orderTemplateLine: line,\r\n productListLine: line.productListLine,\r\n price: line.fullProduct?.ProductPrice,\r\n error: line.error,\r\n shouldDisable: line.shouldDisable,\r\n context,\r\n isQuantityDisabledForUpdate: this.state.isQuantityDisabledForUpdate,\r\n productUrl: line.fullProduct\r\n ? this._updateProductUrlCatalog(line.fullProduct.ProductDetails, context, line.productListLine.CatalogId)\r\n : '',\r\n imageSettings,\r\n telemetry,\r\n moduleId: this.props.id,\r\n moduleTypeName: this.props.typeName,\r\n quantity: line.productListLine.Quantity!,\r\n handlers: {\r\n onAddToBag: this._addItemToBag,\r\n onRemoveItem: this._removeItemFromOrderTemplateLines,\r\n onChangeQuantity: this._changeQuantity,\r\n onSelect: this.onSelect.bind(this)\r\n },\r\n resources: {\r\n selectOneRowText,\r\n moreButtonText,\r\n viewProductDetailsText,\r\n productDimensionTypeColor,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n freePriceText: priceFree,\r\n originalPriceText,\r\n currentPriceText,\r\n inputQuantityAriaLabel,\r\n removeFromOrderTemplateLinesText: removeItemFromOrderTemplateButtonText,\r\n addToBagButtonText: addOrderTemplateItemToBagButtonText,\r\n deleteButtonText,\r\n incrementButtonAriaLabel,\r\n decrementButtonAriaLabel,\r\n unavailableProductErrorMessage,\r\n outOfStockProductErrorMessage\r\n },\r\n index,\r\n isMobile: this.isMobile,\r\n toggleDetailsDisplayed: this._toggleDetailsDisplayed,\r\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled(),\r\n catalogs: catalogs && catalogs.result\r\n };\r\n\r\n return OrderTemplateLineView(currentProductProps)!;\r\n });\r\n }\r\n\r\n private readonly _toggleDetailsDisplayed = (props: IOrderTemplateLineProps): void => {\r\n let state = {\r\n isDetailsDisplayed: !this.state.isDetailsDisplayed\r\n };\r\n if (props) {\r\n state = {\r\n ...state,\r\n ...{\r\n detailedProductView: OrderTemplateMobileLineView(props)\r\n }\r\n };\r\n }\r\n this.setState(state);\r\n };\r\n\r\n // This method is used to update the product url with the catalogId\r\n private readonly _updateProductUrlCatalog = (\r\n productDetails: SimpleProduct,\r\n context: ICoreContext,\r\n catalogId: number | undefined\r\n ): string => {\r\n const productUrl = getProductUrlSync(productDetails, context.actionContext, undefined);\r\n if (!StringExtensions.isNullOrWhitespace(productUrl) && catalogId !== undefined) {\r\n const absoluteUrl = new URL(productUrl, window.location.href);\r\n absoluteUrl.searchParams.set('catalogid', `${catalogId ?? 0}`);\r\n return absoluteUrl.href;\r\n }\r\n\r\n return productUrl;\r\n };\r\n\r\n // Dismiss alert when addingToCart/removeItem\r\n private readonly _onDismiss = () => {\r\n this.setState({\r\n isOpen: false\r\n });\r\n };\r\n\r\n private readonly _changeQuantity = async (itemKey: string, quantity: number, props?: IOrderTemplateLineProps) => {\r\n const { context, data, telemetry, config, resources } = this.props;\r\n const { orderTemplate } = data;\r\n\r\n if (context) {\r\n if (orderTemplate?.result) {\r\n const orderTemplateLinesData = orderTemplate.result.orderTemplateLines;\r\n if (orderTemplateLinesData) {\r\n const orderLineIndex = orderTemplateLinesData.findIndex(\r\n (lines: OrderTemplateLine) => lines.productListLine.LineId === itemKey\r\n );\r\n const newProductListLine = { ...orderTemplateLinesData[orderLineIndex] };\r\n if (orderTemplateLinesData[orderLineIndex].productListLine.Quantity === quantity) {\r\n return;\r\n }\r\n const prevQuantity = newProductListLine.productListLine.Quantity;\r\n newProductListLine.productListLine.Quantity = quantity;\r\n const { fullProduct, ...line } = newProductListLine;\r\n\r\n // Update mobile modal\r\n if (props) {\r\n props.quantity = quantity;\r\n this.setState({\r\n detailedProductView: OrderTemplateMobileLineView(props)\r\n });\r\n }\r\n\r\n this.setState({\r\n isQuantityDisabledForUpdate: true\r\n });\r\n\r\n updateProductListLinesAsync({ callerContext: context.actionContext }, orderTemplate.result.productList.Id, [\r\n line.productListLine\r\n ])\r\n .then(list => {\r\n this.setState({\r\n itemKey,\r\n userMessage: '',\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isQuantityDisabledForUpdate: false,\r\n isOpen: false\r\n });\r\n if (list) {\r\n const newLine = list.find(lines => lines.LineId === itemKey);\r\n orderTemplateLinesData[orderLineIndex].productListLine = newLine!;\r\n const updatedLines = [...orderTemplateLinesData];\r\n updatedLines[orderLineIndex] = { fullProduct, productListLine: newLine! };\r\n const updatedOrderTemplate = { ...orderTemplate.result, ProductListLines: updatedLines };\r\n context.actionContext.update(\r\n new ActiveOrderTemplateLinesInput(context.actionContext.requestContext, config),\r\n updatedOrderTemplate\r\n );\r\n }\r\n })\r\n .catch(error => {\r\n telemetry.warning('[order-template-lines] Unable to update product quantity.');\r\n telemetry.error(error);\r\n const userMessage = resources.editOrderTemplateLineQuantityError;\r\n if (props) {\r\n props && (props.productListLine.Quantity = prevQuantity);\r\n this.setState({\r\n itemKey,\r\n userMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isQuantityDisabledForUpdate: false,\r\n isOpen: true,\r\n detailedProductView: OrderTemplateMobileLineView(props)\r\n });\r\n } else {\r\n newProductListLine.productListLine.Quantity = prevQuantity;\r\n this.setState({\r\n itemKey,\r\n userMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isQuantityDisabledForUpdate: false,\r\n isOpen: true\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n };\r\n\r\n private readonly _addItemToBag = async (\r\n product: SimpleProduct,\r\n quantity: number,\r\n itemKey: string,\r\n catalogId?: number | undefined\r\n ): Promise => {\r\n const { context, data, resources, telemetry } = this.props;\r\n const { cart } = data;\r\n const { maxQuantityLimitText, addedToCartFailureMessage } = resources;\r\n\r\n if (context) {\r\n if (cart.result) {\r\n const addProductToCartInput = {\r\n product,\r\n count: quantity,\r\n catalogId\r\n };\r\n\r\n await cart.result\r\n .addProductToCart(addProductToCartInput)\r\n .then((result: ICartActionResult) => {\r\n if (result.status === 'SUCCESS') {\r\n return getPriceForSelectedVariant(\r\n new PriceForSelectedVariantInput(\r\n product.RecordId,\r\n this.props.context.actionContext.requestContext.apiSettings.channelId,\r\n product\r\n ),\r\n this.props.context.actionContext\r\n ).then(priceResult => {\r\n if (!priceResult) {\r\n return AsyncResult.reject('Failed to retrieve product price');\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- read config file.\r\n const isMiniCart = context.app.config.addToCartBehavior === 'showMiniCart';\r\n this.setState({\r\n itemKey,\r\n userMessage: '',\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isOpen: false,\r\n isItemAddedToOrderTemplateOpen: !isMiniCart,\r\n itemAddedToCartDialogData: {\r\n product,\r\n productPrice: priceResult,\r\n quantity\r\n },\r\n isDetailsDisplayed: false\r\n });\r\n return AsyncResult.resolve();\r\n });\r\n } else {\r\n switch (result.substatus) {\r\n case 'MAXQUANTITY':\r\n if (context.app.config.maxQuantityForCartLineItem) {\r\n const cartLineQuantity: number | undefined =\r\n cart.result?.cart.CartLines &&\r\n cart.result?.cart.CartLines.find(result => result.ProductId === product.RecordId)?.Quantity;\r\n const defaultMessage = `You can only add ${context.app.config.maxQuantityForCartLineItem} of this item to your shopping bag`;\r\n this.setState({\r\n itemKey,\r\n userMessage:\r\n cartLineQuantity !== undefined\r\n ? maxQuantityLimitText\r\n .replace('{curQuantity}', cartLineQuantity.toString())\r\n .replace(\r\n '{maxQuantity}',\r\n context.app.config.maxQuantityForCartLineItem.toString()\r\n ) || defaultMessage\r\n : defaultMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n return AsyncResult.resolve();\r\n } else {\r\n const defaultMessage = `Max quantity for cart line item is undefined. Please define in configuration settings.`;\r\n this.setState({\r\n itemKey,\r\n userMessage: defaultMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n return AsyncResult.resolve();\r\n }\r\n case 'INVOICEINCART': {\r\n this.setState({\r\n itemKey,\r\n userMessage: result.errorDetails?.LocalizedMessage || addedToCartFailureMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n return AsyncResult.resolve();\r\n }\r\n default:\r\n telemetry.debug('[order-template-lines] Unable to Update Cart Line from the order template lines');\r\n this.setState({\r\n itemKey,\r\n userMessage: addedToCartFailureMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n return AsyncResult.resolve();\r\n }\r\n }\r\n })\r\n .catch((error: Error) => {\r\n telemetry.warning(error.message);\r\n telemetry.debug('[order-template-lines] Error trying to Update Cart Line from the order template lines');\r\n if (StringExtensions.isNullOrWhitespace(error.message)) {\r\n this.setState({\r\n itemKey,\r\n userMessage: error.message,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n } else {\r\n this.setState({\r\n itemKey,\r\n userMessage: addedToCartFailureMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n private readonly _removeItemFromOrderTemplateLines = async (line: IOrderTemplateLineViewModel) => {\r\n const { context, data, telemetry } = this.props;\r\n const { orderTemplate } = data;\r\n\r\n if (context && context.actionContext) {\r\n const maxWaitTimeInMilliSeconds: number = 1000;\r\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\r\n if (userToken && orderTemplate?.result && line) {\r\n const featureStates = await getFeatureState(createGetFeatureStateInput(context.actionContext), context.actionContext);\r\n let isMultipleCatalogFeatureEnabledInHq = false;\r\n if (ArrayExtensions.hasElements(featureStates)) {\r\n isMultipleCatalogFeatureEnabledInHq =\r\n featureStates.find(\r\n (featureState: FeatureState) => featureState.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\r\n )?.IsEnabled || false;\r\n }\r\n const catalogId = getCatalogId(context.actionContext.requestContext);\r\n if (isMultipleCatalogFeatureEnabledInHq) {\r\n line.productListLine.CatalogId = catalogId;\r\n }\r\n removeProductListLinesAsync({ callerContext: context.actionContext }, line.productListLine.ProductListId!, [\r\n line.productListLine\r\n ])\r\n .then(async () => {\r\n // eslint-disable-next-line no-promise-executor-return -- fix\r\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\r\n window.location.reload();\r\n })\r\n .catch(error => {\r\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\r\n telemetry.error(error);\r\n });\r\n } else {\r\n telemetry.warning(\r\n '[order-template-lines] Unable remove items from the order template lines user token or lineItemID was not found'\r\n );\r\n }\r\n }\r\n };\r\n\r\n private readonly _renameTemplate = async (_template: ProductList): Promise => {\r\n window.location.reload();\r\n return Promise.resolve();\r\n };\r\n\r\n private readonly _removeTemplate = () => {\r\n const { context, data, telemetry, resources } = this.props;\r\n const { orderTemplate } = data;\r\n\r\n if (context && context.actionContext) {\r\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\r\n if (userToken && orderTemplate && orderTemplate.result) {\r\n deleteAsync({ callerContext: context.actionContext }, orderTemplate.result.productList)\r\n .then()\r\n .catch((error: string) => {\r\n telemetry.warning('[order-template] Unable to delete order template.');\r\n telemetry.error(error);\r\n this.setState({\r\n itemKey: orderTemplate.result?.productList.Id || '',\r\n userMessage: resources.deleteOrderTemplateFailedText,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n });\r\n const newLink = getUrlSync('ordertemplatelist', this.props.context.actionContext);\r\n if (newLink) {\r\n window.location.assign(newLink);\r\n }\r\n } else {\r\n telemetry.warning('[order-template] Failed to delete order template. Order template was not found');\r\n }\r\n } else {\r\n telemetry.warning('[order-template] Failed to delete order template.');\r\n }\r\n };\r\n\r\n private _updateViewport(): void {\r\n this._viewport = this._getViewport();\r\n }\r\n\r\n private readonly _getViewport = (): GridSize => {\r\n const { context } = this.props;\r\n\r\n // Always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (MsDyn365.isBrowser && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n }\r\n return 'xl';\r\n }\r\n }\r\n\r\n return 'xs';\r\n };\r\n\r\n /**\r\n * Renders a Pagination previous text.\r\n * @param paginationPreviousText - Pagination previous text from resources.\r\n * @returns Previous text and flipper icon.\r\n */\r\n private readonly _renderPrev = (paginationPreviousText: string) => {\r\n return (\r\n
\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Renders a Pagination next text.\r\n * @param paginationNextText - Pagination next text from resources.\r\n * @returns Next text and flipper icon.\r\n */\r\n private readonly _renderNext = (paginationNextText: string) => {\r\n return (\r\n
\r\n {paginationNextText}\r\n
\r\n );\r\n };\r\n}\r\n\r\nexport default OrderTemplateLines;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Button, INodeProps, Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateLineViewProps } from './components';\r\nimport { IOrderTemplateViewProps } from './gdn-order-template';\r\n\r\nconst OrderTemplateLinesView: React.FC = (props: IOrderTemplateViewProps) => {\r\n const {\r\n OrderTemplateLines,\r\n status,\r\n statusMessage,\r\n heading,\r\n ProductsTable,\r\n ProductsTableHeading,\r\n orderLines,\r\n ProductsTableRow,\r\n productsStatusMessage,\r\n OrderTemplateActions,\r\n orderActions,\r\n pagination,\r\n itemAddedToCartDialog,\r\n bulkOrderLineActions,\r\n isDetailsDisplayed,\r\n detailedProductView,\r\n toggleDetailsDisplayed,\r\n resources: {\r\n cancelBtnLabel,\r\n productNumberText,\r\n productText,\r\n productUnitPriceText,\r\n productUOMText,\r\n productQuantityText,\r\n productLineCatalogName\r\n }\r\n } = props;\r\n\r\n const toggleDetails = React.useCallback(() => {\r\n toggleDetailsDisplayed && toggleDetailsDisplayed(undefined);\r\n }, [toggleDetailsDisplayed]);\r\n\r\n return (\r\n \r\n {heading}\r\n {OrderTemplateActions && (\r\n \r\n {orderActions?.addTemplateToBag}\r\n {orderActions?.renameTemplate}\r\n {orderActions?.removeTemplate}\r\n {orderActions?.actionsSplitButton}\r\n {!isDetailsDisplayed && productsStatusMessage}\r\n \r\n )}\r\n {bulkOrderLineActions}\r\n {status !== 'SUCCESS' && statusMessage}\r\n {ProductsTable && orderLines && orderLines.length > 0 && (\r\n \r\n \r\n {ProductsTableHeading}\r\n \r\n {orderLines &&\r\n orderLines.map(product => {\r\n return _renderItem(product, productQuantityText, ProductsTableRow);\r\n })}\r\n \r\n \r\n {pagination}\r\n \r\n )}\r\n {itemAddedToCartDialog}\r\n \r\n Product Details\r\n \r\n
    \r\n
  • {detailedProductView?.productImage}
  • \r\n
  • \r\n {productText}:\r\n {detailedProductView?.productInfo}\r\n
  • \r\n
  • \r\n {productLineCatalogName}:\r\n {detailedProductView?.productLineCatalog}\r\n
  • \r\n
  • \r\n {productNumberText}:\r\n {detailedProductView?.productNumber}\r\n
  • \r\n
  • \r\n {productUnitPriceText}:\r\n {` `}\r\n {detailedProductView?.productPrice}\r\n
  • \r\n
  • \r\n {productUOMText}:\r\n {` `}\r\n {detailedProductView?.productUnitOfMeasure}\r\n
  • \r\n
  • \r\n {productQuantityText}:\r\n {detailedProductView?.productQuantityView}\r\n
  • \r\n {productsStatusMessage &&
  • {productsStatusMessage}
  • }\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nconst _renderItem = (product: IOrderTemplateLineViewProps, quantityLabel: string, ProductsTableRow?: INodeProps): JSX.Element | null => {\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n const {\r\n key,\r\n selectLine,\r\n productLineCatalog,\r\n productImage,\r\n productPrice,\r\n productNumber,\r\n addToBagButton,\r\n removeButton,\r\n productInfo,\r\n productUnitOfMeasure,\r\n productQuantityView,\r\n productQuantity,\r\n popUp,\r\n isMobile,\r\n extraActionsPopup,\r\n isMultipleCatalogFeatureEnabledInHq,\r\n disabled\r\n } = product;\r\n\r\n const lineVisibility = disabled\r\n ? {\r\n pointerEvents: 'none',\r\n opacity: 0.5\r\n }\r\n : {\r\n pointerEvents: 'auto',\r\n opacity: 1\r\n };\r\n\r\n const disableElement: React.CSSProperties = lineVisibility as React.CSSProperties;\r\n\r\n return (\r\n \r\n {selectLine}\r\n {!isMobile && isMultipleCatalogFeatureEnabledInHq && {productLineCatalog}}\r\n {productImage}\r\n {isMobile ? (\r\n \r\n
{productNumber}
\r\n
\r\n {quantityLabel}:{` `}\r\n {productQuantity}\r\n
\r\n \r\n ) : (\r\n {productNumber}\r\n )}\r\n {!isMobile && {productInfo}}\r\n {!isMobile && {productPrice}}\r\n {!isMobile && {productUnitOfMeasure}}\r\n {!isMobile && {productQuantityView}}\r\n {isMobile && {popUp}}\r\n {!isMobile && !isMultipleCatalogFeatureEnabledInHq && (\r\n \r\n {addToBagButton}\r\n {removeButton}\r\n \r\n )}\r\n {extraActionsPopup}\r\n
\r\n );\r\n};\r\n\r\nexport default OrderTemplateLinesView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { AddToCartBehavior } from '@msdyn365-commerce/components';\r\nimport MsDyn365, { getUrlSync, IDictionary, TelemetryEvent } from '@msdyn365-commerce/core';\r\n// @ts-ignore\r\nimport { ICartIconViewProps, ICartViewProps, IFlyoutCartLineItemViewProps } from '@msdyn365-commerce-modules/cart';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getPayloadObject, INodeProps, KeyCodes, Modal, Node, onTelemetryClick,getTelemetryAttributes, getTelemetryObject,\r\n ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\nimport { validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\r\n\r\nimport { ICartIconProps as ICartIconExtensionProps } from '../definition-extensions/cart-icon.ext.props.autogenerated';\r\n\r\n/**\r\n * ICartIconViewState: Interface for Cart Icon View State.\r\n */\r\ninterface ICartIconViewState {\r\n isModalOpen: boolean;\r\n isCartValid: boolean;\r\n isQuantityLimitsFeatureEnabled: boolean;\r\n}\r\n\r\n/**\r\n * Render Cart lines.\r\n * @param cartLines - Flyout cart line view props.\r\n * @param props - Cart icon view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\r\n if (!cartLines) {\r\n props.context.telemetry.error('Cartlines content is empty, module wont render');\r\n return null;\r\n }\r\n return cartLines.map((cartLine, index) => {\r\n const cartLineIndex = index;\r\n return (\r\n \r\n \r\n {cartLine.cartline}\r\n \r\n {cartLine.remove}\r\n {cartLine.storeLocation}\r\n \r\n );\r\n });\r\n};\r\n\r\n/**\r\n * Initiate total price.\r\n * @param props - Cart icon view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderTotalPrice = (props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element | null => {\r\n const cart = props.data.cart.result ?? undefined;\r\n const price = cart && !cart.hasInvoiceLine && (cart.cart.TotalAmount || undefined);\r\n const totalPrice = price ? props.context.cultureFormatter.formatCurrency(price) : props.context.cultureFormatter.formatCurrency(props.resources.emptyPrice);\r\n return (\r\n
\r\n \r\n {props.resources.totalPriceFormatString?.replace('{price}' , '')}\r\n \r\n {totalPrice}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n *\r\n * CartIconView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class CartIconView extends React.PureComponent, ICartIconViewState> {\r\n\r\n private isAutoDisplayTriggered: boolean;\r\n private readonly checkoutByGuestAttributes: IDictionary | undefined;\r\n private lastValidatedCartVersion: number | undefined;\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n public constructor(props: ICartViewProps & ICartIconViewState & ICartIconViewProps & ICartIconExtensionProps<{}>) {\r\n super(props);\r\n this.isAutoDisplayTriggered = false;\r\n this.state = {\r\n isModalOpen: false,\r\n isCartValid: true,\r\n isQuantityLimitsFeatureEnabled: false\r\n };\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\r\n const payload = getPayloadObject(TelemetryEvent.CheckOut, this.telemetryContent, TelemetryConstant.Checkout);\r\n payload.contentAction.etext = TelemetryConstant.GuestCheckout;\r\n this.checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, payload);\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.addEventListener('keydown', this._escFunction, false);\r\n }\r\n this._validateCart();\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n this._validateCart();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.removeEventListener('keydown', this._escFunction, false);\r\n }\r\n }\r\n\r\n private _removeCommentFromCartLine(): void {\r\n const cartState = this.props.data.cart.result || undefined;\r\n\r\n if (cartState) {\r\n if ((!cartState.cart.CartLines || cartState.cart.CartLines?.length === 0) && cartState.cart.Comment) {\r\n const _clonedCart = { ...cartState.cart };\r\n _clonedCart.Comment = \"\";\r\n\r\n void cartState.updateCart({newCartObject: _clonedCart});\r\n }\r\n }\r\n }\r\n\r\n private _renderGuestCheckout(hasError: boolean,guestCheckoutUrl: string) {\r\n return(\r\n \r\n {this.props.resources.guestCheckoutButtonTitle}\r\n \r\n );\r\n }\r\n\r\n private _validateCart(): void {\r\n const {\r\n data: { cart }\r\n } = this.props;\r\n const cartVersion = cart.result?.cart?.Version ?? undefined;\r\n if (this.lastValidatedCartVersion === cartVersion) {\r\n return;\r\n }\r\n\r\n this.lastValidatedCartVersion = cartVersion; // This field is populated to block concurrent requests\r\n validateCartAsync(cart, this.props.telemetry, this.props.context)\r\n .then((result) => {\r\n this.setState({ isCartValid: !ArrayExtensions.hasElements(result?.ValidationResultsPairs) });\r\n })\r\n .catch(() => {\r\n this.setState({ isCartValid: false });\r\n });\r\n }\r\n\r\n /**\r\n * Render Cart Item count.\r\n * @returns JSX Element.\r\n */\r\n public render(): JSX.Element | null {\r\n this._removeCommentFromCartLine();\r\n const cart = this.props.data.cart.result ?? undefined;\r\n const cartlines = this.props.cartlines;\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\r\n const shouldShowMiniCart = cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\r\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\r\n const hasError = !this.state.isCartValid || (cartlines ? cartlines.some(cartline => cartline.hasError) : false);\r\n if (shouldShowMiniCart) {\r\n if (!this.isAutoDisplayTriggered) {\r\n // First time trigger auto mini cart.\r\n this.setState({ isModalOpen: true });\r\n this.isAutoDisplayTriggered = true;\r\n } else if (!this.state.isModalOpen) {\r\n // If modal is closed, reset the flag.\r\n this.isAutoDisplayTriggered = false;\r\n }\r\n }\r\n return (\r\n \r\n \r\n {this.props.cartIcon}\r\n \r\n \r\n \r\n {this.props.flyoutTitle}\r\n {this._renderCartItemCount(this.props)}\r\n {this._renderCartCloseIcon()}\r\n \r\n \r\n {this.props.data.cart.result?.isEmpty ? this.props.slots.emptyCart : null}\r\n \r\n {renderCartlines(cartlines, this.props)}\r\n \r\n \r\n \r\n {this.props.slots.promoContentItem}\r\n {renderTotalPrice(this.props)}\r\n

\r\n {this.props.resources.subTotalMessage}\r\n

\r\n {/* {this.props.checkoutAsSignInUserButton} */}\r\n {/* {this.props.checkoutAsGuestButton} */}\r\n {cartlines && cartlines.length > 0 ? this._renderGuestCheckout(hasError, guestCheckoutUrl) : null}\r\n\r\n {this.props.data.cart.result?.isEmpty ? null : this.props.goToCartButton}\r\n \r\n {\r\n this.props.data.cart.result?.isEmpty ? \r\n {this.props.resources.continueShoppingButtonTitle}\r\n : null\r\n }\r\n \r\n
\r\n \r\n \r\n );\r\n }\r\n\r\n /**\r\n * Initiate modal container.\r\n * @returns Inode props.\r\n */\r\n private readonly _modalContainer = (): INodeProps => {\r\n return {\r\n tag: Modal,\r\n placement: 'bottom-end',\r\n hideArrow: true,\r\n className: 'ms-cart-icon__minicartmodal-container',\r\n wrapClassName: 'ms-cart-icon__minicartmodal',\r\n isOpen: this.state.isModalOpen,\r\n toggle: this.closeModal\r\n };\r\n };\r\n\r\n /**\r\n * Initiate open modal.\r\n */\r\n private readonly _openModal = (): void => {\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'cart-icon', '');\r\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'cart-icon');\r\n this.setState({\r\n isModalOpen: true\r\n });\r\n };\r\n\r\n /**\r\n * Initiate close modal.\r\n */\r\n private readonly closeModal = (): void => {\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n\r\n };\r\n\r\n /**\r\n * Initiate cart close Icon.\r\n * @returns JSX Element.\r\n */\r\n private readonly _renderCartCloseIcon = (): JSX.Element | null => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n /**\r\n * Render Cart Item count.\r\n * @param props - Cart icon view props.\r\n * @returns JSX Element.\r\n */\r\n private readonly _renderCartItemCount = (props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element | null => {\r\n let cartItemCount;\r\n const defaultCartItemCount: number = 0;\r\n const defaultCartItemCountOne: number = 1;\r\n\r\n if (ArrayExtensions.hasElements(props.cartlines)) {\r\n if (props.cartlines.length === defaultCartItemCountOne) {\r\n cartItemCount = `${defaultCartItemCountOne} ${props.resources.item}`;\r\n } else {\r\n cartItemCount = `${props.cartlines.length} ${props.resources.items}`;\r\n }\r\n } else {\r\n cartItemCount = `${defaultCartItemCount} ${props.resources.items}`;\r\n }\r\n return (\r\n \r\n {cartItemCount}\r\n \r\n );\r\n };\r\n\r\n /**\r\n * Handle escape click to close modal.\r\n * @param event - On press of any key.\r\n */\r\n private readonly _escFunction = (event: KeyboardEvent) => {\r\n if (event.keyCode === KeyCodes.Escape && this.state.isModalOpen) {\r\n this.closeModal();\r\n }\r\n };\r\n\r\n}\r\n\r\nexport default CartIconView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IOrderTemplateNameDialogResources, OrderTemplateNameDialog } from '@msdyn365-commerce/components';\r\nimport { IComponentProps } from '@msdyn365-commerce/core';\r\nimport React, { useState } from 'react';\r\n\r\nconst modalCloseButtonReference: React.RefObject = React.createRef();\r\n\r\n/**\r\n * The Create Order Template Button Props.\r\n */\r\nexport interface ICreateOrderTemplateButtonProps extends IComponentProps {\r\n\r\n /**\r\n * The label for create order template.\r\n */\r\n createOrderTemplateText: string;\r\n\r\n /**\r\n * The create order template dialog resources.\r\n */\r\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\r\n\r\n /**\r\n * The delegate to fire when dialog captured any user entry.\r\n */\r\n onOrderTemplateCreated(): Promise;\r\n}\r\n\r\nconst CreateOrderTemplateButton: React.FC = (props) => {\r\n const onCancelHandler = React.useCallback(() => {\r\n return;\r\n }, []);\r\n const [isCreateOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = useState(false);\r\n const onCreateButtonClick = React.useCallback(() => {\r\n setOrderTemplateNameDialogOpen(true);\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n {props.createOrderTemplateText}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateOrderTemplateButton;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport CreateNewTemplateButtonComponent from './components/create-order-template.component';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateListProps, IOrderTemplateListResources } from '../definition-extensions/order-template-list.ext.props.autogenerated';\r\nimport { IOrderTemplateNameDialogResources } from \"@msdyn365-commerce/components\";\r\n\r\n/**\r\n * Interface for OrderTemplateImage.\r\n */\r\ninterface IOrderTemplateImage {\r\n props: {\r\n children: React.ReactElement[];\r\n };\r\n}\r\n\r\n/**\r\n * To render order template.\r\n * @param orderTemplate - The order template view props.\r\n * @param orderTemplateNodeProps - The order template node props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, orderTemplateNodeProps?: INodeProps): JSX.Element | null => {\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\r\n\r\n const orderTemplateImageElement: IOrderTemplateImage = orderTemplateImage as React.ReactElement;\r\n const currentImageListLength = orderTemplateImageElement.props.children.length;\r\n const defaultNumberImagesInTile = 4;\r\n\r\n if (currentImageListLength < defaultNumberImagesInTile) {\r\n for (let index = 0; index < defaultNumberImagesInTile - currentImageListLength; index++) {\r\n orderTemplateImageElement.props.children.push();\r\n }\r\n }\r\n\r\n return (\r\n \r\n {orderTemplateName}\r\n {orderTemplateImage}\r\n {addToCartButton}\r\n {removeButton}\r\n {orderTemplateStatusMessage}\r\n \r\n );\r\n};\r\n\r\nconst _reloadPage = async () => {\r\n window.location.reload();\r\n};\r\n\r\nconst _generateOrderTemplateNameDialogResources = (resources: IOrderTemplateListResources): IOrderTemplateNameDialogResources => {\r\n return {\r\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\r\n orderTemplateDescription: resources.createOrderTemplateDescription,\r\n\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n\r\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\r\n };\r\n}\r\n\r\n/**\r\n * Order Template List View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nexport const OrderTemplateListViewComponent: React.FC> = props => {\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n OrderTemplateList, OrderTemplates, OrderTemplate,\r\n status,\r\n statusMessage,\r\n heading,\r\n orderTemplates,\r\n createOrderTemplateButton,\r\n templateHeaderStatusMessage\r\n } = props;\r\n console.log(createOrderTemplateButton)\r\n return (\r\n \r\n {heading}\r\n {status !== 'SUCCESS' && statusMessage}\r\n {status === 'EMPTY' && (\r\n \r\n )}\r\n \r\n {status === 'SUCCESS' &&\r\n (!OrderTemplates || !orderTemplates ||\r\n !ArrayExtensions.hasElements(orderTemplates)) ? (\r\n
\r\n

\r\n {props.resources.headingForEmptyOrderTemplateList}\r\n

\r\n

\r\n {props.resources.textForEmptyOrderTemplateList}\r\n

\r\n {createOrderTemplateButton}\r\n
\r\n ) : createOrderTemplateButton}\r\n {templateHeaderStatusMessage}\r\n
\r\n { OrderTemplates && orderTemplates && ArrayExtensions.hasElements(orderTemplates) &&\r\n \r\n {orderTemplates.map((orderTemplate) => {\r\n return renderOrderTemplate(orderTemplate, OrderTemplate);\r\n })}\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default OrderTemplateListViewComponent;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { AddToCartBehavior } from '@msdyn365-commerce/components';\r\nimport MsDyn365, { getUrlSync } from '@msdyn365-commerce/core';\r\n// @ts-ignore\r\nimport { ICartIconViewProps, ICartViewProps, IFlyoutCartLineItemViewProps } from '@mdsdyn365-commerce-modules/cart';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getPayloadObject, INodeProps, KeyCodes, Modal, Node, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\n\r\nimport { ICartIconProps as ICartIconExtensionProps, ICartIconResources } from '../definition-extensions/cart-icon.ext.props.autogenerated';\r\nimport { readAsync } from \"@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g\";\r\nimport { Address } from \"@msdyn365-commerce/retail-proxy\";\r\nimport { CartLine, CommerceProperty } from '@msdyn365-commerce/retail-proxy';\r\nimport { CommercePropertyValueEnum } from '../../../modules/allowable-freight/utils/CommercePropertyValueEnum';\r\n\r\n/**\r\n * ICartIconViewState: Interface for Cart Icon View State.\r\n */\r\ninterface ICartIconViewState {\r\n isModalOpen: boolean;\r\n isAddressCheckComplete: boolean;\r\n isErrModalOpen: boolean;\r\n iProductsPresentVersion: number;\r\n}\r\n\r\nconst renderInvoiceInCartMsg = (resources: ICartIconResources): JSX.Element | null => {\r\n\r\n return (\r\n \r\n \r\n {resources.invoiceInCartMessage}\r\n \r\n ) \r\n\r\n}\r\n\r\n/**\r\n * Render Cart lines.\r\n * @param cartLines - Flyout cart line view props.\r\n * @param props - Cart icon view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element[] | null => {\r\n if (props.data.cart.result?.hasInvoiceLine) {\r\n\r\n return (\r\n [\r\n {renderInvoiceInCartMsg(props.resources)}\r\n \r\n ]);\r\n }\r\n\r\n if (!cartLines ) {\r\n props.context.telemetry.error('Cartlines content is empty, module wont render');\r\n return null;\r\n }\r\n \r\n if (MsDyn365.isBrowser) {\r\n document.addEventListener('UPDATE_CART', (data: any) => {\r\n if (data.detail.Products?.length) {\r\n const cartState = props.data.cart.result;\r\n cartState?.removeCartLines({ cartLineIds: data.detail.Products.map((p: any) => p.LineId) });\r\n }\r\n });\r\n }\r\n\r\n return cartLines.map((cartLine, index) => {\r\n const cartLineIndex = index;\r\n return (\r\n \r\n \r\n {cartLine.cartline}\r\n \r\n {cartLine.remove}\r\n {cartLine.storeLocation}\r\n \r\n );\r\n });\r\n};\r\n\r\n/**\r\n * Initiate total price.\r\n * @param props - Cart icon view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderTotalPrice = (props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element | null => {\r\n const cart = props.data.cart.result ?? undefined;\r\n const price = cart && !cart.hasInvoiceLine && (cart.cart.TotalAmount || undefined);\r\n const totalPrice = price ? props.context.cultureFormatter.formatCurrency(price) : props.context.cultureFormatter.formatCurrency(props.resources.emptyPrice);\r\n return (\r\n
\r\n \r\n {props.resources.totalPriceFormatString?.replace('{price}', '')}\r\n \r\n {totalPrice}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n *\r\n * CartIconView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class CartIconView extends React.PureComponent, ICartIconViewState> {\r\n\r\n private isAutoDisplayTriggered: boolean;\r\n private isErrAutoDisplayTriggered: boolean;\r\n\r\n public constructor(props: ICartViewProps & ICartIconViewState & ICartIconViewProps & ICartIconExtensionProps<{}>) {\r\n super(props);\r\n this.isAutoDisplayTriggered = false;\r\n this.isErrAutoDisplayTriggered = false;\r\n this.state = {\r\n isModalOpen: false,\r\n isAddressCheckComplete: false,\r\n isErrModalOpen: false,\r\n iProductsPresentVersion: 0\r\n };\r\n\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.addEventListener('keydown', this._escFunction, false);\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.removeEventListener('keydown', this._escFunction, false);\r\n }\r\n }\r\n\r\n private _removeCommentFromCartLine(): void {\r\n const cartState = this.props.data.cart.result || undefined;\r\n\r\n if (cartState) {\r\n if ((!cartState.cart.CartLines || cartState.cart.CartLines?.length === 0) && cartState.cart.Comment) {\r\n const _clonedCart = { ...cartState.cart };\r\n _clonedCart.Comment = \"\";\r\n\r\n void cartState.updateCart({ newCartObject: _clonedCart });\r\n }\r\n }\r\n }\r\n\r\n private async getAddresses(): Promise
{\r\n if (this.props.context.request.user.isAuthenticated) {\r\n const customer = await readAsync({ callerContext: this.props.context.actionContext }, this.props.context.request.user.customerAccountNumber!)\r\n if (customer) {\r\n return customer.Addresses?.find(add => add.IsPrimary)\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n private async handleCartAddress(): Promise {\r\n const cartState = this.props.data.cart.result;\r\n if (cartState) {\r\n this.setState({ isAddressCheckComplete: true })\r\n const hasAddress = !!cartState.cart.ShippingAddress\r\n // console.log(hasAddress, 'has address')\r\n if (!hasAddress) {\r\n const primaryAddress = await this.getAddresses()\r\n // console.log(primaryAddress, 'primary address')\r\n\r\n if (!!primaryAddress) {\r\n void await cartState.updateShippingAddress({ newShippingAddress: primaryAddress });\r\n }\r\n }\r\n }\r\n }\r\n\r\n private getExtensionPropertyValueByKey = (\r\n properties: CommerceProperty[] | undefined,\r\n key: string,\r\n valueType: CommercePropertyValueEnum\r\n ) => {\r\n const property = properties?.find(p => p.Key === key)?.Value;\r\n\r\n // eslint-disable-next-line security/detect-object-injection\r\n const val = property ? property[valueType] : null;\r\n return val;\r\n };\r\n\r\n\r\n /**\r\n * Render Cart Item count.\r\n * @returns JSX Element.\r\n */\r\n public render(): JSX.Element | null {\r\n this._removeCommentFromCartLine();\r\n const cart = this.props.data.cart.result ?? undefined;\r\n\r\n\r\n let iProductsPresent = this.getExtensionPropertyValueByKey(cart?.cart?.ExtensionProperties, \"not-eligible\", CommercePropertyValueEnum.string);\r\n // console.log(iProductsPresent)\r\n // console.log(this.state.iProductsPresentVersion, !!this.state.iProductsPresentVersion)\r\n if (!this.isErrAutoDisplayTriggered && typeof iProductsPresent === \"string\" && iProductsPresent !== \"[]\") {\r\n\r\n this.setState({ isErrModalOpen: true, iProductsPresentVersion: cart?.cart.Version || 0 })\r\n this.isErrAutoDisplayTriggered = true;\r\n }\r\n else if (!this.state.isErrModalOpen && cart?.cart.Version !== this.state.iProductsPresentVersion) {\r\n this.isErrAutoDisplayTriggered = false;\r\n\r\n }\r\n\r\n if (this.state.isErrModalOpen) {\r\n this.isAutoDisplayTriggered = true;\r\n }\r\n\r\n let ippContent;\r\n\r\n if (!!iProductsPresent) {\r\n try {\r\n ippContent =\r\n <>\r\n

{this.props.resources.ineligibleProductsText}

\r\n {(JSON.parse(iProductsPresent as string) as CartLine[]).map(r =>
  • {r.Barcode}: {r.Description}
  • )}\r\n ;\r\n } catch (err) {\r\n\r\n }\r\n }\r\n\r\n if (cart && !this.state.isAddressCheckComplete) {\r\n this.handleCartAddress();\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\r\n const shouldShowMiniCart = cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\r\n\r\n if (shouldShowMiniCart) {\r\n if (!this.isAutoDisplayTriggered) {\r\n // First time trigger auto mini cart.\r\n this.setState({ isModalOpen: true });\r\n this.isAutoDisplayTriggered = true;\r\n }\r\n else if (!this.state.isModalOpen) {\r\n // If modal is closed, reset the flag.\r\n this.isAutoDisplayTriggered = false;\r\n }\r\n }\r\n return (\r\n \r\n \r\n {this.props.cartIcon}\r\n \r\n \r\n {ippContent && ippContent}\r\n \r\n \r\n \r\n {this.props.flyoutTitle}\r\n {this._renderCartItemCount(this.props)}\r\n {this._renderCartCloseIcon()}\r\n \r\n \r\n {this.props.slots.allowableFreight}\r\n {this.props.data.cart.result?.isEmpty ? this.props.slots.emptyCart : null}\r\n \r\n {renderCartlines(this.props.cartlines, this.props)}\r\n \r\n \r\n \r\n {this.props.slots.promoContentItem}\r\n {renderTotalPrice(this.props)}\r\n

    \r\n {this.props.resources.subTotalMessage}\r\n

    \r\n {this.props.checkoutAsSignInUserButton}\r\n {this.props.checkoutAsGuestButton}\r\n {this.props.data.cart.result?.isEmpty ? null : this.props.goToCartButton}\r\n \r\n {\r\n this.props.data.cart.result?.isEmpty ? \r\n {this.props.resources.continueShoppingButtonTitle}\r\n : null\r\n }\r\n \r\n
    \r\n \r\n \r\n );\r\n }\r\n\r\n /**\r\n * Initiate modal container.\r\n * @returns Inode props.\r\n */\r\n private readonly _modalContainer = (): INodeProps => {\r\n return {\r\n tag: Modal,\r\n placement: 'bottom-end',\r\n hideArrow: true,\r\n className: 'ms-cart-icon__minicartmodal-container',\r\n wrapClassName: 'ms-cart-icon__minicartmodal',\r\n isOpen: this.state.isModalOpen,\r\n toggle: this.closeModal\r\n };\r\n };\r\n\r\n /**\r\n * Initiate open modal.\r\n */\r\n private readonly _openModal = (): void => {\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'cart-icon', '');\r\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'cart-icon');\r\n this.setState({\r\n isModalOpen: true\r\n });\r\n };\r\n\r\n\r\n private readonly _modalErrContainer = (): INodeProps => {\r\n return {\r\n tag: Modal,\r\n placement: 'bottom-end',\r\n hideArrow: true,\r\n className: 'ms-cart-icon__minicarterrmodal-container',\r\n wrapClassName: 'ms-cart-icon__minicarterrmodal',\r\n isOpen: this.state.isErrModalOpen,\r\n toggle: this.closeErrModal\r\n };\r\n };\r\n\r\n private readonly closeErrModal = (): void => {\r\n this.setState({\r\n isErrModalOpen: false\r\n });\r\n\r\n this.isAutoDisplayTriggered = true;\r\n\r\n };\r\n\r\n /**\r\n * Initiate close modal.\r\n */\r\n private readonly closeModal = (): void => {\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n\r\n };\r\n\r\n /**\r\n * Initiate cart close Icon.\r\n * @returns JSX Element.\r\n */\r\n private readonly _renderCartCloseIcon = (): JSX.Element | null => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n /**\r\n * Render Cart Item count.\r\n * @param props - Cart icon view props.\r\n * @returns JSX Element.\r\n */\r\n private readonly _renderCartItemCount = (props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element | null => {\r\n let cartItemCount;\r\n const defaultCartItemCount: number = 0;\r\n const defaultCartItemCountOne: number = 1;\r\n\r\n if (ArrayExtensions.hasElements(props.cartlines)) {\r\n if (props.cartlines.length === defaultCartItemCountOne) {\r\n cartItemCount = `${defaultCartItemCountOne} ${props.resources.item}`;\r\n } else {\r\n cartItemCount = `${props.cartlines.length} ${props.resources.items}`;\r\n }\r\n } else {\r\n cartItemCount = `${defaultCartItemCount} ${props.resources.items}`;\r\n }\r\n return (\r\n \r\n {cartItemCount}\r\n \r\n );\r\n };\r\n\r\n /**\r\n * Handle escape click to close modal.\r\n * @param event - On press of any key.\r\n */\r\n private readonly _escFunction = (event: KeyboardEvent) => {\r\n if (event.keyCode === KeyCodes.Escape && this.state.isModalOpen) {\r\n this.closeModal();\r\n }\r\n };\r\n\r\n}\r\n\r\nexport default CartIconView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IOrderTemplateNameDialogResources, OrderTemplateNameDialog } from '@msdyn365-commerce/components';\r\nimport { IComponentProps } from '@msdyn365-commerce/core';\r\nimport React, { useState } from 'react';\r\n\r\nconst modalCloseButtonReference: React.RefObject = React.createRef();\r\n\r\n/**\r\n * The Create Order Template Button Props.\r\n */\r\nexport interface ICreateOrderTemplateButtonProps extends IComponentProps {\r\n\r\n /**\r\n * The label for create order template.\r\n */\r\n createOrderTemplateText: string;\r\n\r\n /**\r\n * The create order template dialog resources.\r\n */\r\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\r\n\r\n /**\r\n * The delegate to fire when dialog captured any user entry.\r\n */\r\n onOrderTemplateCreated(): Promise;\r\n}\r\n\r\nconst CreateOrderTemplateButton: React.FC = (props) => {\r\n const onCancelHandler = React.useCallback(() => {\r\n return;\r\n }, []);\r\n const [isCreateOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = useState(false);\r\n const onCreateButtonClick = React.useCallback(() => {\r\n setOrderTemplateNameDialogOpen(true);\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n {props.createOrderTemplateText}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateOrderTemplateButton;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport CreateNewTemplateButtonComponent from './components/create-order-template.component';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateListProps, IOrderTemplateListResources } from '../definition-extensions/order-template-list.ext.props.autogenerated';\r\nimport { IOrderTemplateNameDialogResources } from \"@msdyn365-commerce/components\";\r\n\r\n/**\r\n * Interface for OrderTemplateImage.\r\n */\r\ninterface IOrderTemplateImage {\r\n props: {\r\n children: React.ReactElement[];\r\n };\r\n}\r\n\r\n/**\r\n * To render order template.\r\n * @param orderTemplate - The order template view props.\r\n * @param orderTemplateNodeProps - The order template node props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, orderTemplateNodeProps?: INodeProps): JSX.Element | null => {\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\r\n\r\n const orderTemplateImageElement: IOrderTemplateImage = orderTemplateImage as React.ReactElement;\r\n const currentImageListLength = orderTemplateImageElement.props.children.length;\r\n const defaultNumberImagesInTile = 4;\r\n\r\n if (currentImageListLength < defaultNumberImagesInTile) {\r\n for (let index = 0; index < defaultNumberImagesInTile - currentImageListLength; index++) {\r\n orderTemplateImageElement.props.children.push();\r\n }\r\n }\r\n\r\n return (\r\n \r\n {orderTemplateName}\r\n {orderTemplateImage}\r\n {addToCartButton}\r\n {removeButton}\r\n {orderTemplateStatusMessage}\r\n \r\n );\r\n};\r\n\r\nconst _reloadPage = async () => {\r\n window.location.reload();\r\n};\r\n\r\nconst _generateOrderTemplateNameDialogResources = (resources: IOrderTemplateListResources): IOrderTemplateNameDialogResources => {\r\n return {\r\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\r\n orderTemplateDescription: resources.createOrderTemplateDescription,\r\n\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n\r\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\r\n };\r\n}\r\n\r\n/**\r\n * Order Template List View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nexport const OrderTemplateListViewComponent: React.FC> = props => {\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n OrderTemplateList, OrderTemplates, OrderTemplate,\r\n status,\r\n statusMessage,\r\n heading,\r\n orderTemplates,\r\n createOrderTemplateButton,\r\n templateHeaderStatusMessage\r\n } = props;\r\n console.log(createOrderTemplateButton)\r\n return (\r\n \r\n {heading}\r\n {status !== 'SUCCESS' && statusMessage}\r\n {status === 'EMPTY' && (\r\n \r\n )}\r\n \r\n {status === 'SUCCESS' &&\r\n (!OrderTemplates || !orderTemplates ||\r\n !ArrayExtensions.hasElements(orderTemplates)) ? (\r\n
    \r\n

    \r\n {props.resources.headingForEmptyOrderTemplateList}\r\n

    \r\n

    \r\n {props.resources.textForEmptyOrderTemplateList}\r\n

    \r\n {createOrderTemplateButton}\r\n
    \r\n ) : createOrderTemplateButton}\r\n {templateHeaderStatusMessage}\r\n
    \r\n { OrderTemplates && orderTemplates && ArrayExtensions.hasElements(orderTemplates) &&\r\n \r\n {orderTemplates.map((orderTemplate) => {\r\n return renderOrderTemplate(orderTemplate, OrderTemplate);\r\n })}\r\n }\r\n
    \r\n );\r\n};\r\n\r\nexport default OrderTemplateListViewComponent;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICarouselData } from './carousel.data';\nimport { ICarouselProps } from './carousel.props.autogenerated';\nimport { ICarouselState } from './carousel.state';\n\nexport interface ICarouselViewProps extends ICarouselProps<{}>, ICarouselState {\n closeAnimation: string;\n carouselContainer: IModuleProps;\n telemetryContent: ITelemetryContent;\n next(): void;\n previous(): void;\n onIndicatorsClickHandler(): void;\n handleDismissCarousel(): void;\n handleOnExited(): void;\n handleOnExiting(): void;\n}\n\n/**\n *\n * CarouselModule component.\n * @extends {React.PureComponent>}\n */\nclass CarouselModule extends React.PureComponent, ICarouselState> {\n private animating: boolean;\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: ICarouselProps, state: ICarouselState) {\n super(props);\n this.state = { activeIndex: 0, closeNow: false, dismissCarousel: false };\n this.animating = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n if (this.props.context && this.props.context.request && this.props.context.request.cookies) {\n if (this.props.context.request.cookies.get(`CarouselDismiss_${this.props.id}`) === undefined) {\n this.props.context.request.cookies.set(`CarouselDismiss_${this.props.id}`, 'false');\n this.setState({ dismissCarousel: false });\n }\n }\n }\n\n public render(): JSX.Element | null {\n if (this.state.dismissCarousel) {\n return null;\n }\n\n const { className } = this.props.config;\n\n const viewProps = {\n // Context for telemetry and raw data for C1 to do customization\n // Including computed data, state data and methods\n ...this.props,\n ...this.state,\n telemetryContent: this.telemetryContent,\n carouselContainer: {\n moduleProps: this.props,\n className: classnames('ms-carousel', className)\n },\n closeAnimation: this.state.closeNow ? 'close-now' : '',\n next: this._next,\n previous: this._previous,\n onIndicatorsClickHandler: this._goToIndex,\n handleDismissCarousel: this._handleDismissCarousel,\n handleOnExited: this._onExited,\n handleOnExiting: this._onExiting\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Function implementation to dismiss the Carousel.\n */\n private readonly _handleDismissCarousel = (): void => {\n if (this.props.context && this.props.context.request && this.props.context.request.cookies) {\n this.props.context.request.cookies.set(`CarouselDismiss_${this.props.id}`, 'true');\n this.setState({ dismissCarousel: true });\n }\n };\n\n /**\n * Function implementation to move to next slide.\n */\n private readonly _next = (): void => {\n const { slots } = this.props;\n const nextIndex = this.state.activeIndex === (slots && slots.content && slots.content.length - 1) ? 0 : this.state.activeIndex + 1;\n\n if (this.animating) {\n this.setState({ closeNow: true, activeIndex: nextIndex });\n } else {\n this.setState({ activeIndex: nextIndex });\n }\n };\n\n /**\n * Function implementation to move to previous slide.\n */\n private readonly _previous = (): void => {\n const slots = this.props.slots && this.props.slots.content;\n const nextIndex = this.state.activeIndex === 0 ? (slots ? slots.length - 1 : 0) : this.state.activeIndex - 1;\n\n if (this.animating) {\n this.setState({ closeNow: true, activeIndex: nextIndex });\n } else {\n this.setState({ activeIndex: nextIndex });\n }\n };\n\n private readonly _onExiting = (): void => {\n this.animating = true;\n };\n\n private readonly _onExited = (): void => {\n this.animating = false;\n this.setState({ closeNow: false });\n };\n\n /**\n * Function implementation to move to a given slide.\n * @param newIndex\n */\n private readonly _goToIndex = (newIndex: number): void => {\n if (this.animating) {\n return;\n }\n this.setState({ activeIndex: newIndex });\n };\n}\n\nexport default CarouselModule;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Carousel } from '@msdyn365-commerce/components';\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICarouselViewProps } from './carousel';\n\n/**\n * Returns item slots.\n * @returns Array of item slots.\n * @param props -Props.\n */\nconst retrieveItems = (props: ICarouselViewProps): React.ReactNode[] => {\n let items = [];\n items = props.slots && props.slots.content && props.slots.content.length > 0 ? props.slots.content : [];\n return items;\n};\nconst CarouselView: React.FC = props => (\n \n \n \n);\n\nexport default CarouselView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport { ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\nimport {\n AsyncResult,\n CartLine,\n CartLineValidationResults,\n CartLineValidationResultsByLineId,\n CartsDataActions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Validate the cart.\n * @param isQuantityLimitsFeatureEnabled -- Is the quantity limits feature enabled.\n * @param cart -- The cart state to validate.\n * @param telemetry -- The telemetry.\n * @param propsContext -- The props context.\n * @param shouldRetry -- Should retry.\n * @returns A list of line data validation failures.\n */\nexport async function validateCartAsync(\n cart: AsyncResult,\n telemetry: ITelemetry,\n propsContext: ICoreContext,\n shouldRetry: boolean = true\n): Promise {\n let cartResult: ICartState;\n let cartVersion: number | undefined;\n try {\n cartResult = await cart;\n cartVersion = cartResult.cart.Version;\n } catch (error) {\n telemetry.warning(error);\n telemetry.debug('Unable to get cart or cart version.');\n return AsyncResult.resolve();\n }\n\n if (cartVersion) {\n try {\n const validationResult: CartLineValidationResults = await CartsDataActions.validateForCheckoutAsync(\n { callerContext: propsContext.actionContext, bypassCache: 'none' },\n cartResult.cart.Id,\n cartVersion\n );\n\n return await AsyncResult.resolve(validationResult.ValidationResultsByLineId ?? undefined);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- error type is not defined.\n if (shouldRetry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n try {\n await cartResult.refreshCart({});\n } catch (refreshError) {\n telemetry.warning(refreshError);\n telemetry.debug('Unable to refresh Cart');\n return AsyncResult.resolve();\n }\n try {\n await validateCartAsync(cart, telemetry, propsContext, false);\n return AsyncResult.resolve();\n } catch (validateError) {\n telemetry.warning(validateError);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n }\n\n telemetry.warning(error);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n } else {\n telemetry.warning('Cart version not found for Cart validation request.');\n return AsyncResult.resolve();\n }\n}\n\n/**\n * Check if cart line quantity update is success.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function isCartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult.status === 'SUCCESS');\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve(false);\n}\n\n/**\n * Update cart line with cart action result.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function cartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult);\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve();\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Find the product in array of products considering product id.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @returns - The found product.\n */\nexport function getProductByProductId(productId: number | undefined, products?: SimpleProduct[]): SimpleProduct | undefined {\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId;\n });\n }\n\n return undefined;\n}\n\n/**\n * Find the product in array of products considering product id and product behavior's warehouse.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @param warehouseId - Warehouse id of cartLine.\n * @param cartState - The cart start in case cart line has no warehouse.\n * @returns - The found product.\n */\nexport function getProductByProductIdAndWarehouse(\n productId: number | undefined,\n products?: SimpleProduct[],\n warehouseId?: string,\n cartState?: ICartState\n): SimpleProduct | undefined {\n const targetWarehouseValue = warehouseId ?? cartState?.cart.WarehouseId;\n\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId && product.Behavior?.InventoryLocationId === targetWarehouseValue;\n });\n }\n\n return undefined;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent, ICartlineResourceString } from '@msdyn365-commerce/components';\nimport MsDyn365, { ICoreContext, IGridSettings, IImageSettings, ITelemetry, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n OrgUnitLocation,\n ProductAvailableQuantity,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ProductCatalog, ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync, IProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { getProductByProductId, getProductByProductIdAndWarehouse } from '../../../Common/get-product';\n\nexport interface IFlyoutCartLineItemsProps {\n cartlines: CartLine[];\n cartState: ICartState | undefined;\n orgUnitLocations: OrgUnitLocation[] | undefined;\n resources: ICartlineResourceString;\n productAvailabilites: IProductInventoryInformation[] | undefined;\n products: SimpleProduct[] | undefined;\n productDeliveryOptions: ProductDeliveryOptions[] | undefined;\n pickupDeliveryModeCode?: string;\n catalogs?: ProductCatalog[];\n\n /**\n * GridSettings for the product image in cartline\n */\n gridSettings: IGridSettings;\n\n /**\n * ImageSettings for the product image in cartline\n */\n imageSettings: IImageSettings;\n id: string;\n typeName: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n removeButtonText: string;\n outOfStockText: string;\n outOfRangeOneText: string;\n outOfRangeFormatText: string;\n maxCartlineQuantity: number;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n isQuantityLimitsFeatureEnabled: boolean;\n\n outOfStockThreshold: number;\n isStockCheckEnabled: boolean;\n telemetryContent?: ITelemetryContent;\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\nexport interface IFlyoutCartLineItemViewProps {\n cartline: React.ReactNode;\n remove: React.ReactNode;\n storeLocation: React.ReactNode;\n hasError: boolean;\n\n data: {\n product: SimpleProduct;\n cartline: CartLine;\n };\n}\n\nconst _getCartItemAvailableQuantity = (\n isStockCheckEnabled: boolean,\n outOfStockThreshold: number,\n productAvailability?: ProductAvailableQuantity\n): number => {\n if (isStockCheckEnabled) {\n if (\n !productAvailability ||\n !productAvailability.AvailableQuantity ||\n productAvailability.AvailableQuantity <= 0 ||\n productAvailability.AvailableQuantity <= outOfStockThreshold\n ) {\n return 0;\n }\n return productAvailability.AvailableQuantity - outOfStockThreshold;\n }\n\n return 0;\n};\n\nconst _getCartItemMaxQuantity = (\n maxQuantityByConfig: number,\n isStockCheckEnabled: boolean,\n availableQuantityInStock: number,\n isQuantityLimitsFeatureEnabled: boolean,\n maxByQuantityLimitsFeature: number\n) => {\n if (isQuantityLimitsFeatureEnabled) {\n let maxByQuantityLimitsFeatureResult = maxByQuantityLimitsFeature;\n\n // If max by feature in not defined when feature is on then we suggest that there is no max by feature\n // and consider available qty if stock check enabled and max from config in site settings.\n if (!maxByQuantityLimitsFeature) {\n maxByQuantityLimitsFeatureResult = maxQuantityByConfig || 10;\n }\n\n return isStockCheckEnabled\n ? maxByQuantityLimitsFeatureResult < availableQuantityInStock\n ? maxByQuantityLimitsFeatureResult\n : availableQuantityInStock\n : maxByQuantityLimitsFeatureResult;\n }\n if (isStockCheckEnabled) {\n return availableQuantityInStock < maxQuantityByConfig ? availableQuantityInStock : maxQuantityByConfig;\n }\n return maxQuantityByConfig;\n};\n\n/**\n * On Remove Click functionality.\n * @param removeItemClickHandler -Remove item click function.\n * @param cartline -CartLine.\n * @returns Remove change value.\n */\nconst onRemoveClickFunction = (removeItemClickHandler: (cartlineToRemove: CartLine) => void, cartline: CartLine) => () => {\n removeItemClickHandler(cartline);\n};\nconst _assembleNode = (\n cartline: CartLine,\n product: SimpleProduct,\n props: IFlyoutCartLineItemsProps,\n index: number,\n foundProductAvailability?: ProductAvailableQuantity,\n foundProductDeliveryOptions?: ProductDeliveryOptions\n): IFlyoutCartLineItemViewProps => {\n const { imageSettings, gridSettings, id, typeName, context, resources, removeButtonText, removeItemClickHandler } = props;\n\n const availableQuantityInStock = _getCartItemAvailableQuantity(\n props.isStockCheckEnabled,\n props.outOfStockThreshold,\n foundProductAvailability\n );\n const maxQuantity =\n product &&\n _getCartItemMaxQuantity(\n props.maxCartlineQuantity,\n props.isStockCheckEnabled,\n availableQuantityInStock,\n props.isQuantityLimitsFeatureEnabled,\n product?.Behavior?.MaximumQuantity || 0\n );\n\n // Check if the product is service or not by product type\n const isServiceItem = product.ItemTypeValue === ReleasedProductType.Service;\n\n const onRemoveClickHandler = onRemoveClickFunction(removeItemClickHandler, cartline);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.RemoveCartItem);\n const removeCartItemAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n let productUrl = getProductUrlSync(product, props.context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(props.context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartline.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n\n return {\n data: {\n product,\n cartline\n },\n hasError: !isServiceItem && props.isStockCheckEnabled ? cartline.Quantity! > maxQuantity : false,\n cartline: (\n \n ),\n remove: (\n \n {removeButtonText}\n \n ),\n storeLocation: _renderStoreLocation(cartline, props)\n };\n};\n\nconst _renderDeliveryLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): string | undefined => {\n let deliverylocation;\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartLine.ProductId;\n });\n }\n const delivery = foundProductDeliveryOption?.DeliveryOptions?.find(option => option.Code === cartLine.DeliveryMode);\n const location = delivery?.Description;\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n if (location) {\n deliverylocation = `${location}, ${orgUnitName}`;\n } else {\n deliverylocation = `${orgUnitName}`;\n }\n } else {\n deliverylocation = props.resources.shippingText;\n }\n return deliverylocation;\n};\n\nconst _renderStoreLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): JSX.Element | null => {\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n if (orgUnitName) {\n return (\n
    \n {orgUnitName}\n
    \n );\n }\n }\n\n return null;\n};\n\nconst _getOrgUnitName = (fulfillmentStoreId: string | undefined, orgUnitLocations: OrgUnitLocation[] | undefined) => {\n if (!orgUnitLocations || !fulfillmentStoreId || orgUnitLocations.length === 0) {\n return '';\n }\n\n const foundLocation = orgUnitLocations.find(orgUnitLocation => {\n return orgUnitLocation.OrgUnitNumber === fulfillmentStoreId;\n });\n\n if (foundLocation) {\n return foundLocation.OrgUnitName;\n }\n return fulfillmentStoreId;\n};\n\nconst _assembleCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: IFlyoutCartLineItemsProps\n): IFlyoutCartLineItemViewProps[] | null => {\n const reactNodes: IFlyoutCartLineItemViewProps[] = [];\n\n if (!products || products.length === 0) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n\n cartlines.map((cartline, index) => {\n let product;\n if (props.isQuantityLimitsFeatureEnabled) {\n // When feature is enabled the same products could have different quantity limits in Behavior so we need\n // to check productId and WarehouseId for identification.\n product = getProductByProductIdAndWarehouse(cartline.ProductId, products, cartline.WarehouseId, props.cartState);\n } else {\n product = getProductByProductId(cartline.ProductId, products);\n }\n let foundProductAvailability;\n if (props.productAvailabilites && props.productAvailabilites.length > 0) {\n foundProductAvailability = props.productAvailabilites.find(productAvailability => {\n return productAvailability.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n }\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartline.ProductId;\n });\n }\n if (product) {\n reactNodes.push(\n _assembleNode(\n cartline,\n product,\n props,\n index,\n foundProductAvailability?.ProductAvailableQuantity,\n foundProductDeliveryOption\n )\n );\n }\n });\n\n return reactNodes;\n};\n\n/**\n * CartLineItems component.\n */\n\nexport const FlyoutCartLineItems = (props: IFlyoutCartLineItemsProps) => {\n const { products, cartlines } = props;\n return _assembleCartlines(cartlines, products, props);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ProductDeliveryOptions, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ActiveCartProductsInput,\n getActiveCartProductsAction,\n getAvailabilitiesForCartLineItems,\n getDeliveryOptionsForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n ProductDeliveryOptionsForCartLineItems\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * IMiniCartData entity interface.\n */\nexport interface IMiniCartData {\n products?: SimpleProduct[];\n productAvailabilites?: IProductInventoryInformation[];\n deliveryOptions?: ProductDeliveryOptions[];\n}\n\nexport const createInput = () => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a mini cart data.\n * @param ctx\n * @param cartState\n */\nexport async function getMiniCartData(ctx: IActionContext, cartState: ICartState): Promise {\n const miniCartData: IMiniCartData = {};\n\n const cart = cartState.cart;\n\n // If there are cart lines, make call to get products\n // If there are invocie linese, then there is no products, so don't make call to get products\n if (cart && cart.CartLines && cart.CartLines.length > 0 && !cartState.hasInvoiceLine) {\n await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx)\n .then(products => {\n if (products) {\n miniCartData.products = products;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getAvailabilitiesForCartLineItems(new ProductAvailabilitiesForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(availableQuantity => {\n if (availableQuantity) {\n miniCartData.productAvailabilites = availableQuantity;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getDeliveryOptionsForCartLineItems(new ProductDeliveryOptionsForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(deliveryOptions => {\n if (deliveryOptions) {\n miniCartData.deliveryOptions = deliveryOptions;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n }\n\n return miniCartData;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToCartBehavior, CartIconComponent } from '@msdyn365-commerce/components';\nimport { getUrlSync, IDictionary, IImageSettings, msdyn365Commerce, TelemetryEvent } from '@msdyn365-commerce/core';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n CartLineValidationResultsByLineId,\n OrgUnitLocation\n} from '@msdyn365-commerce/retail-proxy';\nimport { validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\nimport { ArrayExtensions, validateCartLinesInventory } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n UncontrolledTooltip,\n updateMaxQuantityForCartLineItem,\n urlCheck\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport React from 'react';\n\nimport { ICartIconData } from './cart-icon.data';\nimport { cartLinesSortOrder, ICartIconProps } from './cart-icon.props.autogenerated';\nimport { FlyoutCartLineItems, IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\nimport { getMiniCartData, IMiniCartData } from './utils/get-products-in-mini-cart';\n\nexport interface IMiniCartState {\n miniCartData: IMiniCartData;\n orgUnitLocations?: OrgUnitLocation[];\n isQuantityLimitsFeatureEnabled: boolean;\n isCartValid: boolean;\n}\n\nexport interface ICartIconViewProps extends ICartIconProps {\n className: string;\n cartIcon: React.ReactNode;\n FlyoutContainer?: INodeProps;\n CartlinesWrapper: INodeProps;\n miniCartWrapper: INodeProps;\n miniCartItemWrapper: INodeProps;\n cartlines?: IFlyoutCartLineItemViewProps[];\n flyoutTitle: React.ReactNode;\n totalPrice: React.ReactNode;\n checkoutAsGuestButton?: React.ReactNode;\n checkoutAsSignInUserButton?: React.ReactNode;\n goToCartButton?: React.ReactNode;\n waitingComponent?: React.ReactNode;\n isCartLoading: boolean;\n checkoutBlockedDueToUnavailableFunds?: React.ReactNode;\n\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\n/**\n *\n * Cart component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass CartIcon extends React.Component, IMiniCartState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutBySignInAttributes: IDictionary | undefined;\n\n private readonly checkoutByGuestAttributes: IDictionary | undefined;\n\n private readonly viewShoppingBagAttributes: IDictionary | undefined;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private lastValidatedCartVersion: number | undefined;\n\n constructor(props: ICartIconProps) {\n super(props);\n this.state = {\n miniCartData: {},\n isCartValid: true,\n isQuantityLimitsFeatureEnabled: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payload = getPayloadObject(TelemetryEvent.CheckOut, this.telemetryContent, TelemetryConstant.Checkout);\n this.checkoutBySignInAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.GuestCheckout;\n this.checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.ViewShoppingBag;\n this.viewShoppingBagAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n }\n\n public async componentDidMount(): Promise {\n const context = this.props.context.actionContext;\n\n reaction(\n () => this.props.data.cart.result?.cart.CartLines,\n async () => {\n this.setState({\n miniCartData: await getMiniCartData(context, this.props.data.cart.result!)\n });\n }\n );\n await this._setQuantityLimitsFeatureFlag();\n\n this.setState({\n orgUnitLocations: this.props.data.orgUnitLocations?.result\n });\n\n this._validateCart();\n }\n\n public componentDidUpdate(prevProps: ICartIconProps): void {\n this._validateCart();\n }\n\n public shouldComponentUpdate(nextProps: ICartIconProps, nextState: IMiniCartState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n config: { enableHoverCart, isAnonymousCheckout },\n context: {\n request: {\n user: { isAuthenticated, signInUrl }\n }\n },\n context,\n resources\n } = this.props;\n\n const cart = (this.props.data.cart && this.props.data.cart.result) || undefined;\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n const checkoutURL = this._getCheckoutURL(isAuthenticated, guestCheckoutUrl, signInUrl || '');\n const isCartEmpty = cart && cart.cart.CartLines && cart.cart.CartLines.length === 0;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\n const shouldShowMiniCart =\n cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\n const hasInvoiceLine = cart?.hasInvoiceLine;\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n const cartLines = this._getCartLines();\n const validInventoryAcrossCartLines = validateCartLinesInventory(\n cart?.cart.CartLines ?? [],\n this.state.miniCartData.productAvailabilites ?? [],\n this.props.context.actionContext,\n this.state.miniCartData.products ?? [],\n emailDeliveryModeCode\n );\n const hasError =\n !validInventoryAcrossCartLines?.isValid ||\n (!validInventoryAcrossCartLines && !this.state.isCartValid) ||\n (cartLines ? cartLines.some(cartline => cartline.hasError) : false);\n const includeFlyout = this.props.data.cart && this.props.data.cart.status === 'SUCCESS' && enableHoverCart;\n const totalItemsInCart = cart?.totalItemsInCart ? cart.totalItemsInCart : 0;\n const goToCartButtonText = resources.goToCartButtonTitle.replace('{count}', totalItemsInCart.toString());\n const flyoutTitle = resources.flyoutTitle;\n const flyoutTooltip = {\n tag: UncontrolledTooltip,\n shouldShowMiniCart,\n placement: 'bottom-end',\n hideArrow: true,\n className: 'ms-cart-icon__flyout-container',\n trigger: 'hover',\n displayMode: 'FLYOUT',\n target: id,\n shouldShowCloseButton: true,\n cartPageUrl: cartUrl,\n hideAriaHidden: true\n };\n\n // If there are invoice lines, don't update mini cart price\n const price = (cart && !cart.hasInvoiceLine && cart.cart.TotalAmount) || undefined;\n const priceString = price\n ? resources.totalPriceFormatString.replace('{price}', context.cultureFormatter.formatCurrency(price))\n : '';\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n const viewProps = {\n ...this.props,\n cartIcon: (\n \n ),\n cartlines: cartLines,\n FlyoutContainer: includeFlyout ? flyoutTooltip : undefined,\n CartlinesWrapper: {\n className: 'ms-cart-icon__cart-lines'\n },\n miniCartWrapper: {\n className: classnames('ms-cart-icon'),\n id: this.props.id\n },\n miniCartItemWrapper: {\n className: classnames('msc-cart-lines-item')\n },\n\n // If there are invoice lines, don't update mini cart checkout button\n // Checkout button will display by default to maintain backward compatibility. When Anonymous user checkout is enabled &&\n // user is authenticated then we will show the checkout button otherwise we will show the guest checkout button.\n checkoutAsSignInUserButton:\n !isCartEmpty && !hasInvoiceLine && (!isAnonymousCheckout || isAuthenticated) ? (\n \n {resources.checkoutButtonTitle}\n \n ) : null,\n checkoutAsGuestButton:\n isAnonymousCheckout && !isCartEmpty && !isAuthenticated ? (\n \n {resources.guestCheckoutButtonTitle}\n \n ) : null,\n goToCartButton: (\n \n {goToCartButtonText}\n \n ),\n checkoutBlockedDueToUnavailableFunds: null,\n flyoutTitle: {flyoutTitle},\n totalPrice:
    {priceString}
    \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _validateCart(): void {\n const {\n data: { cart }\n } = this.props;\n const cartVersion = cart.result?.cart?.Version ?? undefined;\n if (this.lastValidatedCartVersion === cartVersion) {\n return;\n }\n\n this.lastValidatedCartVersion = cartVersion; // This field is populated to block concurrent requests\n\n if (this.state.isQuantityLimitsFeatureEnabled) {\n validateCartAsync(cart, this.props.telemetry, this.props.context)\n .then((result: CartLineValidationResultsByLineId | undefined) => {\n this.setState({ isCartValid: !ArrayExtensions.hasElements(result?.ValidationResultsPairs) });\n })\n .catch(() => {\n this.setState({ isCartValid: false });\n });\n } else {\n this.setState({ isCartValid: true });\n }\n }\n\n private _getCheckoutURL(isAuthenticated: boolean, guestCheckoutUrl: string, signInUrl: string): string {\n if (isAuthenticated) {\n return guestCheckoutUrl;\n }\n\n const isAbsoluteUrl = urlCheck(guestCheckoutUrl);\n let returnURL = guestCheckoutUrl;\n if (msdyn365Commerce.isBrowser && !isAbsoluteUrl) {\n returnURL = `${window.location.origin}${guestCheckoutUrl}`;\n }\n\n return `${signInUrl}${!signInUrl.includes('?') ? '?' : '&'}ru=${returnURL}`;\n }\n\n /**\n * Sort cartline items.\n * @param cartlines - Cartlines to be sorted.\n * @param sortOrder - Ascending or descending.\n * @returns - Sorted cartlines.\n */\n private readonly getSortedCartLines = (cartlines: CartLine[], sortOrder?: cartLinesSortOrder): CartLine[] => {\n const lines: CartLine[] = [...cartlines];\n const zero: number = 0;\n\n if (sortOrder === cartLinesSortOrder.descending) {\n return lines.sort((item1, item2) => (item2.LineNumber ?? zero) - (item1.LineNumber ?? zero));\n }\n return lines.sort((item1, item2) => (item1.LineNumber ?? zero) - (item2.LineNumber ?? zero));\n };\n\n private _getCartLines(): IFlyoutCartLineItemViewProps[] | null {\n const {\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources\n } = this.props;\n\n const imageSettings = this._getImageSettings(config.imageSettings);\n const cart = this.props.data.cart && this.props.data.cart.result;\n\n // Cart-icon could be placed in each page\n // so we check cart content to reduce number of RS calls\n return this.state.miniCartData.products && cart && cart.cart.CartLines && cart.cart.CartLines.length > 0\n ? FlyoutCartLineItems({\n cartlines: this.getSortedCartLines(cart.cart.CartLines, config.cartLinesSortOrder),\n products: this.state.miniCartData.products,\n productAvailabilites: this.state.miniCartData.productAvailabilites,\n productDeliveryOptions: this.state.miniCartData.deliveryOptions,\n imageSettings,\n outOfStockThreshold: this.props.context.app.config.outOfStockThreshold || 0,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n maxCartlineQuantity: updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem),\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\n typeName: this.props.typeName,\n id: this.props.id,\n resources: {\n sizeString: resources.productDimensionTypeSize,\n colorString: resources.productDimensionTypeColor,\n configString: resources.productDimensionTypeConfiguration,\n styleString: resources.productDimensionTypeStyle,\n quantityDisplayString: resources.quantityDisplayText,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n inputQuantityAriaLabel: '', // Not used\n discountStringText: '', // Not used\n originalPriceText: '',\n currentPriceText: '',\n shippingChargesText: '',\n shippingText: resources.shippingText\n },\n telemetry,\n removeButtonText: resources.removeCartButtonText,\n outOfStockText: '', // Not used\n outOfRangeOneText: '', // Not used\n outOfRangeFormatText: '', // Not used\n cartState: cart,\n orgUnitLocations: this.state.orgUnitLocations,\n removeItemClickHandler: this._removeItemFromCartHandler,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n telemetryContent: this.telemetryContent,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined,\n isQuantityLimitsFeatureEnabled: this.state.isQuantityLimitsFeatureEnabled,\n catalogs: this.props.data.catalogs?.result\n })\n : null;\n }\n\n private readonly _getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n\n private readonly _removeItemFromCartHandler = (cartlineToRemove: CartLine) => {\n if (this.props.data.cart.result) {\n const input = {\n cartLineIds: [cartlineToRemove.LineId!.toString()]\n };\n this.props.data.cart.result.removeCartLines(input).catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to Remove Cart Line');\n });\n }\n };\n\n private async _setQuantityLimitsFeatureFlag(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isChannelQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled || false;\n if (isChannelQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n return;\n }\n\n const useSiteBuilderSettings = featureStatuses?.find(\n featureState => featureState.Name === 'RevertToSiteBuilderOrderQuantityLimitsSettings'\n )?.IsEnabled;\n\n if (useSiteBuilderSettings) {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n if (!defaultOrderQuantityLimitsFeatureConfig || defaultOrderQuantityLimitsFeatureConfig === 'none') {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n\n try {\n const featureStatuses = await this.props.data.featureState;\n const isQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n if (!isQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n } catch (error) {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get feature states');\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n } else {\n this.props.data.customerInformation\n .then(customerInfo => {\n const result =\n !!customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b));\n this.setState({ isQuantityLimitsFeatureEnabled: result });\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get customer info');\n });\n }\n } else {\n const cartConfiguration = await this.props.data.cartConfiguration;\n this.setState({ isQuantityLimitsFeatureEnabled: !(cartConfiguration?.IgnoreOrderSettings ?? false) });\n return;\n }\n }\n}\n\nexport default CartIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartIconViewProps } from './cart-icon';\nimport { IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\n\nconst _renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\n if (!cartLines) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n return cartLines.map((cartLine, index) => {\n return (\n \n {cartLine.cartline}\n {cartLine.storeLocation}\n {cartLine.remove}\n \n );\n });\n};\n\nconst CartIconView: React.FC = (props: ICartIconViewProps) => (\n \n {props.cartIcon}\n {props.FlyoutContainer ? (\n \n {props.flyoutTitle}\n {props.checkoutBlockedDueToUnavailableFunds}\n {_renderCartlines(props.cartlines, props)}\n {props.totalPrice}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.goToCartButton}\n \n ) : (\n false\n )}\n \n);\n\nexport default CartIconView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLinePriceEditor, ICartLinePriceEditorResources, PriceComponent } from '@msdyn365-commerce/components';\nimport MsDyn365, { IComponentProps, IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ChannelDeliveryOptionConfiguration, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { CartLine, ProductCatalog, SalesLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions, getFallbackImageUrl, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, IncrementalQuantity, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\n/**\n * ICartlineResourceString: Interface for specifying the\n * resource strings that the component needs.\n */\nexport interface ICartlineResourceString {\n /**\n * Display string for discount label\n */\n discountStringText: string;\n\n /**\n * String for size key\n */\n sizeString: string;\n\n /**\n * String for color key\n */\n colorString: string;\n\n /**\n * String associated with the configuration product dimension\n */\n configString: string;\n\n /**\n * String for style key\n */\n styleString: string;\n\n /**\n * String for amount key\n */\n amountString?: string;\n\n /**\n * Display string for quantity label\n */\n quantityDisplayString: string;\n\n /**\n * Display string for quantity label\n */\n inputQuantityAriaLabel: string;\n\n /**\n * Aria label for the decrement button in quantity component\n */\n decrementButtonAriaLabel: string;\n\n /**\n * Aria label for the increment button in quantity component\n */\n incrementButtonAriaLabel: string;\n\n /**\n * Original text screenreader\n */\n originalPriceText: string;\n\n /**\n * Current text screenreader\n */\n currentPriceText: string;\n\n /**\n * Shipping Charges Text\n */\n shippingChargesText: string;\n\n priceEditorResources?: ICartLinePriceEditorResources;\n salesAgreementPricePrompt?: string;\n}\n\ninterface ICartLineData {\n cartLine: CartLine | SalesLine;\n cartState?: ICartState;\n product?: SimpleProduct;\n catalogs?: ProductCatalog[];\n}\n\n/**\n * ICartLineProps: The props required to render cartLineitem.\n */\nexport interface ICartLineProps extends IComponentProps {\n /**\n * The flag to change the quantity component from intractable to static.\n */\n disableQuantityInteractivity?: boolean;\n\n /**\n * The primary image url.\n */\n primaryImageUrl?: string;\n\n /**\n * The product url.\n */\n productUrl?: string;\n\n /**\n * GridSettings for the product image in cartLine.\n */\n gridSettings: IGridSettings;\n\n /**\n * ImageSettings for the product image in cartLine.\n */\n imageSettings: IImageSettings;\n\n /**\n * Boolean flag to indicate if the item is out of stock.\n */\n isOutOfStock?: boolean;\n\n /**\n * Flag to make quantity section editable.\n */\n isQuantityEditable?: boolean;\n\n /**\n * Max quantity for line item.\n */\n maxQuantity?: number;\n\n /**\n * Current quantity for line item.\n */\n currentQuantity?: number;\n\n /**\n * Resource string for the component.\n */\n resources: ICartlineResourceString;\n\n /**\n * SalesLine flag.\n */\n isSalesLine?: boolean;\n\n /**\n * Error message to show in place of quantity.\n */\n errorMessage?: string;\n\n /**\n * Inventory information label.\n */\n inventoryInformationLabel?: string;\n\n /**\n * Inventory information class name.\n */\n inventoryLabelClassName?: string;\n\n /**\n * Flag to show/hide shipping charges for line items.\n */\n showShippingChargesForLineItems?: boolean;\n\n /**\n * Boolean flag to indicate if cart state status is ready.\n */\n isCartStateReady?: boolean;\n\n /**\n * Chanel Delivery Option configuration is from api.\n */\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n\n /**\n * The cart line index.\n */\n lineIndex?: number;\n\n /**\n * Quantity onChange callback.\n */\n quantityOnChange?(cartLine: CartLine, newQuantity: number, lineIndex?: number): boolean;\n priceCurrency?: string;\n}\n\ninterface IDimensionStrings {\n /**\n * String for size key.\n */\n sizeString: string;\n\n /**\n * String for color key.\n */\n colorString: string;\n\n /**\n * String associated with the configuration product dimension.\n */\n configString: string;\n\n /**\n * String for style key.\n */\n styleString: string;\n\n /**\n * String for amount key.\n */\n amountString?: string;\n}\n\n/**\n * Renders catalog label for the cart line.\n * @param props - Cart line props.\n * @returns Catalog label.\n */\nconst CatalogLabelComponent: React.FC = (props: ICartLineProps) => {\n const catalogId = props.data.cartLine.CatalogId;\n validateCatalogId(catalogId);\n\n if (!props.context.request.user.isB2b || !catalogId || !ArrayExtensions.hasElements(props.data.catalogs)) {\n return null;\n }\n\n const catalog = props.data.catalogs.find(item => item.RecordId === catalogId);\n\n if (!catalog || !catalog.Name) {\n return null;\n }\n\n return
    {catalog.Name}
    ;\n};\n\nconst CartLineItemFunctions = {\n renderProductDimensions: (Product: SimpleProduct, DimensionStrings: IDimensionStrings) => {\n if (!Product || !Product.Dimensions) {\n return [];\n }\n\n return Product.Dimensions.map(productDimension => {\n if (productDimension.DimensionTypeValue === 1) {\n return (\n
    \n \n {DimensionStrings.colorString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
    \n );\n }\n\n if (productDimension.DimensionTypeValue === 2) {\n return (\n
    \n \n {DimensionStrings.configString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
    \n );\n }\n\n if (productDimension.DimensionTypeValue === 3) {\n return (\n
    \n \n {DimensionStrings.sizeString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
    \n );\n }\n\n if (productDimension.DimensionTypeValue === 4) {\n return (\n
    \n \n {Product.IsGiftCard ? DimensionStrings.amountString : DimensionStrings.styleString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
    \n );\n }\n return null;\n });\n },\n\n renderDiscountLines: (props: ICartLineProps) => {\n if (!props.data.cartLine.DiscountLines || props.data.cartLine.DiscountLines.length === 0) {\n return null;\n }\n\n return props.data.cartLine.DiscountLines.map((discountLine, index) => {\n return (\n
    \n \n {discountLine.OfferName ? discountLine.OfferName : ''}:{` ${props.resources.discountStringText || 'Discount'} `}\n \n \n \n \n {` (${discountLine.EffectivePercentage !== undefined ? discountLine.EffectivePercentage : ''}%)`}\n
    \n );\n });\n },\n renderInventoryLabel: (props: ICartLineProps) => {\n if (!props.inventoryInformationLabel) {\n return null;\n }\n const inventoryCssName = props.inventoryLabelClassName\n ? `msc-cart-line__product-inventory-label ${props.inventoryLabelClassName}`\n : 'msc-cart-line__product-inventory-label';\n return {props.inventoryInformationLabel};\n },\n\n /**\n * Gets the react node for product unit of measure display.\n * @param props - Icartline props.\n * @returns The node representing markup for unit of measure component.\n */\n renderUnitOfMeasure: (props: ICartLineProps) => {\n if (props.data.cartLine.IsInvoiceLine) {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Do not need type check for appsettings\n if (!props.context.app.config.unitOfMeasureDisplayType || props.context.app.config.unitOfMeasureDisplayType === 'none') {\n return undefined;\n }\n\n const product = props.data.product;\n if (!product || !product.DefaultUnitOfMeasure) {\n return undefined;\n }\n\n return (\n
    \n {product.DefaultUnitOfMeasure}\n
    \n );\n },\n renderShippingLabel: (props: ICartLineProps) => {\n const pickupDeliveryModeCode = props.context.request.channel?.PickupDeliveryModeCode;\n const channelDeliveryOptionConfig = props.channelDeliveryOptionConfig;\n const cartline = props.data.cartLine;\n let hasShippingMethod = false;\n if (channelDeliveryOptionConfig !== undefined) {\n hasShippingMethod = !!(\n cartline.DeliveryMode &&\n channelDeliveryOptionConfig.PickupDeliveryModeCodes?.some(deliveryMode => deliveryMode !== cartline.DeliveryMode)\n );\n } else {\n hasShippingMethod = !!(cartline.DeliveryMode && cartline.DeliveryMode !== pickupDeliveryModeCode);\n }\n if (!hasShippingMethod) {\n return undefined;\n }\n\n const shippingChargeLines = (cartline.ChargeLines || []).filter(chargeLine => chargeLine.IsShipping);\n\n if (shippingChargeLines.length === 0) {\n return undefined;\n }\n\n const freightFee = shippingChargeLines.reduce((chargeTotal, chargeLine) => {\n return chargeTotal + (chargeLine.CalculatedAmount || 0);\n }, 0);\n\n const priceComponent = (\n \n );\n return (\n <>\n \n {priceComponent}\n \n );\n },\n renderOtherCharges: (props: ICartLineProps) => {\n const cartline = props.data.cartLine;\n const otherCharges = cartline.ChargeLines?.filter(chargeline => !chargeline.IsShipping);\n\n return (\n (otherCharges &&\n otherCharges.map((otherCharge, key) => {\n return otherCharge && otherCharge.CalculatedAmount ? (\n
    \n \n \n \n \n
    \n ) : (\n ''\n );\n })) ||\n undefined\n );\n },\n\n /**\n * Render the sales agreement prompt.\n * @param props - The ICartLineProps.\n * @returns The JSX.Element.\n */\n renderSalesAgreementPrompt: (props: ICartLineProps): JSX.Element | null => {\n if (props.data.cartLine.SalesAgreementLineRecordId === 0) {\n return null;\n }\n return
    {props.resources.salesAgreementPricePrompt}
    ;\n }\n};\n\n// eslint-disable-next-line no-redeclare\nconst CartLine: React.FC = (props: ICartLineProps) => {\n const { isSalesLine, productUrl, resources } = props;\n const { product, cartLine } = props.data;\n\n const destructDimensionStrings = {\n sizeString: resources.sizeString,\n colorString: resources.colorString,\n styleString: resources.styleString,\n configString: resources.configString,\n amountString: resources.amountString\n };\n\n const fallbackImageUrl =\n product &&\n getFallbackImageUrl(\n product.ItemId,\n props.context.actionContext.requestContext.apiSettings,\n props.context.request.app?.config?.OmniChannelMedia\n );\n const productDimensions = product && CartLineItemFunctions.renderProductDimensions(product, destructDimensionStrings);\n const imageSettings = props.imageSettings;\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n const renderDisountLines = CartLineItemFunctions.renderDiscountLines(props);\n const renderInventoryLabel = CartLineItemFunctions.renderInventoryLabel(props);\n const renderUnitOfMeasure = CartLineItemFunctions.renderUnitOfMeasure(props);\n const renderShippingLabel = CartLineItemFunctions.renderShippingLabel(props);\n const renderOtherCharges = CartLineItemFunctions.renderOtherCharges(props);\n const renderSalesAgreementPrompt = CartLineItemFunctions.renderSalesAgreementPrompt(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, '', product?.RecordId.toString());\n const productAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const productName = product?.Name || cartLine.Description;\n const imgeClassName = props.data.cartLine.IsInvoiceLine ? 'msc-cart-line__invoice-image' : 'msc-cart-line__product-image';\n\n const onChange = (newValue: number): boolean => {\n if (props.quantityOnChange) {\n return props.quantityOnChange(props.data.cartLine, newValue, props.lineIndex);\n }\n return true;\n };\n\n const _generateErrorMessage = (): JSX.Element | null => {\n if (props.errorMessage) {\n return (\n
    \n \n {props.errorMessage}\n
    \n );\n }\n\n return null;\n };\n\n const _generateQuantityandPrice = (): JSX.Element[] | null => {\n const nodes = [];\n if (props.isOutOfStock) {\n return null;\n }\n\n // No quantity selector for invoice line\n if (!props.data.cartLine.IsInvoiceLine) {\n if (props.data.product && props.isQuantityEditable) {\n nodes.push(\n
    \n
    {resources.quantityDisplayString}
    \n \n
    \n );\n } else {\n nodes.push(\n
    \n \n {props.data.cartLine.Quantity}\n
    \n );\n }\n }\n\n nodes.push(\n
    \n \n {(props.data.cartLine.DiscountAmount && props.data.cartLine.DiscountAmount > 0 && (\n <>\n \n {` ${props.resources.discountStringText || 'Discount'} `}\n \n \n \n )) ||\n null}\n
    \n );\n\n return nodes;\n };\n\n return (\n <>\n
    \n
    \n \n
    \n
    \n
    \n \n {MsDyn365.isBrowser ? (\n \n {productName}\n \n ) : null}\n {ArrayExtensions.hasElements(productDimensions) ? (\n
    {productDimensions}
    \n ) : (\n ''\n )}\n {renderUnitOfMeasure}\n
    \n \n
    \n {renderDisountLines}\n {renderInventoryLabel}\n {props.showShippingChargesForLineItems &&
    {renderShippingLabel}
    }\n {renderOtherCharges}\n {renderSalesAgreementPrompt}\n
    \n {_generateQuantityandPrice()}\n {props.data.cartLine.IsInvoiceLine && props.data.cartState && props.resources.priceEditorResources && (\n \n )}\n
    \n
    \n {_generateErrorMessage()}\n \n );\n};\n\nexport default CartLine;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddOrderTemplateToCartComponent, ILinesAddedToCartDialogResources } from '@msdyn365-commerce/components';\nimport { getUrlSync, ICoreContext, IImageSettings, Image, ITelemetry } from '@msdyn365-commerce/core';\nimport { ProductList, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n getFallbackImageUrl,\n getProductUrlSync,\n OrderTemplate,\n OrderTemplateLine,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateActionMessageState } from '../order-template-list';\n\nexport interface ISingleOrderTemplateProps extends ProductList {\n orderTemplateState: IOrderTemplateActionMessageState;\n name?: string;\n orderTemplate: OrderTemplate;\n context: ICoreContext;\n imageSettings?: IImageSettings;\n enableImageProductLink?: boolean;\n removeFromOrderTemplateListText: string;\n addToBagText: string;\n index: number;\n itemKey: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n handlers: {\n onRemoveOrderTemplate(id: string): void | undefined;\n onDismiss(): void;\n };\n resources: {\n closeWindowButtonText: string;\n addToCartFailureMessage: string;\n addToCartSuccessMessage: string;\n addToCartProcessMessage: string;\n orderTemplateErrorMessage: string;\n linesAddedToCartDialogResources: ILinesAddedToCartDialogResources;\n };\n telemetryContent?: ITelemetryContent;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n}\n\nexport interface ISingleOrderTemplateViewProps {\n key: string;\n orderTemplateImage: React.ReactNode;\n addToCartButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n orderTemplateStatusMessage?: React.ReactNode;\n orderTemplateName?: React.ReactNode;\n orderTemplateAriaLabel?: string;\n orderTemplateHeaderDivider?: React.ReactNode;\n}\n\nconst _removeItemFromOrderTemplateList = (props: ISingleOrderTemplateProps): void => {\n const { onRemoveOrderTemplate } = props.handlers;\n const { itemKey } = props;\n\n onRemoveOrderTemplate && itemKey && onRemoveOrderTemplate(itemKey);\n};\n\nconst OrderTemplateActions = {\n removeOrderTemplate: _removeItemFromOrderTemplateList\n};\n\n/**\n * Remove order template action.\n * @param input -Single order template props.\n * @returns Set remove order template.\n */\nconst removeOrderTemplateActionHandler = (input: ISingleOrderTemplateProps) => () => {\n OrderTemplateActions.removeOrderTemplate(input);\n};\n\nexport const OrderTemplateRender = (input: ISingleOrderTemplateProps): ISingleOrderTemplateViewProps | null => {\n const {\n Id,\n orderTemplate,\n removeFromOrderTemplateListText,\n orderTemplateState,\n handlers,\n name,\n imageSettings,\n context,\n telemetryContent,\n enableImageProductLink\n } = input;\n\n if (!Id) {\n return null;\n }\n\n const _getOrderTemplatePageUrl = (): string => {\n const url = getUrlSync('ordertemplate', context.actionContext) ?? '';\n const separator = url.includes('?') ? '&' : '?';\n if (Id) {\n return `${url}${separator}id=${Id}`;\n }\n return '';\n };\n\n const { onDismiss } = handlers;\n\n return {\n key: `${Id}-template`,\n orderTemplateImage: _renderOrderTemplateImages(context, orderTemplate.orderTemplateLines, imageSettings, enableImageProductLink),\n orderTemplateAriaLabel: _renderAriaLabel(input),\n orderTemplateName: (\n
    \n \n
    \n {orderTemplate.totalLines}\n {` `}\n line items\n
    \n
    \n
    \n ),\n addToCartButton: (\n
    \n \n
    \n ),\n removeButton: (\n \n ),\n orderTemplateStatusMessage: orderTemplateState && orderTemplateState.isOpen && orderTemplateState.userMessage && (\n
    \n \n {orderTemplateState.userMessage}\n \n
    \n )\n };\n};\n\n/**\n * On image click handler.\n * @param productUrl -Product url value.\n * @returns Assign window location.\n */\nconst onClickHandler = (productUrl: string) => () => {\n window.location.assign(productUrl);\n};\n\nconst _renderOrderTemplateImages = (\n context: ICoreContext,\n orderTemplateLines?: OrderTemplateLine[],\n imageSettings?: IImageSettings,\n enableImageProductLink?: boolean\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=140&h=140&m=6', w: 0, h: 0 },\n lg: { q: 'w=140&h=140&m=6', w: 0, h: 0 },\n xl: { q: 'w=140&h=140&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n if (orderTemplateLines) {\n const count = orderTemplateLines.length < 4 ? orderTemplateLines.length : 4;\n\n return (\n
    \n {orderTemplateLines?.slice(0, count).map(line => {\n const productUrl = line.fullProduct\n ? _updateProductUrlCatalog(line.fullProduct.ProductDetails, context, line?.productListLine?.CatalogId)\n : '';\n\n return (\n \n );\n })}\n
    \n );\n }\n return
    ;\n};\n\n// This method is used to update the product url with the catalogId\nconst _updateProductUrlCatalog = (productDetails: SimpleProduct, context: ICoreContext, catalogId: number | undefined): string => {\n const productUrl = getProductUrlSync(productDetails, context.actionContext, undefined);\n if (!StringExtensions.isNullOrWhitespace(productUrl) && catalogId !== undefined) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${catalogId ?? 0}`);\n return fullUrl.href;\n }\n return productUrl;\n};\n\nconst _renderAriaLabel = (props: ISingleOrderTemplateProps): string => {\n const { name } = props;\n return `${name}`;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { orderTemplateListStatus } from '../order-template-list';\n\nexport interface IOrderTemplateListStatusMessageProps {\n className?: string;\n errorType: orderTemplateListStatus;\n text?: string;\n}\n\nexport const OrderTemplateListStatusMessage: React.FC = ({ className, errorType, text }) => {\n switch (errorType) {\n case 'EMPTY':\n return

    {text}

    ;\n case 'FAILED':\n return

    {text}

    ;\n case 'LOADING':\n default:\n return

    {text}

    ;\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IOrderTemplateNameDialogResources, OrderTemplateNameDialog } from '@msdyn365-commerce/components';\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport React, { useState } from 'react';\n\nconst modalCloseButtonReference: React.RefObject = React.createRef();\n\n/**\n * The Create Order Template Button Props.\n */\nexport interface ICreateOrderTemplateButtonProps extends IComponentProps {\n /**\n * The label for create order template.\n */\n createOrderTemplateText: string;\n\n /**\n * The create order template dialog resources.\n */\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\n\n /**\n * The delegate to fire when dialog captured any user entry.\n */\n onOrderTemplateCreated(): Promise;\n}\n\nconst CreateOrderTemplateButton: React.FC = props => {\n const onCancelHandler = React.useCallback(() => {\n return;\n }, []);\n const [isCreateOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = useState(false);\n const onCreateButtonClick = React.useCallback(() => {\n setOrderTemplateNameDialogOpen(true);\n }, []);\n\n return (\n <>\n \n {props.createOrderTemplateText}\n \n \n \n );\n};\n\nexport default CreateOrderTemplateButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IOrderTemplateNameDialogResources } from '@msdyn365-commerce/components';\nimport { deleteAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { OrderTemplate } from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Heading, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport Spinner from '../order-template/components/add-line/spinner';\nimport {\n ISingleOrderTemplateProps,\n ISingleOrderTemplateViewProps,\n OrderTemplateListStatusMessage,\n OrderTemplateRender\n} from './components';\nimport CreateNewTemplateButtonComponent from './components/create-order-template';\nimport { IOrderTemplateListData } from './order-template-list.data';\nimport { HeadingTag, IOrderTemplateListProps, IOrderTemplateListResources } from './order-template-list.props.autogenerated';\n\nexport interface IOrderTemplateActionMessageState {\n itemKey: string;\n userMessage: string;\n statusCssString: string;\n messageGlyph: string;\n isOpen: boolean;\n headerStatusMessage: string;\n}\n\nexport type orderTemplateListStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\n\nexport interface IOrderTemplateListViewProps extends IOrderTemplateListProps {\n OrderTemplateList: IModuleProps;\n status?: orderTemplateListStatus;\n statusMessage?: React.ReactNode;\n heading?: React.ReactNode;\n OrderTemplates?: INodeProps;\n OrderTemplate?: INodeProps;\n orderTemplates?: ISingleOrderTemplateViewProps[];\n createOrderTemplateButton?: React.ReactNode;\n templateHeaderStatusMessage?: React.ReactNode;\n}\n\n/**\n *\n * OrderTemplateList component.\n * @extends {React.PureComponent, IOrderTemplateListActionMessageState>}\n */\n@observer\nclass OrderTemplateList extends React.Component, IOrderTemplateActionMessageState> {\n constructor(props: IOrderTemplateListProps) {\n super(props);\n this.state = {\n itemKey: '',\n userMessage: '',\n headerStatusMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: false\n };\n }\n\n public async componentDidMount(): Promise {\n this.setState({});\n }\n\n public shouldComponentUpdate(\n nextProps: IOrderTemplateListProps,\n nextState: IOrderTemplateActionMessageState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n const { emptyOrderTemplateText, createNewTemplateButtonText } = this.props.resources;\n const { orderTemplates } = this.props.data;\n const orderTemplatesData = orderTemplates && orderTemplates.result;\n const orderTemplateListHeading = heading?.text ?? this.props.resources.orderTemplateListTitle;\n\n if (orderTemplates.status === 'LOADING') {\n const errorProps: IOrderTemplateListViewProps = {\n ...(this.props as IOrderTemplateListProps),\n OrderTemplateList: {\n moduleProps: this.props,\n className: classnames('ms-order-template', className)\n },\n status: 'LOADING',\n statusMessage: ,\n heading: (\n \n )\n };\n return this.props.renderView(errorProps);\n }\n\n if (orderTemplatesData && orderTemplatesData.length === 0) {\n // When no order templates are found for customer\n const emptyViewProps: IOrderTemplateListViewProps = {\n ...(this.props as IOrderTemplateListProps),\n OrderTemplateList: {\n moduleProps: this.props,\n className: classnames('ms-order-template', className)\n },\n status: 'EMPTY',\n statusMessage: ,\n createOrderTemplateButton: (\n \n ),\n heading: (\n \n )\n };\n\n return this.props.renderView(emptyViewProps);\n }\n\n const viewProps: IOrderTemplateListViewProps = {\n ...(this.props as IOrderTemplateListProps),\n OrderTemplateList: {\n moduleProps: this.props,\n className: classnames('ms-order-template', className)\n },\n status: 'SUCCESS',\n heading: ,\n createOrderTemplateButton: (\n \n ),\n templateHeaderStatusMessage: this.state.isOpen && this.state.headerStatusMessage && (\n
    \n \n {this.state.headerStatusMessage}\n \n
    \n ),\n OrderTemplates: {\n className: 'ms-order-template__list-item',\n tag: 'ul'\n },\n OrderTemplate: {\n className: 'ms-order-template__tile',\n tag: 'li'\n },\n orderTemplates: orderTemplatesData && this._renderOrderTemplateList(orderTemplatesData)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _generateOrderTemplateNameDialogResources(resources: IOrderTemplateListResources): IOrderTemplateNameDialogResources {\n return {\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\n orderTemplateTitleLabel: resources.orderTemplateTitle,\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\n orderTemplateDescription: resources.createOrderTemplateDescription,\n\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\n\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\n };\n }\n\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (this.props.data.featureState) {\n isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n return isMultipleCatalogFeatureEnabledInHq;\n };\n\n private _renderOrderTemplateList(orderTemplates: OrderTemplate[]): ISingleOrderTemplateViewProps[] {\n const { context, telemetry } = this.props;\n const { imageSettings, enableImageProductLink } = this.props.config;\n return orderTemplates.map((orderTemplate: OrderTemplate, index) => {\n const currentTemplateProps: ISingleOrderTemplateProps = {\n orderTemplateState: this.state,\n Id: orderTemplate.productList.Id,\n name: orderTemplate.productList.Name,\n orderTemplate,\n context,\n imageSettings,\n enableImageProductLink,\n removeFromOrderTemplateListText: 'remove',\n addToBagText: this.props.resources.addToBagButtonText,\n index,\n itemKey: orderTemplate.productList.Id,\n telemetry,\n moduleId: this.props.id,\n moduleTypeName: this.props.typeName,\n handlers: {\n onRemoveOrderTemplate: this._onRemoveFromOrderTemplateList,\n onDismiss: this._onDismiss\n },\n resources: {\n closeWindowButtonText: this.props.resources.closeWindowButtonText,\n addToCartFailureMessage: this.props.resources.addToCartFailureMessage,\n addToCartSuccessMessage: this.props.resources.addToCartSuccessMessage,\n addToCartProcessMessage: this.props.resources.addToCartProcessMessage,\n orderTemplateErrorMessage: this.props.resources.orderTemplateErrorMessage,\n linesAddedToCartDialogResources: {\n viewCartButtonText: this.props.resources.viewCartButtonText,\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\n linesAddedToCartHeaderItemsOneText: this.props.resources.linesAddedToCartHeaderItemsOneText,\n linesAddedToCartHeaderLinesOneText: this.props.resources.linesAddedToCartHeaderLinesOneText,\n linesAddedToCartHeaderLinesFormatText: this.props.resources.linesAddedToCartHeaderLinesFormatText,\n linesAddedToCartHeaderMessageText: this.props.resources.linesAddedToCartHeaderMessageText\n }\n },\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled()\n };\n\n return OrderTemplateRender(currentTemplateProps)!;\n });\n }\n\n private readonly _onDismiss = () => {\n this.setState({\n isOpen: false\n });\n };\n\n private readonly _reloadPage = async () => {\n window.location.reload();\n };\n\n private readonly _onRemoveFromOrderTemplateList = (productListId: string): void | undefined => {\n const { context, data, telemetry, resources } = this.props;\n const { orderTemplates } = data;\n\n if (context && context.actionContext) {\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && orderTemplates.result && orderTemplates.result[0] && productListId) {\n const orderTemplate = orderTemplates.result.find(p => p.productList.Id === productListId);\n if (orderTemplate) {\n deleteAsync({ callerContext: context.actionContext }, orderTemplate.productList)\n .then()\n .catch((error: string) => {\n telemetry.warning('[order-template-list] Unable to delete order template.');\n telemetry.error(error);\n this.setState({\n itemKey: productListId,\n headerStatusMessage: resources.deleteOrderTemplateFailedText,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n })\n .then(this._reloadPage)\n .catch((error: string) => {\n telemetry.warning('[order-template-list] Unable to delete order template.');\n telemetry.error(error);\n });\n } else {\n telemetry.warning('[order-template-list] Failed to delete order template. Order template was not found');\n }\n } else {\n telemetry.warning('[order-template-list] Failed to delete order template.');\n }\n }\n };\n}\n\nexport default OrderTemplateList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISingleOrderTemplateViewProps } from './components';\nimport { IOrderTemplateListViewProps } from './order-template-list';\n\nexport const OrderTemplateListView: React.FC = props => {\n const {\n OrderTemplateList,\n status,\n statusMessage,\n heading,\n OrderTemplates,\n orderTemplates,\n OrderTemplate,\n createOrderTemplateButton,\n templateHeaderStatusMessage\n } = props;\n\n return (\n \n {heading}\n {status !== 'SUCCESS' && statusMessage}\n \n {createOrderTemplateButton}\n {templateHeaderStatusMessage}\n \n {OrderTemplates && orderTemplates && orderTemplates.length > 0 && (\n \n {orderTemplates &&\n orderTemplates.map(orderTemplate => {\n return _renderOrderTemplate(orderTemplate, OrderTemplate);\n })}\n \n )}\n \n );\n};\n\nconst _renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, OrderTemplate?: INodeProps): JSX.Element | null => {\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\n return (\n \n {orderTemplateName}\n {orderTemplateImage}\n {addToCartButton}\n {removeButton}\n {orderTemplateStatusMessage}\n \n );\n};\n\nexport default OrderTemplateListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport default (props: { className: string; msg?: string }) => (\n <>\n
    \n {props?.msg &&
    {props?.msg}
    }\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateLineViewModel } from '../order-template';\nimport { IOrderTemplateData } from '../order-template.data';\nimport { IOrderTemplateProps } from '../order-template.props.autogenerated';\nimport { AddLineToTemplate } from '.';\n\ninterface IOrderTemplateBulkActionsProps extends IOrderTemplateProps {\n orderTemplateId: string;\n selectedLines: IOrderTemplateLineViewModel[];\n isMinifiedView: boolean;\n isMultipleCatalogFeatureEnabledInHq: boolean;\n telemetryContent?: ITelemetryContent;\n onAddSelectionToBag(): void;\n onRemoveSelection(): void;\n}\n\ninterface IOrderTemplateBulkActionsState {\n isAddDisabled: boolean;\n isRemoveDisabled: boolean;\n}\n\n/**\n * Bulk Order Template line actions.\n */\nexport class OrderTemplateBulkActions extends React.PureComponent {\n public state: IOrderTemplateBulkActionsState = {\n isAddDisabled: true,\n isRemoveDisabled: true\n };\n\n public static getDerivedStateFromProps(\n props: IOrderTemplateBulkActionsProps,\n state: IOrderTemplateBulkActionsState\n ): IOrderTemplateBulkActionsState {\n const selectedLines = props.selectedLines.length;\n let nextState = { ...state };\n nextState = {\n isAddDisabled: selectedLines === 0,\n isRemoveDisabled: selectedLines === 0\n };\n return nextState;\n }\n\n public render(): JSX.Element {\n const {\n addLineModalLinkText,\n searchButtonAriaLabel,\n searchInputAriaLabel,\n searchModalPlaceholderText,\n selectCatalogTitleText,\n selectProductButtonText,\n addItemToTemplateText,\n addLineProductUnitPricePrefix,\n backButtonText,\n decrementButtonAriaLabel,\n incrementButtonAriaLabel,\n quantitySelectLabel,\n addLineProductUnitOfMeasurePrefix,\n notFoundSearchErrorNotice,\n notFoundSearchErrorRedediation,\n searchErrorMessage,\n productDimensionTypeColor,\n productDimensionTypeConfiguration,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n addSelectedToBagButtonText,\n removeSelectedToBagButtonText,\n searchResultsCountVerbage,\n searchResultsCountSubject,\n addToTemplateConfirmation,\n totalPriceLabel,\n progressNotificationText,\n addToTemplateDuplicateError,\n addToTemplateGenericError,\n dimensionMissingError\n } = this.props.resources;\n\n const addLineProps = {\n context: this.props.context,\n telemetryContent: this.props.telemetryContent,\n resources: {\n addLineModalLinkText,\n searchButtonAriaLabel,\n searchInputAriaLabel,\n searchModalPlaceholderText,\n selectCatalogTitleText,\n selectProductButtonText,\n addItemToTemplateText,\n addLineProductUnitPricePrefix,\n backButtonText,\n decrementButtonAriaLabel,\n incrementButtonAriaLabel,\n quantitySelectLabel,\n addLineProductUnitOfMeasurePrefix,\n notFoundSearchErrorNotice,\n notFoundSearchErrorRedediation,\n searchErrorMessage,\n productDimensionTypeColor,\n productDimensionTypeConfiguration,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n searchResultsCountVerbage,\n searchResultsCountSubject,\n addToTemplateConfirmation,\n totalPriceLabel,\n progressNotificationText,\n addToTemplateDuplicateError,\n addToTemplateGenericError,\n dimensionMissingError\n },\n imageSettings: this.props.config.imageSettings,\n orderTemplateId: this.props.orderTemplateId,\n isMultipleCatalogFeatureEnabledInHq: this.props.isMultipleCatalogFeatureEnabledInHq,\n catalogs: this.props.data.catalogs?.result\n };\n\n return (\n <>\n \n \n \n {!this.props.isMinifiedView && addSelectedToBagButtonText}\n \n \n \n {!this.props.isMinifiedView && removeSelectedToBagButtonText}\n \n \n );\n }\n\n private readonly addHandler = (event: React.MouseEvent) => {\n this.setState({\n isAddDisabled: true\n });\n\n this.props.onAddSelectionToBag();\n\n this.setState({\n isAddDisabled: false\n });\n };\n\n private readonly removeHandler = (event: React.MouseEvent) => {\n this.setState({\n isRemoveDisabled: true\n });\n\n this.props.onRemoveSelection();\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { getCatalogId, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\nimport { ProductListLine, ProductSearchCriteria, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductCatalog, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n addItemToOrderTemplate,\n AddItemToOrderTemplateInput,\n ArrayExtensions,\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getSelectedVariant,\n SelectedVariantInput,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Modal, ModalBody, ModalHeader, getPayloadObject, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport { get } from 'lodash';\nimport { computed } from 'mobx';\nimport React from 'react';\n\nimport { IProductConfigurationState, NotFoundComponent, ProductConfiguration, ProductList } from '.';\nimport Spinner from './spinner';\n\nexport interface IAddLineToTemplateProps {\n context: ICoreContext;\n resources: IAddLineToTemplateResources;\n orderTemplateId: string;\n imageSettings?: IImageSettings;\n isMultipleCatalogFeatureEnabledInHq: boolean;\n catalogs?: ProductCatalog[] | undefined;\n telemetryContent?: ITelemetryContent;\n}\n\nexport interface IAddLineToTemplateResources {\n addLineModalLinkText: string;\n searchButtonAriaLabel: string;\n searchInputAriaLabel: string;\n searchModalPlaceholderText: string;\n selectCatalogTitleText: string;\n selectProductButtonText: string;\n addItemToTemplateText: string;\n addLineProductUnitPricePrefix: string;\n backButtonText: string;\n decrementButtonAriaLabel: string;\n incrementButtonAriaLabel: string;\n quantitySelectLabel: string;\n addLineProductUnitOfMeasurePrefix: string;\n notFoundSearchErrorNotice: string;\n notFoundSearchErrorRedediation: string;\n searchErrorMessage: string;\n productDimensionTypeColor: string;\n productDimensionTypeConfiguration: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n searchResultsCountVerbage: string;\n searchResultsCountSubject: string;\n addToTemplateConfirmation: string;\n totalPriceLabel: string;\n progressNotificationText: string;\n addToTemplateDuplicateError: string;\n addToTemplateGenericError: string;\n dimensionMissingError: string;\n backToResultsText?: string;\n}\n\nenum CONTENT {\n Search,\n ProductList,\n ProductConfiguration,\n NotFound,\n Error,\n Loading\n}\n\ninterface IAddLineToTemplateState {\n isOpen: boolean;\n query: string;\n products: ProductSearchResult[];\n productCatalogs: ProductCatalog[] | null;\n content: number;\n selectedProduct: SimpleProduct | null;\n selectedCatalogId: number | undefined;\n selectedProductDimensions?: ProductDimensionFull[];\n selectedQuantity?: number;\n reloadPage?: boolean;\n}\n\n/**\n * Add Lines to order template.\n */\nexport class AddLineToTemplate extends React.Component {\n public state: IAddLineToTemplateState = {\n isOpen: false,\n query: '',\n products: [],\n productCatalogs: [],\n content: CONTENT.Search,\n selectedProduct: null,\n selectedCatalogId: 0\n };\n\n public defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n lg: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n xl: { q: 'w=64&h=64&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n public searchTextInput: React.RefObject = React.createRef(); // @TODO public/private\n\n private readonly addLineButtonRef: React.RefObject = React.createRef();\n\n constructor(props: IAddLineToTemplateProps) {\n super(props);\n }\n\n public onComponentDidMount(): void {\n this.searchTextInput.current?.focus();\n }\n\n public componentDidMount(): void {\n this._getCatalogs();\n }\n\n public onComponentDidUpdate(): void {\n this.searchTextInput.current?.focus();\n }\n\n @computed get showBackArrow(): boolean {\n return this.state.content === CONTENT.ProductConfiguration;\n }\n\n public shouldComponentUpdate(nextProps: IAddLineToTemplateProps, nextState: IAddLineToTemplateState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const {\n resources: { addLineModalLinkText, backToResultsText }\n } = this.props;\n\n const modalProps = {\n ...this.props,\n className: 'msc-add-line-to-template',\n toggle: this._toggleModalHandler,\n isOpen: this.state.isOpen,\n ariaLabel: addLineModalLinkText\n };\n\n return (\n <>\n \n \n {this.showBackArrow && (\n \n )}\n {addLineModalLinkText}\n \n {this._renderContent()}\n \n \n \n {addLineModalLinkText}\n \n \n );\n }\n\n private readonly _renderSearchForm = () => {\n const {\n resources: { searchButtonAriaLabel, searchModalPlaceholderText, selectCatalogTitleText }\n } = this.props;\n\n return (\n \n {this.state.productCatalogs && ArrayExtensions.hasElements(this.state.productCatalogs) && (\n <>\n \n \n {this._getCatalogNodes()}\n \n \n )}\n
    \n \n
    \n \n );\n };\n\n private readonly _onSearchSubmit = (event: React.FormEvent): void => {\n event.preventDefault();\n\n const query = get(this, 'searchTextInput.current.value', null);\n\n if (!query) {\n return;\n }\n\n this.setState({\n content: CONTENT.Loading\n });\n\n this._getSearchResults(query)\n .then(result => {\n if (result.length === 0) {\n this.setState({\n products: result,\n content: CONTENT.NotFound\n });\n } else {\n this.setState({\n products: result,\n content: CONTENT.ProductList\n });\n }\n })\n .catch(error => {\n this.setState({\n content: CONTENT.Error\n });\n });\n };\n\n private readonly _onQuantityChangeHandler = (event: React.ChangeEvent) => {\n this.setState({\n selectedQuantity: +event.target.value\n });\n };\n\n private readonly _onSelectItem = async (product: ProductSearchResult): Promise => {\n const {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n } = this.props.context;\n const varianteInput = new SelectedVariantInput(product.RecordId, channelId, [], undefined, this.props.context.request);\n const productVariant = await getSelectedVariant(varianteInput, actionContext);\n\n if (!productVariant) {\n this.props.context.telemetry.error('Error retrieving product variant');\n return Promise.resolve([]);\n }\n\n const dimensions = await this._getProductDimensions(product as SimpleProduct);\n\n this.setState({\n selectedProductDimensions: dimensions,\n content: CONTENT.ProductConfiguration,\n selectedProduct: productVariant\n });\n\n return dimensions;\n };\n\n private readonly _onInputChange = (event: React.ChangeEvent): void => {\n this.setState({\n query: event.target.value\n });\n };\n\n private readonly _onBackButtonClickHandler = (): void => {\n this.setState({\n content: CONTENT.ProductList\n });\n };\n\n private readonly _highlightSearchTerm = (name: string) => {\n const parsedName = name && unescape(name.replace(new RegExp(this.state.query, 'i'), '$&'));\n\n return (\n \n );\n };\n\n private readonly _resultCountText = (): string => {\n return this.props.resources.searchResultsCountVerbage\n .replace('{count}', this.state.products.length.toString())\n .replace('{subject}', `${this.props.resources.searchResultsCountSubject}${this.state.products.length > 1 ? 's' : ''}`);\n };\n\n private _renderContent(): React.ReactNode | null {\n switch (this.state.content) {\n case CONTENT.ProductConfiguration:\n const { selectedProduct, selectedProductDimensions } = this.state;\n const viewProps = {\n ...this.props,\n imageSettings: this.props.imageSettings || this.defaultImageSettings,\n product: selectedProduct!,\n dimensions: selectedProductDimensions!,\n addToTemplateHandler: this._addItemToTemplateHandler,\n onQuantityChangeHandler: this._onQuantityChangeHandler,\n highlightSearchTerm: this._highlightSearchTerm,\n searchForm: this._renderSearchForm()\n };\n\n return ;\n\n case CONTENT.ProductList:\n const productProps = {\n ...this.props,\n imageSettings: this.props.imageSettings || this.defaultImageSettings,\n clickHandler: this._onSelectItem,\n products: this.state.products,\n highlightSearchTerm: this._highlightSearchTerm,\n searchForm: this._renderSearchForm(),\n renderResultCountText: this._resultCountText\n };\n\n return (\n \n \n \n );\n\n case CONTENT.Loading:\n return (\n \n {this._renderSearchForm()}\n \n \n );\n\n case CONTENT.NotFound:\n const { notFoundSearchErrorNotice, notFoundSearchErrorRedediation } = this.props.resources;\n\n return (\n \n

    {this._resultCountText()}

    \n {this._renderSearchForm()}\n \n
    \n );\n\n case CONTENT.Error:\n return (\n \n {this._renderSearchForm()}\n
    \n {this.props.resources.searchErrorMessage}\n
    \n
    \n );\n\n default:\n return {this._renderSearchForm()};\n }\n }\n\n private readonly _addItemToTemplateHandler = async (config: IProductConfigurationState): Promise => {\n const {\n orderTemplateId,\n context: { actionContext },\n isMultipleCatalogFeatureEnabledInHq\n } = this.props;\n const catalogId = this.state.selectedCatalogId;\n const input = isMultipleCatalogFeatureEnabledInHq\n ? new AddItemToOrderTemplateInput(\n orderTemplateId,\n config.product.RecordId,\n config.quantity,\n config.product.DefaultUnitOfMeasure || 'ea',\n isMultipleCatalogFeatureEnabledInHq,\n catalogId\n )\n : new AddItemToOrderTemplateInput(\n orderTemplateId,\n config.product.RecordId,\n config.quantity,\n config.product.DefaultUnitOfMeasure || 'ea'\n );\n const result = await addItemToOrderTemplate(input, actionContext);\n this.setState({\n isOpen: false,\n reloadPage: true\n });\n // reload when closing\n window.location.reload();\n return result;\n };\n\n /**\n *\n * Get all active product catalogs.\n */\n private _getCatalogs(): void {\n const { isMultipleCatalogFeatureEnabledInHq, catalogs } = this.props;\n\n // if Channel Multiple Catalogs Feature is enabled then show all catalogs.\n const productCatalogs = isMultipleCatalogFeatureEnabledInHq && catalogs ? catalogs : [];\n\n // get the current catalog id.\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n // set the current catalog id as a default selected catalog id from the url\n this.setState({\n productCatalogs: productCatalogs,\n selectedCatalogId: catalogId\n });\n }\n\n private _getCatalogNodes(): JSX.Element[] | null {\n const { productCatalogs, selectedCatalogId } = this.state;\n if (productCatalogs && ArrayExtensions.hasElements(productCatalogs)) {\n return productCatalogs.map((productCatalog: ProductCatalog) => {\n // initially select default catalog in dropdown\n const isSelected = productCatalog.RecordId === selectedCatalogId;\n return (\n \n );\n });\n }\n return [];\n }\n\n private readonly _onCatalogSelectionChange = (event: React.ChangeEvent) => {\n this.setState({\n selectedCatalogId: Number.parseInt(event.target.value, 10)\n });\n };\n\n private _getSearchResults(searchText: string): Promise {\n const {\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n const { selectedCatalogId } = this.state;\n const searchCriteriaInput: ProductSearchCriteria = {};\n\n searchCriteriaInput.Context = {\n ChannelId: channelId,\n CatalogId: selectedCatalogId\n };\n\n if (process.env.NODE_ENV === 'development' && process.env.ENABLE_CLOUD_SEARCH?.toLowerCase() !== 'true') {\n searchCriteriaInput.IncludeAttributes = false;\n } else {\n searchCriteriaInput.IncludeAttributes = true;\n }\n searchCriteriaInput.SearchCondition = searchText;\n\n return searchByCriteriaAsync({ callerContext: actionContext }, searchCriteriaInput);\n }\n\n private async _getProductDimensions(product: SimpleProduct): Promise {\n const {\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n const id = product.MasterProductId ? product.MasterProductId : product.RecordId;\n\n return getDimensionsForSelectedVariant(\n new GetDimensionsForSelectedVariantInput(id, channelId, [], this.props.context.request),\n actionContext\n );\n }\n\n private readonly _toggleModalHandler = () => {\n if (this.state.isOpen) {\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'add-item-to-template', '');\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'add-item-to-template');\n this._getCatalogs();\n this.addLineButtonRef.current!.focus();\n }\n\n this.setState({\n isOpen: !this.state.isOpen,\n content: CONTENT.Search\n });\n\n if (this.state.reloadPage) {\n window.location.reload();\n this.setState({\n reloadPage: false\n });\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface IDropdownState {\n /**\n * @friendlyName selectedIndex\n * @description Selected index.\n */\n selectedIndex: string;\n}\n\nexport interface IDropdownProps {\n dropdownId: number;\n dropdownName: string;\n dropdownList: IDropdownItemProps[];\n telemetryContent?: ITelemetryContent;\n onChange?(selection: IDropdownOnSelection): void;\n}\n\nexport interface IDropdownItemProps {\n value: string;\n id: number;\n}\n\nexport interface IDropdownOnSelection {\n dropdownId: number;\n selectId: string;\n selectedValue: string;\n}\n\n/**\n *\n * DropDown component.\n * @extends {React.PureComponent}\n */\nexport class Dropdown extends React.PureComponent {\n private readonly selectMenu: React.RefObject = React.createRef();\n\n constructor(props: IDropdownProps, state: IDropdownState) {\n super(props);\n this.state = {\n selectedIndex: ''\n };\n }\n\n public componentDidMount(): void {\n if (this.selectMenu.current) {\n this.selectMenu.current.selectedIndex = 0;\n }\n }\n\n public render(): JSX.Element {\n const { dropdownId, dropdownList, dropdownName } = this.props;\n\n return (\n \n {dropdownList.map(\n (item: IDropdownItemProps) =>\n item && (\n \n {item.value}\n \n )\n )}\n \n );\n }\n\n private readonly _onChanged = (event: React.ChangeEvent): void => {\n this.setState({ selectedIndex: event.target.value });\n\n if (this.props.onChange) {\n this.props.onChange({\n dropdownId: this.props.dropdownId,\n selectId: event.target.value,\n selectedValue: event.target.innerText\n });\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport const NotFoundComponent = (props: { error: string; msg: string }) => (\n <>\n
    \n
    {props.error}
    \n
    {props.msg}
    \n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { debounce } from 'lodash';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\ninterface IQuantityProps {\n min?: number;\n max: number;\n currentCount?: number;\n disabled?: boolean;\n incrementGlyphClass?: string;\n decrementGlyphClass?: string;\n decrementButtonAriaLabel?: string;\n incrementButtonAriaLabel?: string;\n inputQuantityAriaLabel?: string;\n id?: string;\n onChange?(newValue: number): void;\n}\n\ninterface IQuantityState {\n currentInput: number;\n}\n\n/**\n * Quantity Component - This component is used to add or remove quantity.\n */\n@observer\nexport default class OrderTemplateQuantity extends React.PureComponent {\n public static defaultProps: Partial = {\n min: 1,\n decrementGlyphClass: 'fas fa-minus',\n incrementGlyphClass: 'fas fa-plus'\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n constructor(props: IQuantityProps) {\n super(props);\n this.state = { currentInput: props.currentCount || 1 };\n this._handleChange = this._handleChange.bind(this);\n\n reaction(\n () => this.props.currentCount,\n () => {\n this.setState({ currentInput: this.props.currentCount || 1 });\n }\n );\n }\n\n public render(): JSX.Element {\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\n const disabled = this.props.currentCount === this.props.min;\n const incDisabled = this.props.currentCount === this.props.max;\n const currentValue = this.state.currentInput;\n let extraClass = '';\n if (disabled) {\n // The quantity has reached its boundaries (max or min)\n extraClass = 'disabled';\n } else if (this.props.disabled) {\n // This.props.disabled shows if the state is not succeded yet\n extraClass = 'transition';\n }\n const getChangeHandler = (amount: number) => () => {\n this._onIncrementalChange(amount);\n };\n\n return (\n
    \n \n \n \n \n \n \n \n
    \n );\n }\n\n private _onIncrementalChange(amount: number): void {\n const updatedQuantity = this.state.currentInput + amount;\n\n if (updatedQuantity >= 1 && updatedQuantity <= this.props.max) {\n this.props.onChange && this.props.onChange(updatedQuantity);\n }\n }\n\n private _handleChange(e: React.ChangeEvent): void {\n const currentValue = Number.parseInt(e.target.value, 10);\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n const inputElement =\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\n\n if (currentValue > this.props.max) {\n this.setState({ currentInput: this.props.max });\n } else {\n this.setState({ currentInput: currentValue }, () => {\n debounce(() => {\n if (!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue) && inputElement) {\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\n inputElement.setAttribute('value', currentValue.toString());\n }\n }, 200)();\n });\n }\n }\n\n private readonly _validateMin = (): void => {\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n\n if (isNaN(this.state.currentInput) || this.state.currentInput < minValue) {\n this.props.onChange && this.props.onChange(minValue);\n } else {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ProductDimensionValue, ProductListLine } from '@msdyn365-commerce/retail-proxy';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getFallbackImageUrl,\n getPriceForSelectedVariant,\n getProductAvailabilitiesForSelectedVariant,\n getSelectedVariant,\n IProductInventoryInformation,\n PriceForSelectedVariantInput,\n ProductAvailabilitiesForSelectedVariantInput,\n SelectedVariantInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, ITelemetryContent, ModalBody, ModalFooter } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport OrderTemplateQuantity from '../common/order-template-quantity';\nimport { Dropdown, IAddLineToTemplateProps, IAddLineToTemplateResources, IDropdownItemProps, IDropdownOnSelection } from '.';\n\nexport interface IProductCnnfigurationProps extends IAddLineToTemplateProps {\n product: SimpleProduct;\n dimensions: ProductDimensionFull[];\n imageSettings: IImageSettings;\n telemetryContent?: ITelemetryContent;\n searchForm: React.ReactNode;\n addToTemplateHandler(params: IProductConfigurationState): Promise;\n highlightSearchTerm(name: string): React.ReactNode;\n}\n\nexport interface IProductConfigurationState {\n quantity: number;\n unitPrice: number;\n totalPrice: number;\n product: SimpleProduct;\n dimensions: ProductDimensionFull[];\n selectedDimensions: {};\n productAvailableQuantity?: IProductInventoryInformation;\n buttonDisabled: boolean;\n showAddConfirmation: boolean;\n errorMessage?: string;\n isBusy: boolean;\n errors: { dimension?: string[]; add?: string };\n}\n\n/**\n * Configure selected product for addition to order template.\n */\nexport class ProductConfiguration extends React.Component {\n private selectedDimensions: {} = {};\n\n constructor(props: IProductCnnfigurationProps) {\n super(props);\n\n this.state = {\n quantity: 1,\n unitPrice: props.product.Price,\n totalPrice: props.product.Price,\n product: props.product,\n dimensions: props.dimensions.sort((a, b) => a.DimensionTypeValue - b.DimensionTypeValue),\n selectedDimensions: {},\n buttonDisabled: false,\n showAddConfirmation: false\n } as IProductConfigurationState;\n }\n\n public shouldComponentUpdate(nextProps: IProductCnnfigurationProps, nextState: IProductConfigurationState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const {\n context: {\n actionContext: {\n requestContext: { apiSettings }\n },\n request: { gridSettings }\n },\n resources: {\n addItemToTemplateText,\n addLineProductUnitPricePrefix,\n decrementButtonAriaLabel,\n incrementButtonAriaLabel,\n quantitySelectLabel,\n addLineProductUnitOfMeasurePrefix,\n totalPriceLabel\n },\n imageSettings,\n highlightSearchTerm\n } = this.props;\n const { buttonDisabled, product, quantity, unitPrice, totalPrice, showAddConfirmation, errors } = this.state;\n const isMultipleCatalogSelect = this.props.isMultipleCatalogFeatureEnabledInHq ? 'isMultipleCatalogSelect' : '';\n return (\n <>\n \n {this.props.searchForm}\n
    \n
    \n
    \n \n
    \n
    {product?.ItemId}
    \n {highlightSearchTerm(product?.Name ?? '')}\n
    \n {addLineProductUnitPricePrefix}\n {` `}\n {this._formatPrice(unitPrice)}\n
    \n
    \n {addLineProductUnitOfMeasurePrefix}\n {` `}\n {product?.DefaultUnitOfMeasure}\n
    \n
    \n
    \n
    {this._getDimensionsNodes()}
    \n
    \n
    \n
    {quantitySelectLabel}
    \n \n
    \n
    \n
    \n {totalPriceLabel}\n {` `}\n {this._formatPrice(totalPrice)}\n
    \n
    \n \n {showAddConfirmation && (\n \n
    \n )}\n {errors?.add && (\n
    \n
    \n )}\n \n {addItemToTemplateText}\n \n \n \n );\n }\n\n private _getConfirmationMessage(): string {\n const selectedDimensionNames = this.state.dimensions\n .map(dimension => {\n let variant = dimension.DimensionValues?.find(\n value => value.RecordId === this.selectedDimensions[dimension.DimensionTypeValue]\n )?.Value;\n if (dimension.DimensionTypeValue === 3) {\n variant = `size ${variant}`;\n }\n return variant;\n })\n .filter(value => value);\n\n return this.props.resources.addToTemplateConfirmation\n .replace('{count}', this.state.quantity.toString())\n .replace('{productAndDimensions}', `${this.state.product.Name}, ${Object.values(selectedDimensionNames).join(', ')}`);\n }\n\n private _getDimensionsNodes(): React.ReactElement[] {\n const { dimensions } = this.state;\n const { resources } = this.props;\n\n return dimensions?.map((dimension: ProductDimensionFull) => {\n const { DimensionValues, DimensionTypeValue } = dimension;\n const mapDimensions = (value: ProductDimensionValue): IDropdownItemProps => ({\n id: value.RecordId,\n value: value.Value || ''\n });\n const dimensionName = this._getDropdownName(DimensionTypeValue, resources);\n const dropdownList: IDropdownItemProps[] = DimensionValues ? DimensionValues.map(mapDimensions) : [];\n dropdownList.unshift({ id: 0, value: `Choose a ${dimensionName}` });\n\n return (\n
    \n
    {dimensionName}
    \n {this.state.errors?.dimension?.includes(DimensionTypeValue.toString()) && (\n \n \n \n )}\n \n
    \n );\n });\n }\n\n private readonly _getDimensionsError = (dimensionName: string) =>\n this.props.resources.dimensionMissingError.replace(/{dimensionName}/g, dimensionName);\n\n private readonly _addToTemplateHandler = async (event: React.MouseEvent) => {\n // Hide confirmation of previous addition when adding multiple items\n this.setState({\n isBusy: true,\n showAddConfirmation: false,\n errors: { ...this.state.errors, add: undefined }\n });\n\n const missingDimensions = this.state.dimensions\n .map(dimension => dimension.DimensionTypeValue.toString())\n .filter(type => !this.selectedDimensions[type]);\n\n this.setState({\n errors: { dimension: missingDimensions }\n });\n if (missingDimensions.length > 0) {\n this.setState({\n isBusy: false\n });\n return;\n }\n\n this.props\n .addToTemplateHandler({ ...this.state })\n .then(status => {\n // Validate against the existance of a ProductListId\n if (status.ProductListId) {\n this.setState({\n isBusy: false,\n showAddConfirmation: true\n });\n }\n })\n .catch(error => {\n const { addToTemplateDuplicateError, addToTemplateGenericError } = this.props.resources;\n let errorMessage;\n\n if (error.error.name === 'Microsoft_Dynamics_Commerce_Runtime_DuplicateObject') {\n errorMessage = addToTemplateDuplicateError;\n } else {\n errorMessage = addToTemplateGenericError;\n }\n\n this.setState({\n isBusy: false,\n errors: { ...this.state.errors, add: errorMessage }\n });\n this.props.context.telemetry.error('Error adding item to order template');\n });\n };\n\n private readonly _onQuantityChange = (newValue: number) => {\n this.setState({\n quantity: newValue,\n totalPrice: newValue * this.props.product.Price\n });\n };\n\n private readonly _updateDimensionValue = (\n productDimensionFull: ProductDimensionFull,\n newValueId: string | undefined\n ): ProductDimensionValue | undefined => {\n if (newValueId && productDimensionFull.DimensionValues) {\n return productDimensionFull.DimensionValues.find(dimension => dimension.RecordId === +newValueId);\n }\n\n return undefined;\n };\n\n // Rehydrate the selected variants price, available dimensions & sizes\n private readonly _onDimensionChanged = async (selection: IDropdownOnSelection): Promise => {\n const { product, dimensions, context } = this.props;\n const {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n } = context;\n\n // Remaining error notifications for missing dimensions\n const remainingDimensionsErrors = this.state.errors?.dimension?.filter(id => id !== selection.dropdownId.toString());\n\n this.setState({\n isBusy: false,\n showAddConfirmation: false,\n buttonDisabled: true,\n errors: { add: undefined, dimension: remainingDimensionsErrors }\n });\n\n // Update currently selected dimensions\n this.selectedDimensions[selection.dropdownId] = +selection.selectId;\n\n const mappedDimensions = dimensions\n ?.map(dimension => {\n return {\n DimensionTypeValue: dimension.DimensionTypeValue,\n DimensionValue:\n this._updateDimensionValue(dimension, this.selectedDimensions[dimension.DimensionTypeValue]) ||\n dimension.DimensionValue,\n ExtensionProperties: dimension.ExtensionProperties\n };\n })\n .filter(dimension => {\n return dimension && dimension.DimensionValue;\n });\n\n const variantProduct = await getSelectedVariant(\n new SelectedVariantInput(\n product.MasterProductId ? product.MasterProductId : product.RecordId,\n channelId,\n mappedDimensions,\n undefined,\n this.props.context.request\n ),\n actionContext\n );\n\n if (!variantProduct) {\n this.props.context.telemetry.error(\n `Error retrieving variant product for product ${product.MasterProductId ? product.MasterProductId : product.RecordId}`\n );\n return;\n }\n\n const dimensionInput = new GetDimensionsForSelectedVariantInput(\n variantProduct.RecordId,\n channelId,\n mappedDimensions,\n this.props.context.request\n );\n const variantDimensions = await getDimensionsForSelectedVariant(dimensionInput, actionContext);\n\n if (!variantDimensions) {\n this.props.context.telemetry.error('Error retrieving dimensions for reconfigured product variant');\n this.setState({\n buttonDisabled: false\n });\n return;\n }\n\n const availabilityInput = new ProductAvailabilitiesForSelectedVariantInput(\n product.MasterProductId ? product.MasterProductId : product.RecordId,\n channelId\n );\n\n // @TODO sync UX quantity w/ actual availability\n const newAvailableQuantity = await getProductAvailabilitiesForSelectedVariant(availabilityInput, actionContext);\n const priceInput = new PriceForSelectedVariantInput(product.RecordId, channelId);\n const productPrice = await getPriceForSelectedVariant(priceInput, actionContext);\n\n if (!productPrice) {\n this.props.context.telemetry.error('Error retrieving price for reconfigured product variant');\n this.setState({\n buttonDisabled: false\n });\n return;\n }\n\n this.setState({\n buttonDisabled: false,\n productAvailableQuantity: (newAvailableQuantity && newAvailableQuantity[0]) || undefined,\n unitPrice: +(productPrice.BasePrice || product.Price),\n dimensions: variantDimensions.sort((a, b) => a.DimensionTypeValue - b.DimensionTypeValue),\n product: variantProduct\n });\n };\n\n private readonly _getDropdownName = (dimensionType: number, resources: IAddLineToTemplateResources): string => {\n switch (dimensionType) {\n case 1: // Color\n return resources.productDimensionTypeColor;\n case 2: // Configuration\n return resources.productDimensionTypeConfiguration;\n case 3: // Size\n return resources.productDimensionTypeSize;\n case 4: // Style\n return resources.productDimensionTypeStyle;\n default:\n return '';\n }\n };\n\n private _formatPrice(price: number): string {\n const {\n context: {\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n }\n } = this.props;\n\n return formatCurrency(price.toFixed(2), currencyCode);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\nimport { IAddLineToTemplateProps } from '.';\n\nexport interface IProductListProps extends IAddLineToTemplateProps {\n products: ProductSearchResult[];\n imageSettings: IImageSettings;\n searchForm: React.ReactNode;\n clickHandler(product: ProductSearchResult): Promise;\n highlightSearchTerm(name: string): React.ReactNode;\n renderResultCountText(): string;\n}\n\nexport const ProductList = (props: IProductListProps) => {\n const {\n products,\n context: {\n actionContext: {\n requestContext: { apiSettings }\n },\n request: { gridSettings },\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n },\n clickHandler,\n highlightSearchTerm,\n renderResultCountText,\n resources: { selectProductButtonText },\n imageSettings\n } = props;\n\n return (\n <>\n

    \n {renderResultCountText()}\n

    \n {props.searchForm}\n
    \n {products.map((product: ProductSearchResult, index: number) => {\n const { Price, ItemId, Name, PrimaryImageUrl } = product;\n const price = formatCurrency(Price.toFixed(2), currencyCode);\n const primaryImageSource = generateImageUrl(PrimaryImageUrl ?? '', apiSettings) ?? '';\n const fallBackImg = getFallbackImageUrl(ItemId, apiSettings, props.context.request.app?.config?.OmniChannelMedia) ?? '';\n\n return (\n
    \n
    \n \n
    \n
    {ItemId}
    \n {highlightSearchTerm(Name ?? '')}\n
    \n
    \n
    \n {price}\n \n
    \n
    \n );\n })}\n
    \n \n );\n};\n\ninterface IProductSelectButton {\n product: ProductSearchResult;\n buttonText: string;\n clickHandler(product: ProductSearchResult): Promise;\n}\n\nconst ProductSelectButton = (props: IProductSelectButton) => {\n const [isBusy, setBusy] = useState(false);\n const { product, buttonText, clickHandler } = props;\n const getClickHandler = React.useCallback(async () => {\n setBusy(!isBusy);\n await clickHandler(product);\n setBusy(!isBusy);\n }, [clickHandler, isBusy, product]);\n\n return (\n \n {buttonText}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n AddOrderTemplateToCartComponent,\n ILinesAddedToCartDialogResources,\n IOrderTemplateNameDialogResources,\n RenameOrderTemplateComponent,\n OrderTemplateNameDialog\n} from '@msdyn365-commerce/components';\nimport { IComponentProps, ICoreContext } from '@msdyn365-commerce/core';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy';\nimport { OrderTemplate, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, ITelemetryContent, Popover } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { useState } from 'react';\n\nexport interface IOrderTemplateActionsData {\n orderTemplate: OrderTemplate;\n}\n\nexport interface IOrderTemplateActionsProps extends IComponentProps {\n context: ICoreContext;\n telemetryContent?: ITelemetryContent;\n handlers: {\n onRemoveTemplate(orderTemplateId: string): void;\n onRenameTemplate(orderTemplate: ProductList): Promise;\n };\n renameOrderTemplateDialogStrings: IOrderTemplateNameDialogResources;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n resources: {\n addTemplateToBagButtonText: string;\n renameTemplateButtonText: string;\n deleteTemplateButtonText: string;\n closeWindowButtonText: string;\n addToCartFailureMessage: string;\n addToCartSuccessMessage: string;\n addToCartProcessMessage: string;\n orderTemplateErrorMessage: string;\n linesAddedToCartDialogResources: ILinesAddedToCartDialogResources;\n };\n}\n\nexport interface IOrderTemplateActionsViewProps {\n addTemplateToBag: React.ReactNode;\n renameTemplate?: React.ReactNode;\n removeTemplate?: React.ReactNode;\n isMultipleCatalogsFeatureEnabled?: boolean;\n actionsSplitButton?: React.ReactNode;\n}\n\n/**\n * Remove Order Action.\n * @param props -Order template action props.\n * @returns Remove order template.\n */\nconst removeOrderActionHandler = (props: IOrderTemplateActionsProps) => () => {\n _removeOrderTemplate(props);\n};\n\nexport const OrderTemplateActionsView = (props: IOrderTemplateActionsProps): IOrderTemplateActionsViewProps => {\n const { resources, isMultipleCatalogFeatureEnabledInHq } = props;\n const { deleteTemplateButtonText } = resources;\n\n return {\n addTemplateToBag: _getOrderTemplateAddToCartDialog(props),\n renameTemplate: !isMultipleCatalogFeatureEnabledInHq && _getOrderTemplateRenameControl(props),\n removeTemplate: !isMultipleCatalogFeatureEnabledInHq && (\n \n ),\n actionsSplitButton: isMultipleCatalogFeatureEnabledInHq && \n };\n};\n\nconst _removeOrderTemplate = (props: IOrderTemplateActionsProps): void => {\n const {\n data: { orderTemplate },\n handlers\n } = props;\n const { onRemoveTemplate } = handlers;\n\n if (onRemoveTemplate) {\n onRemoveTemplate(orderTemplate.productList.Id);\n }\n};\n\nconst _getOrderTemplateAddToCartDialog = (props: IOrderTemplateActionsProps): React.ReactNode => {\n const {\n data: { orderTemplate },\n typeName,\n id,\n context,\n telemetryContent,\n resources,\n isMultipleCatalogFeatureEnabledInHq\n } = props;\n const {\n addTemplateToBagButtonText,\n closeWindowButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n orderTemplateErrorMessage,\n linesAddedToCartDialogResources\n } = resources;\n\n const dialogStrings = {\n closeWindowButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n orderTemplateErrorMessage,\n linesAddedToCartDialogResources\n };\n\n return (\n \n );\n};\n\nconst _getOrderTemplateRenameControl = (props: IOrderTemplateActionsProps): React.ReactNode => {\n const { renameOrderTemplateDialogStrings, resources, context, handlers } = props;\n return (\n \n );\n};\n\nlet buttonEventReference: HTMLButtonElement | undefined;\nexport const ActionsSplitButton: React.FC = (props: IOrderTemplateActionsProps) => {\n const [isStatementRequestAdminDropdownOpen, setIsStatementRequestAdminDropdownOpen] = useState(false);\n const [renameOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = React.useState(false);\n\n const onOrderTemplateNameCancel = () => {\n context.telemetry.debug('Rename of template was canceled.');\n buttonEventReference?.focus();\n };\n\n const onRenameButtonClick = (event: React.MouseEvent) => {\n buttonEventReference = event.target as HTMLButtonElement;\n setOrderTemplateNameDialogOpen(true);\n event.preventDefault();\n };\n const onToggleDropdown1 = () => {\n setIsStatementRequestAdminDropdownOpen(!isStatementRequestAdminDropdownOpen);\n };\n const {\n data: { orderTemplate },\n resources,\n renameOrderTemplateDialogStrings,\n context\n } = props;\n\n const className = 'ms-order-template-action-bar';\n\n const popoverReference = React.createRef();\n const renderModalPopup = (\n \n );\n const requestStatementDropdownString = `request-statement-dropdown-id-${Random.Guid.generateGuid()}`;\n\n return (\n
    \n {renderModalPopup}\n \n {'Options'}\n \n \n \n\n \n {'Delete'}\n \n \n
    \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { ICoreContext, IImageSettings, Image, ITelemetry } from '@msdyn365-commerce/core';\nimport { ProductListLine } from '@msdyn365-commerce/retail-proxy';\nimport { ProductCatalog, ProductPrice, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions, getFallbackImageUrl, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { IOrderTemplateLineViewModel } from '../order-template';\nimport OrderTemplateQuantity from './common/order-template-quantity';\n\nexport interface IOrderTemplateLineProps extends ProductListLine {\n orderTemplateLine: IOrderTemplateLineViewModel;\n productListLine: ProductListLine;\n price?: ProductPrice;\n context: ICoreContext;\n productUrl: string;\n imageSettings?: IImageSettings;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n quantity: number;\n isQuantityDisabledForUpdate?: boolean;\n handlers: {\n onAddToBag(product: SimpleProduct, quantity: number, itemKey: string, catalogId?: number | undefined): void;\n onRemoveItem(line: IOrderTemplateLineViewModel): void;\n onChangeQuantity(orderTemplateLineId: string, quantity: number, props?: IOrderTemplateLineProps): void;\n onSelect(line: IOrderTemplateLineViewModel, isChecked: boolean): void;\n };\n resources: {\n selectOneRowText?: string;\n moreButtonText?: string;\n viewProductDetailsText?: string;\n productDimensionTypeColor: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n originalPriceText: string;\n currentPriceText: string;\n freePriceText: string;\n inputQuantityAriaLabel: string;\n removeFromOrderTemplateLinesText: string;\n addToBagButtonText: string;\n deleteButtonText: string;\n incrementButtonAriaLabel?: string;\n decrementButtonAriaLabel?: string;\n editOrderTemplateLineQuantityError?: string;\n unavailableProductErrorMessage?: string;\n outOfStockProductErrorMessage?: string;\n };\n index: number;\n isMobile: boolean;\n productQuantityView?: React.ReactNode;\n addToBagButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n toggleDetailsDisplayed(props: IOrderTemplateLineProps): void;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n catalogs?: ProductCatalog[];\n error?: string;\n shouldDisable?: boolean;\n}\n\nexport interface IOrderTemplateLineViewProps {\n key?: string;\n productImage: React.ReactNode;\n productPrice?: React.ReactNode;\n addToBagButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n productName?: string;\n productNumber?: React.ReactNode;\n productInfo?: React.ReactNode;\n productLabel?: React.ReactNode;\n productUnitOfMeasure?: React.ReactNode;\n productQuantity?: number;\n productQuantityView?: React.ReactNode;\n productListId?: string;\n selectLine?: React.ReactNode;\n popUp?: JSX.Element;\n extraActionsPopup?: JSX.Element | null | undefined;\n isMobile?: boolean;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n productLineCatalog?: React.ReactNode;\n disabled?: boolean;\n}\n\ninterface IEventHandlerFactory {\n getAddToBag(): (event: React.MouseEvent) => void;\n getRemoveItem(): (event: React.MouseEvent) => void;\n}\n\nconst OrderTemplateLineActions = (props: IOrderTemplateLineProps): IEventHandlerFactory => {\n const { orderTemplateLine, productListLine, quantity, handlers } = props;\n const { LineId, CatalogId } = productListLine;\n const { onAddToBag, onRemoveItem } = handlers;\n\n return {\n getAddToBag: () => (event: React.MouseEvent) => {\n LineId &&\n orderTemplateLine.fullProduct &&\n onAddToBag(orderTemplateLine.fullProduct.ProductDetails, quantity, LineId, CatalogId);\n },\n getRemoveItem: () => (event: React.MouseEvent) => LineId && onRemoveItem(props.orderTemplateLine)\n };\n};\n\ninterface IPopupProps extends IOrderTemplateLineProps {\n addButtonClassName: string;\n removeButtonClassName: string;\n}\n\nconst PopUp = (props: IPopupProps): JSX.Element | null => {\n const { addToBagButtonText, removeFromOrderTemplateLinesText, moreButtonText, viewProductDetailsText } = props.resources;\n const [showMobile, setShowMobile] = useState(false);\n const componentClassName = 'ms-table';\n\n const getViewHandler = () => (event: React.MouseEvent) => {\n props.toggleDetailsDisplayed(props);\n };\n\n const toggle = React.useCallback(() => {\n setShowMobile(!showMobile);\n }, [showMobile]);\n\n return (\n
    \n \n {showMobile && (\n
    \n \n View\n \n {getActionButton(\n props.isMobile,\n props.removeButtonClassName,\n removeFromOrderTemplateLinesText,\n OrderTemplateLineActions(props).getRemoveItem()\n )}\n {getActionButton(\n props.isMobile,\n props.addButtonClassName,\n addToBagButtonText,\n OrderTemplateLineActions(props).getAddToBag()\n )}\n
    \n )}\n
    \n );\n};\n\nconst getActionButton = (\n isMobile: boolean,\n className: string,\n buttonText: string,\n clickHandler: (event: React.MouseEvent) => void\n): React.ReactNode => (\n \n);\n\nconst getDesktopActionButton = (\n className: string,\n buttonText: string,\n clickHandler: (event: React.MouseEvent) => void\n): React.ReactNode => (\n \n);\n/**\n * On Select line function.\n * @param orderTemplateLine -Order template line.\n * @param input -Order template line props.\n * @returns Set on select order template.\n */\nconst onSelectLineHandler = (orderTemplateLine: IOrderTemplateLineViewModel, input: IOrderTemplateLineProps) => (\n event: React.ChangeEvent\n) => {\n orderTemplateLine.isChecked = !orderTemplateLine.isChecked;\n\n input.handlers.onSelect(orderTemplateLine, event.target.checked);\n};\n\nexport const OrderTemplateLineView = (input: IOrderTemplateLineProps): IOrderTemplateLineViewProps | null => {\n const {\n orderTemplateLine,\n productListLine,\n price,\n context,\n imageSettings,\n quantity,\n resources,\n isMobile,\n isMultipleCatalogFeatureEnabledInHq\n } = input;\n const product = orderTemplateLine.fullProduct;\n const { LineId, UnitOfMeasure } = productListLine;\n const { removeFromOrderTemplateLinesText, addToBagButtonText, selectOneRowText } = resources;\n if (!product) {\n return null;\n }\n\n const { ItemId, PrimaryImageUrl } = product.ProductDetails;\n const fallbackImage = getFallbackImageUrl(\n ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n );\n const addButtonClassName = input.isMobile ? 'ms-table__row-links-add' : 'ms-order-template-table-line__product-add-button';\n const removeButtonClassName = input.isMobile ? 'ms-table__row-links-delete' : 'ms-order-template-table-line__product-remove-button';\n\n return {\n isMobile,\n isMultipleCatalogFeatureEnabledInHq: isMultipleCatalogFeatureEnabledInHq,\n selectLine: (\n \n ),\n key: LineId!,\n productLineCatalog: isMultipleCatalogFeatureEnabledInHq && renderProductCatalog(input),\n productImage: _renderProductImage(\n 'ms-order-template-table-line__product-image',\n context,\n product.ProductDetails.Name!,\n PrimaryImageUrl,\n fallbackImage,\n imageSettings\n ),\n productInfo: renderProductInfo(input),\n productPrice: price && _renderPrice(input),\n productNumber: product && (\n <>\n
    {ItemId}
    \n {input.error !== 'NONE' ? (\n
    {_renderProductError(input)}
    \n ) : (\n undefined\n )}\n \n ),\n productUnitOfMeasure: price ? (\n
    {UnitOfMeasure || price.UnitOfMeasure}
    \n ) : (\n undefined\n ),\n productListId: LineId!,\n removeButton:\n !isMultipleCatalogFeatureEnabledInHq &&\n getActionButton(\n input.isMobile,\n removeButtonClassName,\n removeFromOrderTemplateLinesText,\n OrderTemplateLineActions(input).getRemoveItem()\n ),\n productQuantityView:
    {_generateQuantity(input, LineId!)}
    ,\n productQuantity: quantity,\n addToBagButton:\n !isMultipleCatalogFeatureEnabledInHq &&\n getActionButton(input.isMobile, addButtonClassName, addToBagButtonText, OrderTemplateLineActions(input).getAddToBag()),\n extraActionsPopup:\n !isMobile && isMultipleCatalogFeatureEnabledInHq ? (\n \n ) : (\n undefined\n ),\n popUp: ,\n disabled: input.shouldDisable\n };\n};\n\nconst ExtraActionsPopup = (props: IPopupProps): JSX.Element | null => {\n const [showActions, setShowActions] = useState(false);\n const toggle = React.useCallback(() => {\n setShowActions(!showActions);\n }, [showActions]);\n\n const className = 'ms-order-template-table-line__extra-actions-cell';\n const actionsContainerClassName = `${className}__actions-container`;\n return (\n
    \n
    \n );\n};\n\nexport const OrderTemplateMobileLineView = (input: IOrderTemplateLineProps): IOrderTemplateLineViewProps | undefined => {\n const { orderTemplateLine, productListLine, price, context, imageSettings, isMultipleCatalogFeatureEnabledInHq } = input;\n const product = orderTemplateLine.fullProduct;\n const { LineId, UnitOfMeasure } = productListLine;\n if (!product) {\n return;\n }\n const { ItemId, PrimaryImageUrl } = product.ProductDetails;\n const fallbackImage = getFallbackImageUrl(\n ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n );\n\n return {\n productLineCatalog: isMultipleCatalogFeatureEnabledInHq && renderProductCatalog(input),\n productImage: _renderProductImage(\n 'thumbnail',\n context,\n product.ProductDetails.Name!,\n PrimaryImageUrl,\n fallbackImage,\n imageSettings\n ),\n productInfo: renderProductInfo(input),\n productPrice: price && _renderPrice(input),\n productNumber: ItemId,\n productUnitOfMeasure: UnitOfMeasure || price?.UnitOfMeasure,\n productQuantityView: _generateQuantity(input, LineId!)\n };\n};\n\nexport interface IOrderTemplateProductQuantityViewProps {\n ContainerProps: INodeProps;\n input: React.ReactNode;\n}\n\n/**\n * On Change function.\n * @param onChangeQuantity -On change quantity function.\n * @param itemKey -String.\n * @param props -Order template line props.\n * @returns Set change quantity.\n */\nconst onChangeHandler = (\n onChangeQuantity: (orderTemplateLineId: string, quantity: number, props?: IOrderTemplateLineProps | undefined) => void,\n itemKey: string,\n props: IOrderTemplateLineProps\n) => (newValue: number) => {\n if (onChangeQuantity) {\n onChangeQuantity(itemKey, newValue, props);\n }\n};\n\nconst _generateQuantity = (props: IOrderTemplateLineProps, itemKey: string): React.ReactNode => {\n const { handlers, resources, quantity } = props;\n const { onChangeQuantity } = handlers;\n return (\n \n );\n};\n\nexport const _renderProductImage = (\n className: string,\n context: ICoreContext,\n heading: string,\n image?: string,\n fallbackImage?: string,\n imageSettings?: IImageSettings\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n lg: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n xl: { q: 'w=64&h=64&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n};\n\nexport const renderProductCatalog = (props: IOrderTemplateLineProps) => {\n const catalogId = props.productListLine.CatalogId;\n validateCatalogId(catalogId);\n\n if (!props.context.request.user.isB2b || !catalogId || !ArrayExtensions.hasElements(props.catalogs)) {\n return null;\n }\n\n const catalog = props.catalogs.find(item => item.RecordId === catalogId);\n\n if (!catalog || !catalog.Name) {\n return null;\n }\n\n return
    {catalog.Name}
    ;\n};\n\nconst _renderPrice = (props: IOrderTemplateLineProps): JSX.Element | null => {\n const { price, context, moduleId, moduleTypeName, resources } = props;\n\n if (price) {\n return (\n \n );\n }\n return null;\n};\n\nconst _renderProductDimensions = (props: IOrderTemplateLineProps): (string | undefined)[] => {\n const { orderTemplateLine } = props;\n\n if (!orderTemplateLine.fullProduct || !orderTemplateLine.fullProduct.ProductDetails.Dimensions) {\n return [];\n }\n\n return orderTemplateLine.fullProduct.ProductDetails.Dimensions.map(dimension => {\n if (!dimension.DimensionValue || !dimension.DimensionValue.Value) {\n return undefined;\n }\n\n return dimension.DimensionValue.Value;\n });\n};\n\nconst _renderProductError = (props: IOrderTemplateLineProps) => {\n const { error, resources } = props;\n\n if (!error) {\n return '';\n }\n\n const errorMessages = {\n OOS: resources.outOfStockProductErrorMessage,\n UNASSORTED: resources.unavailableProductErrorMessage,\n NONE: ''\n };\n\n return errorMessages[error];\n};\n\nexport const renderProductInfo = (props: IOrderTemplateLineProps): React.ReactNode | undefined => {\n const { orderTemplateLine, productUrl } = props;\n const name = orderTemplateLine.fullProduct?.ProductDetails.Name;\n\n const dimensions = _renderProductDimensions(props);\n if (!orderTemplateLine.fullProduct) {\n return [];\n }\n\n const productName = productUrl ? (\n \n {name}\n \n ) : (\n
    {name}
    \n );\n\n const dimensionsLine: string = dimensions.join(', ');\n\n return (\n
    \n
    {productName}
    \n
    {dimensionsLine}
    \n
    \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { orderTemplateLinesStatus } from '../order-template';\n\nexport interface IOrderTemplateLinesStatusMessageProps {\n className?: string;\n errorType: orderTemplateLinesStatus;\n text?: string;\n}\n\nexport const OrderTemplateLinesStatusMessage: React.FC = ({ className, errorType, text }) => {\n switch (errorType) {\n case 'EMPTY':\n return

    {text}

    ;\n case 'FAILED':\n return

    {text}

    ;\n case 'LOADING':\n default:\n return

    {text}

    ;\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { IOrderTemplateLineViewModel } from '../order-template';\n\nexport interface IOrderTemplateTableHeadingProps {\n selectAllRowsText?: string;\n productNumber: string;\n productName: string;\n productUnitPrice: string;\n productUOM: string;\n productQuantity: string;\n productActions: string;\n lines: IOrderTemplateLineViewModel[];\n isMobile: boolean;\n clickHandler(isChecked: boolean): void;\n productImage?: string;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n productLineCatalogName?: string;\n}\n\n/**\n * Order Template's table state.\n */\nexport interface IOrderTemplateTableHeadingState {\n isChecked: boolean;\n}\n\nexport interface IOrderTemplateTableShortHeading {\n productNumber: string;\n productActions: string;\n}\n\n/**\n * Order Template's table heading.\n */\nexport class OrderTemplateTableHeading extends React.PureComponent {\n public state: IOrderTemplateTableHeadingState = {\n isChecked: false\n };\n\n private readonly componentClassName: string = 'ms-table';\n\n public static getDerivedStateFromProps(\n props: IOrderTemplateTableHeadingProps,\n state: IOrderTemplateTableHeadingState\n ): IOrderTemplateTableHeadingState {\n const checkedLines = props.lines.filter(line => !line.isChecked).length;\n let nextState = { ...state };\n nextState = { isChecked: checkedLines === 0 };\n return nextState;\n }\n\n public getOnChange = () => (event: React.ChangeEvent) => {\n this.setState(\n {\n isChecked: this.state.isChecked\n },\n () => {\n this.props.clickHandler(!this.state.isChecked);\n }\n );\n };\n\n public render(): JSX.Element {\n return (\n \n \n \n \n \n {!this.props.isMobile && this.props.isMultipleCatalogFeatureEnabledInHq ? (\n {this.props.productLineCatalogName}\n ) : null}\n {!this.props.isMobile ? {this.props.productImage} : null}\n {this.props.productNumber}\n {!this.props.isMobile ? {this.props.productName} : null}\n {!this.props.isMobile ? {this.props.productUnitPrice} : null}\n {!this.props.isMobile ? {this.props.productUOM} : null}\n {!this.props.isMobile ? {this.props.productQuantity} : null}\n {!this.props.isMobile ? {this.props.productActions} : }\n \n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IItemAddedToCartDialogData,\n IItemAddedToCartDialogResources,\n ILinesAddedToCartDialogResources,\n IOrderTemplateNameDialogResources,\n ItemAddedToCartDialog\n} from '@msdyn365-commerce/components';\nimport MsDyn365, { AsyncResult, getCatalogId, getUrlSync, ICoreContext, IRequestContext } from '@msdyn365-commerce/core';\nimport { ICartActionResult } from '@msdyn365-commerce/global-state';\nimport { ProductList, ProductListLine } from '@msdyn365-commerce/retail-proxy';\nimport {\n deleteAsync,\n removeProductListLinesAsync,\n updateProductListLinesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { FeatureState, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n ArrayExtensions,\n createGetFeatureStateInput,\n getFeatureState,\n getPriceForSelectedVariant,\n getProductUrlSync,\n ObjectExtensions,\n OrderTemplate,\n OrderTemplateLine,\n PriceForSelectedVariantInput,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Alert,\n getTelemetryObject,\n Heading,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n UncontrolledPagination\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport debounce from 'lodash/debounce';\nimport { action, computed, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n IOrderTemplateActionsProps,\n IOrderTemplateActionsViewProps,\n IOrderTemplateLineProps,\n IOrderTemplateLineViewProps,\n IOrderTemplateTableHeadingProps,\n OrderTemplateActionsView,\n OrderTemplateLinesStatusMessage,\n OrderTemplateLineView,\n OrderTemplateMobileLineView,\n OrderTemplateTableHeading\n} from '../..';\nimport { ActiveOrderTemplateLinesInput } from './actions/get-order-template';\nimport { OrderTemplateBulkActions } from './components/bulk-actions';\nimport { IOrderTemplateData } from './order-template.data';\nimport { IOrderTemplateProps, IOrderTemplateResources } from './order-template.props.autogenerated';\nimport Spinner from './components/add-line/spinner';\n\nexport interface IOrderTemplateLineActionMessageState {\n itemKey: string;\n userMessage: string;\n statusCssString: string;\n messageGlyph: string;\n isOpen: boolean;\n isItemAddedToOrderTemplateOpen: boolean;\n isConfirmAddSelectionToBagModalOpen: boolean;\n itemAddedToCartDialogData?: IItemAddedToCartDialogData;\n productSelection: IOrderTemplateLineViewModel[];\n isDetailsDisplayed: boolean;\n detailedProductView?: IOrderTemplateLineViewProps;\n isQuantityDisabledForUpdate?: boolean;\n}\n\nexport type orderTemplateLinesStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface IOrderTemplateViewProps extends IOrderTemplateProps {\n OrderTemplateLines: IModuleProps;\n callbacks?: IOrderTemplateLinesCallbacks;\n status?: orderTemplateLinesStatus;\n statusMessage?: React.ReactNode;\n heading?: React.ReactNode;\n OrderTemplateActions?: INodeProps;\n ProductsTable?: INodeProps;\n ProductsTableRow?: INodeProps;\n ProductsTableHeading?: React.ReactNode;\n ProductDetails?: INodeProps;\n orderLines?: IOrderTemplateLineViewProps[];\n productListLines?: ProductListLine[];\n productsStatusMessage?: React.ReactNode;\n orderActions?: IOrderTemplateActionsViewProps | null;\n resources: IOrderTemplateResources;\n pagination?: React.ReactNode;\n itemAddedToCartDialog?: React.ReactNode;\n bulkOrderLineActions?: React.ReactNode;\n isDetailsDisplayed?: boolean;\n detailedProduct?: IOrderTemplateLineProps;\n detailedProductView?: IOrderTemplateLineViewProps;\n productQuantityView?: React.ReactNode;\n addButton?: React.ReactNode;\n isMobile?: boolean;\n toggleDetailsDisplayed?(props: IOrderTemplateLineProps | undefined): void;\n}\n\nexport interface IOrderTemplateLinesCallbacks {\n updateQuantity(itemKey: string, quantity: number): void;\n}\n\nexport interface IOrderTemplateLineViewModel extends OrderTemplateLine {\n isChecked: boolean;\n productQuantityView: React.ReactNode;\n}\n\n/**\n *\n * OrderTemplateLines component.\n * @extends {React.PureComponent, IOrderTemplateLineActionMessageState>}\n */\n@observer\nclass OrderTemplateLines extends React.Component, IOrderTemplateLineActionMessageState> {\n private readonly className: string;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable\n private _viewport: GridSize;\n\n @computed get isMobile(): boolean {\n return this._viewport === 'xs' || this._viewport === 'sm';\n }\n\n constructor(props: IOrderTemplateProps, state: IOrderTemplateLineActionMessageState) {\n super(props);\n this.className = 'ms-order-template';\n this._viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._updateViewport = this._updateViewport.bind(this);\n\n this.state = {\n itemKey: '',\n userMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: false,\n isItemAddedToOrderTemplateOpen: false,\n isConfirmAddSelectionToBagModalOpen: false,\n productSelection: [],\n isDetailsDisplayed: false,\n isQuantityDisabledForUpdate: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this._updateViewport();\n\n if (MsDyn365.isBrowser && !this.props.context.request.user.isAuthenticated && !this.props.context.request.params.isEditor) {\n window.location.assign(this.props.context.request.user.signInUrl || '/');\n }\n }\n\n @action\n public async componentDidMount(): Promise {\n this.setState({});\n const orderTemplate = await this.props.data.orderTemplate;\n this.props.config.heading!.text = orderTemplate?.productList.Name || '';\n this.setState({\n productSelection: orderTemplate?.orderTemplateLines as IOrderTemplateLineViewModel[]\n });\n\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', this._updateViewport);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this._updateViewport);\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IOrderTemplateProps,\n nextState: IOrderTemplateLineActionMessageState\n ): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { heading, className } = this.props.config;\n const { emptyOrderTemplateLinesText, errorGettingOrderTemplateLines } = this.props.resources;\n const { orderTemplate, cart } = this.props.data;\n\n if (cart.status === 'LOADING' || ObjectExtensions.isNullOrUndefined(orderTemplate) || orderTemplate.status === 'LOADING') {\n const errorProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(this.className, className)\n },\n status: 'LOADING',\n statusMessage: ,\n heading: heading && ,\n resources: this.props.resources\n };\n return this.props.renderView(errorProps);\n }\n\n if (cart.status === 'FAILED' || orderTemplate.status === 'FAILED') {\n const errorProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(`${this.className}`, className)\n },\n status: 'FAILED',\n statusMessage: ,\n heading: heading && ,\n resources: this.props.resources\n };\n\n return this.props.renderView(errorProps);\n }\n\n const orderTemplateResult = orderTemplate && orderTemplate.result;\n const orderTemplateLines = orderTemplateResult && orderTemplateResult.orderTemplateLines;\n\n if (!orderTemplateResult || !orderTemplateLines || orderTemplateLines.length === 0) {\n if (orderTemplateResult && !this._isFirstPage() && MsDyn365.isBrowser) {\n window.location.href = this._getOrderTemplatePageUrl();\n return null;\n }\n\n const emptyViewProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(`${this.className}`, className)\n },\n status: 'EMPTY',\n statusMessage: ,\n heading: heading && ,\n resources: this.props.resources,\n orderActions:\n orderTemplateResult &&\n this._renderOrderTemplateActions(orderTemplateResult, this._isChannelMultipleCatalogsFeatureEnabled()),\n bulkOrderLineActions: orderTemplateResult && this._getOrderTemplateLineActions(orderTemplateResult.productList.Id),\n OrderTemplateActions: {\n className: `${this.className}-action-bar`,\n tag: 'div'\n }\n };\n\n return this.props.renderView(emptyViewProps);\n }\n\n const viewProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(`${this.className}`, className)\n },\n status: 'SUCCESS',\n productsStatusMessage: this.state.isOpen && (\n
    \n \n {this.state.userMessage}\n \n
    \n ),\n heading: heading && ,\n OrderTemplateActions: {\n className: `${this.className}-action-bar`,\n tag: 'div'\n },\n ProductsTable: {\n className: `${this.className}__table`,\n tag: 'table',\n role: 'grid'\n },\n ProductsTableRow: {\n className: `${this.className}-table-line`,\n tag: 'tr'\n },\n ProductsTableHeading: this._renderProductListHeader(this.props.resources),\n ProductDetails: {\n className: `${this.className}-table-line__link`,\n tag: 'a'\n },\n orderLines: this._renderProductList(),\n callbacks: { updateQuantity: debounce(this._changeQuantity, 2000) },\n orderActions: this._renderOrderTemplateActions(orderTemplateResult, this._isChannelMultipleCatalogsFeatureEnabled()),\n pagination: this._renderPagination(),\n itemAddedToCartDialog: this._renderItemAddedToCartDialog(),\n bulkOrderLineActions: this._getOrderTemplateLineActions(orderTemplateResult.productList.Id),\n isDetailsDisplayed: this.state.isDetailsDisplayed,\n toggleDetailsDisplayed: this._toggleDetailsDisplayed,\n detailedProductView: this.state.detailedProductView,\n isMobile: this.isMobile\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public onSelect(line: IOrderTemplateLineViewModel, isChecked: boolean): void {\n line.isChecked = isChecked;\n\n const updated =\n this.state.productSelection.map(product => {\n if (product.fullProduct?.ProductDetails.ItemId === line.fullProduct?.ProductDetails.ItemId) {\n line.isChecked = isChecked;\n }\n return product;\n }) || [];\n\n this.setState({\n productSelection: updated\n });\n }\n\n public onSelectAll(isChecked: boolean): void {\n const updated =\n this.state.productSelection.map(line => {\n line.isChecked = isChecked;\n return line;\n }) || [];\n\n this.setState({\n productSelection: updated\n });\n }\n\n private _renderProductListHeader(resources: IOrderTemplateResources): React.ReactNode {\n const {\n productImage,\n productNumberText,\n productText,\n productUnitPriceText,\n productUOMText,\n productQuantityText,\n productActionsText,\n selectAllRowsText,\n productLineCatalogName\n } = resources;\n const headers: IOrderTemplateTableHeadingProps = {\n productImage: productImage,\n productNumber: productNumberText,\n productName: productText,\n productUnitPrice: productUnitPriceText,\n productUOM: productUOMText,\n productQuantity: productQuantityText,\n productActions: productActionsText,\n selectAllRowsText,\n lines: this.state.productSelection,\n isMobile: this.isMobile,\n clickHandler: (isChecked: boolean) => {\n this.onSelectAll(isChecked);\n },\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled(),\n productLineCatalogName: productLineCatalogName\n };\n\n return ;\n }\n\n private _getOrderTemplateLineActions(orderTemplateId: string): React.ReactNode {\n return (\n line.isChecked)}\n onAddSelectionToBag={this._onAddSelectionToBag}\n onRemoveSelection={this._onRemoveSelection}\n isMinifiedView={this.isMobile}\n isMultipleCatalogFeatureEnabledInHq={this._isChannelMultipleCatalogsFeatureEnabled()}\n telemetryContent={this.telemetryContent}\n />\n );\n }\n\n private _generateLinesAddedToCartDialogResources(): ILinesAddedToCartDialogResources {\n return {\n viewCartButtonText: this.props.resources.viewCartButtonText,\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\n linesAddedToCartHeaderItemsOneText: this.props.resources.linesAddedToCartHeaderItemsOneText,\n linesAddedToCartHeaderLinesOneText: this.props.resources.linesAddedToCartHeaderLinesOneText,\n linesAddedToCartHeaderLinesFormatText: this.props.resources.linesAddedToCartHeaderLinesFormatText,\n linesAddedToCartHeaderMessageText: this.props.resources.linesAddedToCartHeaderMessageText\n };\n }\n\n private _generateItemAddedToCartDialogResources(): IItemAddedToCartDialogResources {\n return {\n viewCartButtonText: this.props.resources.viewCartButtonText,\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\n itemAddedToCartHeaderItemOneText: this.props.resources.itemAddedToCartHeaderItemOneText,\n itemAddedToCartHeaderItemFormatText: this.props.resources.itemAddedToCartHeaderItemFormatText,\n itemAddedToCartHeaderMessageText: this.props.resources.itemAddedToCartHeaderMessageText,\n freePriceText: this.props.resources.freePriceText,\n originalPriceText: this.props.resources.originalPriceText,\n currentPriceText: this.props.resources.currentPriceText\n };\n }\n\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (this.props.data.featureState) {\n isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n return isMultipleCatalogFeatureEnabledInHq;\n };\n\n private readonly _onRemoveSelection = (): void => {\n const { context, resources } = this.props;\n const { telemetry } = context;\n const { removeSelectedFailureMessage, removeSelectedSuccessMessage } = resources;\n const lines = this.state.productSelection;\n const productListLines = lines && lines.length && lines.filter(line => line.isChecked).map(line => line.productListLine);\n\n if (productListLines && productListLines.length > 0) {\n const productListId = productListLines[0].ProductListId;\n\n const maxWaitTimeInMilliSeconds: number = 1000;\n removeProductListLinesAsync({ callerContext: context.actionContext }, productListId!, productListLines)\n .then(async () => {\n this.setState({\n userMessage: removeSelectedSuccessMessage,\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: true\n });\n // eslint-disable-next-line no-promise-executor-return -- fix\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\n window.location.reload();\n })\n .catch(error => {\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\n telemetry.error(error);\n this.setState({\n userMessage: removeSelectedFailureMessage,\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: true\n });\n });\n }\n };\n\n private readonly _getOrderTemplatePageUrl = (): string => {\n let url = getUrlSync('ordertemplate', this.props.context.actionContext) || '';\n url = url.includes('?') ? url.substr(0, url.indexOf('?')) : url;\n if (this.props.data.orderTemplate?.result?.productList.Id) {\n return `${url}?id=${this.props.data.orderTemplate.result.productList.Id}`;\n }\n return '';\n };\n\n private readonly _onAddSelectionToBag = async (): Promise => {\n const lines = this.state.productSelection;\n const selectedLines = lines.filter(line => line.isChecked);\n if (selectedLines.length > 0) {\n for (const productLine of selectedLines) {\n const itemKey = productLine.fullProduct?.ProductDetails.ItemId ?? '';\n const product = productLine.fullProduct?.ProductDetails ?? {\n RecordId: 0,\n ProductTypeValue: 0,\n BasePrice: 0,\n Price: 0,\n AdjustedPrice: 0\n };\n const quantity = productLine.productListLine.Quantity ?? 0;\n if (this._isChannelMultipleCatalogsFeatureEnabled()) {\n const catalogId = productLine.productListLine.CatalogId;\n await this._addItemToBag(product, quantity, itemKey, catalogId);\n } else {\n await this._addItemToBag(product, quantity, itemKey);\n }\n }\n }\n return Promise.resolve(void 0);\n };\n\n private _renderOrderTemplateActions(\n orderTemplate: OrderTemplate,\n isMultipleCatalogFeatureEnabledInHq: boolean\n ): IOrderTemplateActionsViewProps {\n const { id, typeName, context, resources } = this.props;\n const {\n addTemplateToBagButtonText,\n renameTemplateButtonText,\n deleteTemplateButtonText,\n closeWindowButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n orderTemplateErrorMessage\n } = resources;\n\n const orderTemplateActions: IOrderTemplateActionsProps = {\n data: { orderTemplate },\n id,\n typeName,\n context,\n telemetryContent: this.telemetryContent,\n handlers: {\n onRenameTemplate: this._renameTemplate,\n onRemoveTemplate: this._removeTemplate\n },\n isMultipleCatalogFeatureEnabledInHq,\n renameOrderTemplateDialogStrings: this._generateOrderTemplateNameDialogResources(resources),\n resources: {\n addTemplateToBagButtonText,\n renameTemplateButtonText,\n deleteTemplateButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n closeWindowButtonText,\n orderTemplateErrorMessage,\n linesAddedToCartDialogResources: this._generateLinesAddedToCartDialogResources()\n }\n };\n\n return OrderTemplateActionsView(orderTemplateActions);\n }\n\n private _generateOrderTemplateNameDialogResources(resources: IOrderTemplateResources): IOrderTemplateNameDialogResources {\n return {\n orderTemplateHeaderLabel: resources.renameOrderTemplateTitleText,\n orderTemplateTitleLabel: resources.orderTemplateTitle,\n orderTemplateNameAriaLabel: resources.orderTemplateTitle,\n orderTemplateDescription: '',\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\n orderTemplateButtonLabel: resources.renameOrderTemplateButtonText,\n orderTemplateCancelButtonLabel: resources.cancelBtnLabel\n };\n }\n\n private readonly _getCurrentUrl = (reqContext: IRequestContext): URL => {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n }\n return new URL(reqContext.url.requestUrl.href);\n };\n\n /**\n * On close handler.\n */\n private readonly onCloseHandler = () => {\n this.setState({\n itemKey: this.state.itemKey,\n userMessage: this.state.userMessage,\n statusCssString: this.state.statusCssString,\n messageGlyph: this.state.messageGlyph,\n isOpen: this.state.isOpen,\n isItemAddedToOrderTemplateOpen: false\n });\n };\n\n private readonly _renderItemAddedToCartDialog = (): React.ReactNode | null => {\n if (!this.state.itemAddedToCartDialogData) {\n return null;\n }\n const isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState?.result?.find(feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature')\n ?.IsEnabled || false;\n\n return (\n \n );\n };\n\n private _isFirstPage(): boolean {\n return this._getCurrentPageNumber() === 0;\n }\n\n private _getCurrentPageNumber(): number {\n const itemsPerPage = this.props.config.itemsPerPage || 50;\n return (this.props.context.request.query && +this.props.context.request.query.skip / itemsPerPage) || 0;\n }\n\n private readonly _renderPagination = (): React.ReactNode | null => {\n const { config, context, data, resources } = this.props;\n const orderTemplate = data && data.orderTemplate && data.orderTemplate.result;\n if (!orderTemplate) {\n return null;\n }\n\n const fullUrl = this._getCurrentUrl(context.request);\n const itemsPerPage = config.itemsPerPage || 50;\n const currentPageNumber = this._getCurrentPageNumber();\n const skipCount = currentPageNumber * itemsPerPage;\n const totalItems = orderTemplate && orderTemplate.totalLines;\n const previousText = resources.flipperPrevious;\n const nextText = resources.flipperNext;\n\n if (totalItems <= itemsPerPage) {\n return null;\n }\n\n return (\n \n );\n };\n\n private _renderProductList(): IOrderTemplateLineViewProps[] {\n const {\n selectOneRowText,\n moreButtonText,\n viewProductDetailsText,\n priceFree,\n originalPriceText,\n currentPriceText,\n addOrderTemplateItemToBagButtonText,\n removeItemFromOrderTemplateButtonText,\n productDimensionTypeColor,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n inputQuantityAriaLabel,\n deleteButtonText,\n incrementButtonAriaLabel,\n decrementButtonAriaLabel,\n unavailableProductErrorMessage,\n outOfStockProductErrorMessage\n } = this.props.resources;\n\n const { context, telemetry, data } = this.props;\n const { catalogs } = data;\n const { imageSettings } = this.props.config;\n\n return this.state.productSelection.map((line, index) => {\n const currentProductProps: IOrderTemplateLineProps = {\n orderTemplateLine: line,\n productListLine: line.productListLine,\n price: line.fullProduct?.ProductPrice,\n error: line.error,\n shouldDisable: line.shouldDisable,\n context,\n isQuantityDisabledForUpdate: this.state.isQuantityDisabledForUpdate,\n productUrl: line.fullProduct\n ? this._updateProductUrlCatalog(line.fullProduct.ProductDetails, context, line.productListLine.CatalogId)\n : '',\n imageSettings,\n telemetry,\n moduleId: this.props.id,\n moduleTypeName: this.props.typeName,\n quantity: line.productListLine.Quantity!,\n handlers: {\n onAddToBag: this._addItemToBag,\n onRemoveItem: this._removeItemFromOrderTemplateLines,\n onChangeQuantity: this._changeQuantity,\n onSelect: this.onSelect.bind(this)\n },\n resources: {\n selectOneRowText,\n moreButtonText,\n viewProductDetailsText,\n productDimensionTypeColor,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n freePriceText: priceFree,\n originalPriceText,\n currentPriceText,\n inputQuantityAriaLabel,\n removeFromOrderTemplateLinesText: removeItemFromOrderTemplateButtonText,\n addToBagButtonText: addOrderTemplateItemToBagButtonText,\n deleteButtonText,\n incrementButtonAriaLabel,\n decrementButtonAriaLabel,\n unavailableProductErrorMessage,\n outOfStockProductErrorMessage\n },\n index,\n isMobile: this.isMobile,\n toggleDetailsDisplayed: this._toggleDetailsDisplayed,\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled(),\n catalogs: catalogs && catalogs.result\n };\n\n return OrderTemplateLineView(currentProductProps)!;\n });\n }\n\n private readonly _toggleDetailsDisplayed = (props: IOrderTemplateLineProps): void => {\n let state = {\n isDetailsDisplayed: !this.state.isDetailsDisplayed\n };\n if (props) {\n state = {\n ...state,\n ...{\n detailedProductView: OrderTemplateMobileLineView(props)\n }\n };\n }\n this.setState(state);\n };\n\n // This method is used to update the product url with the catalogId\n private readonly _updateProductUrlCatalog = (\n productDetails: SimpleProduct,\n context: ICoreContext,\n catalogId: number | undefined\n ): string => {\n const productUrl = getProductUrlSync(productDetails, context.actionContext, undefined);\n if (!StringExtensions.isNullOrWhitespace(productUrl) && catalogId !== undefined) {\n const absoluteUrl = new URL(productUrl, window.location.href);\n absoluteUrl.searchParams.set('catalogid', `${catalogId ?? 0}`);\n return absoluteUrl.href;\n }\n\n return productUrl;\n };\n\n // Dismiss alert when addingToCart/removeItem\n private readonly _onDismiss = () => {\n this.setState({\n isOpen: false\n });\n };\n\n private readonly _changeQuantity = async (itemKey: string, quantity: number, props?: IOrderTemplateLineProps) => {\n const { context, data, telemetry, config, resources } = this.props;\n const { orderTemplate } = data;\n\n if (context) {\n if (orderTemplate?.result) {\n const orderTemplateLinesData = orderTemplate.result.orderTemplateLines;\n if (orderTemplateLinesData) {\n const orderLineIndex = orderTemplateLinesData.findIndex(\n (lines: OrderTemplateLine) => lines.productListLine.LineId === itemKey\n );\n const newProductListLine = { ...orderTemplateLinesData[orderLineIndex] };\n if (orderTemplateLinesData[orderLineIndex].productListLine.Quantity === quantity) {\n return;\n }\n const prevQuantity = newProductListLine.productListLine.Quantity;\n newProductListLine.productListLine.Quantity = quantity;\n const { fullProduct, ...line } = newProductListLine;\n\n // Update mobile modal\n if (props) {\n props.quantity = quantity;\n this.setState({\n detailedProductView: OrderTemplateMobileLineView(props)\n });\n }\n\n this.setState({\n isQuantityDisabledForUpdate: true\n });\n\n updateProductListLinesAsync({ callerContext: context.actionContext }, orderTemplate.result.productList.Id, [\n line.productListLine\n ])\n .then(list => {\n this.setState({\n itemKey,\n userMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isQuantityDisabledForUpdate: false,\n isOpen: false\n });\n if (list) {\n const newLine = list.find(lines => lines.LineId === itemKey);\n orderTemplateLinesData[orderLineIndex].productListLine = newLine!;\n const updatedLines = [...orderTemplateLinesData];\n updatedLines[orderLineIndex] = { fullProduct, productListLine: newLine! };\n const updatedOrderTemplate = { ...orderTemplate.result, ProductListLines: updatedLines };\n context.actionContext.update(\n new ActiveOrderTemplateLinesInput(context.actionContext.requestContext, config),\n updatedOrderTemplate\n );\n }\n })\n .catch(error => {\n telemetry.warning('[order-template-lines] Unable to update product quantity.');\n telemetry.error(error);\n const userMessage = resources.editOrderTemplateLineQuantityError;\n if (props) {\n props && (props.productListLine.Quantity = prevQuantity);\n this.setState({\n itemKey,\n userMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isQuantityDisabledForUpdate: false,\n isOpen: true,\n detailedProductView: OrderTemplateMobileLineView(props)\n });\n } else {\n newProductListLine.productListLine.Quantity = prevQuantity;\n this.setState({\n itemKey,\n userMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isQuantityDisabledForUpdate: false,\n isOpen: true\n });\n }\n });\n }\n }\n }\n };\n\n private readonly _addItemToBag = async (\n product: SimpleProduct,\n quantity: number,\n itemKey: string,\n catalogId?: number | undefined\n ): Promise => {\n const { context, data, resources, telemetry } = this.props;\n const { cart } = data;\n const { maxQuantityLimitText, addedToCartFailureMessage } = resources;\n\n if (context) {\n if (cart.result) {\n const addProductToCartInput = {\n product,\n count: quantity,\n catalogId\n };\n\n await cart.result\n .addProductToCart(addProductToCartInput)\n .then((result: ICartActionResult) => {\n if (result.status === 'SUCCESS') {\n return getPriceForSelectedVariant(\n new PriceForSelectedVariantInput(\n product.RecordId,\n this.props.context.actionContext.requestContext.apiSettings.channelId,\n product\n ),\n this.props.context.actionContext\n ).then(priceResult => {\n if (!priceResult) {\n return AsyncResult.reject('Failed to retrieve product price');\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- read config file.\n const isMiniCart = context.app.config.addToCartBehavior === 'showMiniCart';\n this.setState({\n itemKey,\n userMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: false,\n isItemAddedToOrderTemplateOpen: !isMiniCart,\n itemAddedToCartDialogData: {\n product,\n productPrice: priceResult,\n quantity\n },\n isDetailsDisplayed: false\n });\n return AsyncResult.resolve();\n });\n } else {\n switch (result.substatus) {\n case 'MAXQUANTITY':\n if (context.app.config.maxQuantityForCartLineItem) {\n const cartLineQuantity: number | undefined =\n cart.result?.cart.CartLines &&\n cart.result?.cart.CartLines.find(result => result.ProductId === product.RecordId)?.Quantity;\n const defaultMessage = `You can only add ${context.app.config.maxQuantityForCartLineItem} of this item to your shopping bag`;\n this.setState({\n itemKey,\n userMessage:\n cartLineQuantity !== undefined\n ? maxQuantityLimitText\n .replace('{curQuantity}', cartLineQuantity.toString())\n .replace(\n '{maxQuantity}',\n context.app.config.maxQuantityForCartLineItem.toString()\n ) || defaultMessage\n : defaultMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n } else {\n const defaultMessage = `Max quantity for cart line item is undefined. Please define in configuration settings.`;\n this.setState({\n itemKey,\n userMessage: defaultMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n }\n case 'INVOICEINCART': {\n this.setState({\n itemKey,\n userMessage: result.errorDetails?.LocalizedMessage || addedToCartFailureMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n }\n default:\n telemetry.debug('[order-template-lines] Unable to Update Cart Line from the order template lines');\n this.setState({\n itemKey,\n userMessage: addedToCartFailureMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n }\n }\n })\n .catch((error: Error) => {\n telemetry.warning(error.message);\n telemetry.debug('[order-template-lines] Error trying to Update Cart Line from the order template lines');\n if (StringExtensions.isNullOrWhitespace(error.message)) {\n this.setState({\n itemKey,\n userMessage: error.message,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n } else {\n this.setState({\n itemKey,\n userMessage: addedToCartFailureMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n }\n });\n }\n }\n };\n\n private readonly _removeItemFromOrderTemplateLines = async (line: IOrderTemplateLineViewModel) => {\n const { context, data, telemetry } = this.props;\n const { orderTemplate } = data;\n\n if (context && context.actionContext) {\n const maxWaitTimeInMilliSeconds: number = 1000;\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && orderTemplate?.result && line) {\n const featureStates = await getFeatureState(createGetFeatureStateInput(context.actionContext), context.actionContext);\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (ArrayExtensions.hasElements(featureStates)) {\n isMultipleCatalogFeatureEnabledInHq =\n featureStates.find(\n (featureState: FeatureState) => featureState.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n const catalogId = getCatalogId(context.actionContext.requestContext);\n if (isMultipleCatalogFeatureEnabledInHq) {\n line.productListLine.CatalogId = catalogId;\n }\n removeProductListLinesAsync({ callerContext: context.actionContext }, line.productListLine.ProductListId!, [\n line.productListLine\n ])\n .then(async () => {\n // eslint-disable-next-line no-promise-executor-return -- fix\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\n window.location.reload();\n })\n .catch(error => {\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\n telemetry.error(error);\n });\n } else {\n telemetry.warning(\n '[order-template-lines] Unable remove items from the order template lines user token or lineItemID was not found'\n );\n }\n }\n };\n\n private readonly _renameTemplate = async (_template: ProductList): Promise => {\n window.location.reload();\n return Promise.resolve();\n };\n\n private readonly _removeTemplate = () => {\n const { context, data, telemetry, resources } = this.props;\n const { orderTemplate } = data;\n\n if (context && context.actionContext) {\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && orderTemplate && orderTemplate.result) {\n deleteAsync({ callerContext: context.actionContext }, orderTemplate.result.productList)\n .then()\n .catch((error: string) => {\n telemetry.warning('[order-template] Unable to delete order template.');\n telemetry.error(error);\n this.setState({\n itemKey: orderTemplate.result?.productList.Id || '',\n userMessage: resources.deleteOrderTemplateFailedText,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n });\n const newLink = getUrlSync('ordertemplatelist', this.props.context.actionContext);\n if (newLink) {\n window.location.assign(newLink);\n }\n } else {\n telemetry.warning('[order-template] Failed to delete order template. Order template was not found');\n }\n } else {\n telemetry.warning('[order-template] Failed to delete order template.');\n }\n };\n\n private _updateViewport(): void {\n this._viewport = this._getViewport();\n }\n\n private readonly _getViewport = (): GridSize => {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n };\n\n /**\n * Renders a Pagination previous text.\n * @param paginationPreviousText - Pagination previous text from resources.\n * @returns Previous text and flipper icon.\n */\n private readonly _renderPrev = (paginationPreviousText: string) => {\n return (\n
    \n
    \n );\n };\n\n /**\n * Renders a Pagination next text.\n * @param paginationNextText - Pagination next text from resources.\n * @returns Next text and flipper icon.\n */\n private readonly _renderNext = (paginationNextText: string) => {\n return (\n
    \n {paginationNextText}\n
    \n );\n };\n}\n\nexport default OrderTemplateLines;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps, Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateLineViewProps } from './components';\nimport { IOrderTemplateViewProps } from './order-template';\n\nconst OrderTemplateLinesView: React.FC = (props: IOrderTemplateViewProps) => {\n const {\n OrderTemplateLines,\n status,\n statusMessage,\n heading,\n ProductsTable,\n ProductsTableHeading,\n orderLines,\n ProductsTableRow,\n productsStatusMessage,\n OrderTemplateActions,\n orderActions,\n pagination,\n itemAddedToCartDialog,\n bulkOrderLineActions,\n isDetailsDisplayed,\n detailedProductView,\n toggleDetailsDisplayed,\n resources: {\n cancelBtnLabel,\n productNumberText,\n productText,\n productUnitPriceText,\n productUOMText,\n productQuantityText,\n productLineCatalogName\n }\n } = props;\n\n const toggleDetails = React.useCallback(() => {\n toggleDetailsDisplayed && toggleDetailsDisplayed(undefined);\n }, [toggleDetailsDisplayed]);\n\n return (\n \n {heading}\n {OrderTemplateActions && (\n \n {orderActions?.addTemplateToBag}\n {orderActions?.renameTemplate}\n {orderActions?.removeTemplate}\n {orderActions?.actionsSplitButton}\n {!isDetailsDisplayed && productsStatusMessage}\n \n )}\n {bulkOrderLineActions}\n {status !== 'SUCCESS' && statusMessage}\n {ProductsTable && orderLines && orderLines.length > 0 && (\n \n \n {ProductsTableHeading}\n \n {orderLines &&\n orderLines.map(product => {\n return _renderItem(product, productQuantityText, ProductsTableRow);\n })}\n \n \n {pagination}\n \n )}\n {itemAddedToCartDialog}\n \n Product Details\n \n
      \n
    • {detailedProductView?.productImage}
    • \n
    • \n {productText}:\n {detailedProductView?.productInfo}\n
    • \n
    • \n {productLineCatalogName}:\n {detailedProductView?.productLineCatalog}\n
    • \n
    • \n {productNumberText}:\n {detailedProductView?.productNumber}\n
    • \n
    • \n {productUnitPriceText}:\n {` `}\n {detailedProductView?.productPrice}\n
    • \n
    • \n {productUOMText}:\n {` `}\n {detailedProductView?.productUnitOfMeasure}\n
    • \n
    • \n {productQuantityText}:\n {detailedProductView?.productQuantityView}\n
    • \n {productsStatusMessage &&
    • {productsStatusMessage}
    • }\n
    \n
    \n \n \n \n \n
    \n );\n};\n\nconst _renderItem = (product: IOrderTemplateLineViewProps, quantityLabel: string, ProductsTableRow?: INodeProps): JSX.Element | null => {\n if (!product) {\n return null;\n }\n\n const {\n key,\n selectLine,\n productLineCatalog,\n productImage,\n productPrice,\n productNumber,\n addToBagButton,\n removeButton,\n productInfo,\n productUnitOfMeasure,\n productQuantityView,\n productQuantity,\n popUp,\n isMobile,\n extraActionsPopup,\n isMultipleCatalogFeatureEnabledInHq,\n disabled\n } = product;\n\n const lineVisibility = disabled\n ? {\n pointerEvents: 'none',\n opacity: 0.5\n }\n : {\n pointerEvents: 'auto',\n opacity: 1\n };\n\n const disableElement: React.CSSProperties = lineVisibility as React.CSSProperties;\n\n return (\n \n {selectLine}\n {!isMobile && isMultipleCatalogFeatureEnabledInHq && {productLineCatalog}}\n {productImage}\n {isMobile ? (\n \n
    {productNumber}
    \n
    \n {quantityLabel}:{` `}\n {productQuantity}\n
    \n \n ) : (\n {productNumber}\n )}\n {!isMobile && {productInfo}}\n {!isMobile && {productPrice}}\n {!isMobile && {productUnitOfMeasure}}\n {!isMobile && {productQuantityView}}\n {isMobile && {popUp}}\n {!isMobile && !isMultipleCatalogFeatureEnabledInHq && (\n \n {addToBagButton}\n {removeButton}\n \n )}\n {extraActionsPopup}\n
    \n );\n};\n\nexport default OrderTemplateLinesView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, { getCatalogId, getUrlSync, IImageSettings, Image, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n convertProductDimensionTypeToDimensionTypes,\n getFallbackImageUrl,\n getProductUrlSync,\n ObjectExtensions,\n Random,\n StringExtensions,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { RemoveFromComparisonButtonComponent } from '../product-comparison';\nimport { ProductComparisonState } from '../product-comparison-state';\nimport {\n getProductsInPreviewProductComparisonAction,\n GetProductsInPreviewProductComparisonInput,\n IProductComparisonProductData\n} from './actions';\nimport { IProductComparisonPreviewData } from './product-comparison-preview.data';\nimport { IProductComparisonPreviewProps } from './product-comparison-preview.props.autogenerated';\n\n/**\n * Represents product comparison view props for main product info.\n */\nexport interface IProductComparisonPreviewProductMainInfo {\n productData: IProductComparisonProductData;\n productNameLink?: string;\n\n removeFromComparisonButton: React.ReactNode;\n productImage: React.ReactNode;\n productLink: React.ReactNode;\n}\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonPreviewViewProps extends IProductComparisonPreviewProps<{}> {\n moduleProps: IModuleProps;\n collapseButton: INodeProps;\n isMainContentReady: boolean;\n\n hasUserInteractedWithComparison?: boolean;\n isExpanded?: boolean;\n subheaderText?: string;\n productsMainInfo?: IProductComparisonPreviewProductMainInfo[];\n previewGreyPlaceHolders?: React.ReactNode;\n\n productComparisonLink?: string;\n goToComparisonButton?: React.ReactNode;\n clearAllButton?: React.ReactNode;\n\n handleCollapseClick?(): void;\n clearAllProductsFromTheComparison?(): void;\n removeProductFromList?(itemId: string): void;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewState {\n isExpanded?: boolean;\n productsData?: IProductComparisonProductData[];\n greyPlaceHoldersCount?: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewFullProps extends IProductComparisonPreviewProps {}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonPreview extends React.PureComponent {\n public static readonly className = 'ms-product-comparison-preview';\n\n public static readonly containerClassName = `${ProductComparisonPreview.className}__container`;\n\n public static readonly mainContainerClassName = `${ProductComparisonPreview.containerClassName}__main-container`;\n\n public static readonly headerClassName = `${ProductComparisonPreview.mainContainerClassName}__header`;\n\n public static readonly headerLabelClassName = `${ProductComparisonPreview.headerClassName}__label`;\n\n public static readonly tableClassName = `${ProductComparisonPreview.mainContainerClassName}__table`;\n\n public static readonly tableRowClassName = `${ProductComparisonPreview.tableClassName}__product-row`;\n\n public static readonly footerClassName = `${ProductComparisonPreview.mainContainerClassName}__footer`;\n\n public static readonly collapseButtonClassName = `${ProductComparisonPreview.headerClassName}__collapse`;\n\n public static _displayedInstanceId?: string;\n\n private readonly _instanceId: string;\n\n private _hasUserInteractedWithComparison: boolean;\n\n public constructor(props: IProductComparisonPreviewFullProps) {\n super(props);\n\n this.state = {};\n\n this._instanceId = `${ProductComparisonPreview.className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n ProductComparisonPreview._displayedInstanceId = this._instanceId;\n\n this._hasUserInteractedWithComparison = false;\n }\n\n public componentDidMount(): void {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return;\n }\n\n this._loadProducts();\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this._hasUserInteractedWithComparison = true;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Initialize data downloading.\n this._loadProducts();\n }\n }\n );\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return null;\n }\n\n const viewProps: IProductComparisonPreviewViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: ProductComparisonPreview.className,\n id: this._instanceId\n },\n collapseButton: this._renderCollapseButton(),\n isMainContentReady: false,\n hasUserInteractedWithComparison: this._hasUserInteractedWithComparison\n };\n\n const productData = this._getProdutComparisonDataByCatalogId(this.state.productsData ?? this.props.data.productsData?.result);\n\n if (!ArrayExtensions.hasElements(productData)) {\n return this.props.renderView(viewProps);\n }\n\n viewProps.isMainContentReady = true;\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit)) {\n viewProps.subheaderText = this.props.resources.productComparisonPreviewHeaderTextWithLimit\n .replace('{0}', productData.length.toString())\n .replace('{1}', productsLimit.toString());\n }\n\n viewProps.isExpanded = this.state.isExpanded;\n viewProps.handleCollapseClick = this._handleCollapseClick;\n viewProps.productsMainInfo = this._getProductsMainInfo(productData);\n viewProps.previewGreyPlaceHolders = this._renderGreyPlaceHolders(productData);\n viewProps.productComparisonLink = getUrlSync('product-comparison', this.props.context.actionContext);\n viewProps.clearAllProductsFromTheComparison = this._clearAllProductsFromTheComparison;\n viewProps.removeProductFromList = this._removeProductFromList;\n viewProps.goToComparisonButton = this._renderGoToComparisonButton(viewProps.productComparisonLink);\n viewProps.clearAllButton = this._renderClearAllButton();\n\n return this.props.renderView(viewProps);\n }\n private _getProdutComparisonDataByCatalogId(productData: IProductComparisonProductData[] | undefined): IProductComparisonProductData[] {\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const productByCatalogId = productData?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n private async _loadProducts(): Promise {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const input = new GetProductsInPreviewProductComparisonInput(items);\n const productData = await getProductsInPreviewProductComparisonAction(input, this.props.context.actionContext);\n const productDataByCatalogId = this._getProdutComparisonDataByCatalogId(productData);\n this.setState({ productsData: productDataByCatalogId });\n this._getGreyPlaceHoldersCount(productDataByCatalogId);\n }\n\n private _getGreyPlaceHoldersCount(productData: IProductComparisonProductData[]): number | undefined {\n if (productData && ArrayExtensions.hasElements(productData)) {\n const limit = this._getProductsLimit();\n if (limit && this.props.context.app.config.displayGreyPlaceHolders) {\n const placeHolder = limit - productData.length;\n this.setState({ greyPlaceHoldersCount: placeHolder });\n return placeHolder;\n }\n }\n return;\n }\n\n private _getProductsMainInfo(products: IProductComparisonProductData[]): IProductComparisonPreviewProductMainInfo[] {\n const productImageContainerClassName = `${ProductComparisonPreview.tableRowClassName}__product-image-container`;\n const productImageClassName = `${productImageContainerClassName}__product-image`;\n const productNameClassName = `${ProductComparisonPreview.tableRowClassName}__product-name`;\n\n return products.map(productData => {\n const product = productData.product;\n\n let productNameLink: string | undefined;\n if (msdyn365Commerce.isBrowser) {\n const productUrl = getProductUrlSync(product, this.props.context.actionContext);\n const fullUrl = new URL(productUrl, window.location.href);\n if (isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n fullUrl.searchParams.set('catalogid', `${productData.catalogId}`);\n }\n product.Dimensions?.map(dimension => {\n const dimensionValue = dimension.DimensionValue?.Value;\n if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue);\n fullUrl.searchParams.set(dimensionName, dimensionValue!);\n }\n });\n productNameLink = fullUrl.href;\n }\n\n return {\n productNameLink,\n productData,\n removeFromComparisonButton: (\n \n ),\n productImage: (\n \n {this._renderProductImage(productImageClassName, productData.product)}\n \n ),\n productLink: (\n \n {productData.product.Name}\n \n )\n };\n });\n }\n\n /**\n * Represents product comparison preview view.\n * @returns Elements.\n */\n private _renderGreyPlaceHolders = (productData: IProductComparisonProductData[]): React.ReactNode[] | undefined => {\n const counts = this.state.greyPlaceHoldersCount;\n if (this.props.context.app.config.displayGreyPlaceHolders && counts! > 0) {\n const elements = [];\n for (let index = 0; index < counts!; index++) {\n elements.push(\n \n
    \n \n );\n }\n return elements;\n }\n return;\n };\n\n /**\n * Removes the product from a list.\n * @param itemId - The id of a product to remove.\n */\n private readonly _removeProductFromList = (itemId: string): void => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(itemId);\n this.setState(previousState => {\n return {\n productsData: previousState.productsData?.filter(item => item.itemId !== itemId)\n };\n });\n };\n\n /**\n * Toggle collapsing.\n */\n private readonly _handleCollapseClick: () => void = () => {\n this.setState(previousState => {\n return {\n isExpanded: !(previousState.isExpanded ?? this._hasUserInteractedWithComparison)\n };\n });\n };\n\n /**\n * Removes all products from the comparison.\n */\n private readonly _clearAllProductsFromTheComparison = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).clearAll();\n this.setState({ productsData: [] });\n };\n\n private _getProductsLimit(): number | undefined {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Retrieves product image react node.\n * @param className - Class name to use.\n * @param product - Product info.\n * @returns React node.\n */\n private _renderProductImage(className: string, product?: SimpleProduct): React.ReactNode | undefined {\n if (ObjectExtensions.isNullOrUndefined(product)) {\n return undefined;\n }\n\n const defaultImageSettingQ = 'w=140&h=140&m=6';\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: defaultImageSettingQ, w: 0, h: 0 },\n lg: { q: defaultImageSettingQ, w: 0, h: 0 },\n xl: { q: defaultImageSettingQ, w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n\n private _renderCollapseButton(): INodeProps {\n const shouldBeExpanded = this.state.isExpanded ?? this._hasUserInteractedWithComparison;\n const headerContainerClassName = `${ProductComparisonPreview.mainContainerClassName}__header_button`;\n let collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__expanded`;\n if (!shouldBeExpanded) {\n collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__collapsed`;\n }\n\n return {\n className: classnames(headerContainerClassName, ProductComparisonPreview.collapseButtonClassName, collapseClassName),\n onClick: this._handleCollapseClick,\n role: 'button',\n tabIndex: 0\n };\n }\n\n private _renderGoToComparisonButton(productComparisonLink: string | undefined): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonCompareProductsButtonText}\n \n );\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllProductsButtonText}\n \n );\n }\n}\n\nexport default ProductComparisonPreview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce from '@msdyn365-commerce/core';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IProductComparisonPreviewViewProps, ProductComparisonPreview } from './product-comparison-preview';\n\n/**\n * Represents product comparison preview view.\n * @param props - View props for product comparison preview.\n * @returns Functional component of product comparison preview.\n */\nexport const ProductComparisonPreviewViewFunctionalComponent: React.FC = props => {\n if (!props.isMainContentReady) {\n return null;\n }\n\n const shouldBeExpanded = props.isExpanded ?? props.hasUserInteractedWithComparison;\n\n const containerClassName = classnames(\n ProductComparisonPreview.mainContainerClassName,\n shouldBeExpanded ? '' : `${ProductComparisonPreview.mainContainerClassName}__collapsed`\n );\n\n return (\n \n \n \n \n \n \n \n \n \n {props.resources.productComparisonPreviewHeaderText}\n \n \n {props.subheaderText}\n \n \n \n \n \n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {info.removeFromComparisonButton}\n {info.productImage}\n \n );\n })}\n {props.previewGreyPlaceHolders}\n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {msdyn365Commerce.isBrowser ? info.productLink : undefined}\n \n );\n })}\n \n \n \n \n \n {props.clearAllButton}\n {props.goToComparisonButton}\n \n \n \n \n );\n};\n\nexport default ProductComparisonPreviewViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml, ICoreContext, ITelemetry } from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\n/**\n * Represents resources for the component.\n */\nexport interface IProductSpecificationResources {\n productComparisonProductItemSpecificationTrue: string;\n productComparisonProductItemSpecificationFalse: string;\n}\n\n/**\n * Represent configuration of the component.\n */\nexport interface IProductSpecificationProps {\n telemetry: ITelemetry;\n specification?: AttributeValue;\n context: ICoreContext;\n\n resources: IProductSpecificationResources;\n}\n\n/**\n * Represents the product specification values that comes from the server.\n */\nexport enum SpecificationDataTypeValues {\n none = 0,\n currency = 1,\n dateTime = 2,\n decimal = 3,\n integer = 4,\n text = 5,\n boolean = 6,\n video = 40,\n image = 41\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductSpecification extends React.PureComponent {\n private static _renderCurrencyCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.CurrencyValue)) {\n return null;\n }\n\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n private static _renderDateTimeCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isFunction(product.DateTimeOffsetValue?.toUTCString)) {\n return null;\n }\n\n return {product.DateTimeOffsetValue!.toUTCString()};\n }\n\n private static _renderIntegerCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.IntegerValue)) {\n return null;\n }\n\n return {product.IntegerValue};\n }\n\n private static _renderDecimalCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.FloatValue)) {\n return null;\n }\n\n return {product.FloatValue};\n }\n\n private static _renderTextCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.TextValue)) {\n return null;\n }\n\n // eslint-disable-next-line react/no-danger -- Implementation is a copy.\n return ;\n }\n\n public constructor(props: IProductSpecificationProps) {\n super(props);\n }\n\n public render(): React.ReactNode | null {\n const specification = this.props.specification;\n if (ObjectExtensions.isNullOrUndefined(specification)) {\n return null;\n }\n\n switch (specification.DataTypeValue) {\n case SpecificationDataTypeValues.none:\n // Return span here instead of null so the row still shows\n return ;\n case SpecificationDataTypeValues.currency:\n return ProductSpecification._renderCurrencyCell(specification);\n case SpecificationDataTypeValues.dateTime:\n return ProductSpecification._renderDateTimeCell(specification);\n case SpecificationDataTypeValues.decimal:\n return ProductSpecification._renderDecimalCell(specification);\n case SpecificationDataTypeValues.integer:\n return ProductSpecification._renderIntegerCell(specification);\n case SpecificationDataTypeValues.text:\n return ProductSpecification._renderTextCell(specification);\n case SpecificationDataTypeValues.boolean:\n return this._renderTrueFalseCell(specification);\n case SpecificationDataTypeValues.video:\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case SpecificationDataTypeValues.image:\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${specification.DataTypeValue ?? 'null'} so skipping line`);\n return null;\n }\n }\n\n private _renderTrueFalseCell(product: AttributeValue): React.ReactNode | null {\n if (product.BooleanValue) {\n return {this.props.resources.productComparisonProductItemSpecificationTrue};\n }\n return {this.props.resources.productComparisonProductItemSpecificationFalse};\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback } from 'react';\n\n/**\n * Resources for the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonResources {\n productComparisonRemoveProductFromListAriaLabel: string;\n}\n\n/**\n * The configuration of the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonComponentProps extends IComponentProps {\n className: string;\n itemId: string;\n\n resources: IRemoveFromComparisonButtonResources;\n\n onClickHandler(itemId: string): void;\n}\n\n/**\n * Represents a button which handles adding to product comparison.\n * @param props - Configuration of the component.\n * @returns React functional component.\n */\nconst RemoveFromComparisonButtonFunctionalComponent: React.FC = (\n props: IRemoveFromComparisonButtonComponentProps\n) => {\n const onClick = useCallback(() => {\n props.onClickHandler(props.itemId);\n }, [props]);\n\n const { className } = props;\n\n return \n );\n }\n\n private readonly _goBack = (): void => {\n const backToShoppingUrl = getUrlSync('home', this.props.context.actionContext) || '';\n if (document.referrer === '') {\n window.location.href = backToShoppingUrl;\n } else {\n window.history.back();\n }\n };\n\n /**\n * Retrieves localized text for dimension.\n * @param dimensionId - Dimension id.\n * @returns Localized text.\n */\n private _getDimensionName(dimensionId: number): string | undefined {\n if (dimensionId === ProductDimensionType.Color) {\n return this.props.resources.productComparisonProductItemColorDimension;\n }\n if (dimensionId === ProductDimensionType.Size) {\n return this.props.resources.productComparisonProductItemSizeDimension;\n }\n\n if (dimensionId === ProductDimensionType.Style) {\n return this.props.resources.productComparisonProductItemStyleDimension;\n }\n return undefined;\n }\n\n private getUpdatedDimensionsProps(dimensionId: number, products: IProductComparisonProductMainInfo[]) {\n const dimensionClassName = `${ProductComparison.dimensionsRowClassName}__dimension-${dimensionId}`;\n const dimensionDescription = this._getDimensionName(dimensionId);\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimensionId);\n let dimensionSelectionType = SelectionType.text;\n\n const dimensionsAsSwatchConfiguration: DimensionTypes[] | undefined = this.props.context.app.config.dimensionsAsSwatchType;\n if (\n ArrayExtensions.hasElements(dimensionsAsSwatchConfiguration) &&\n !dimensionsAsSwatchConfiguration?.includes(DimensionTypes.none) &&\n dimensionsAsSwatchConfiguration?.includes(dimensionName)\n ) {\n dimensionSelectionType = SelectionType.swatch;\n }\n\n const productDimensionValues = products.map(productMainInfo => {\n let dimension: IDimensionResult[] = [];\n let textValue: string = '';\n let renderSwatch: JSX.Element | undefined;\n this.props.data.productsData?.result?.map(productsDimension => {\n if (productsDimension.productInfo.RecordId === productMainInfo.product.productInfo.RecordId) {\n dimension = productsDimension.dimensions?.dimensions ?? [];\n }\n return dimension;\n });\n\n if (dimensionSelectionType === SelectionType.swatch) {\n renderSwatch = (\n
    \n {dimension.map(dimensionItems => {\n return (\n \n {dimensionItems.result.map(dimensionItem => {\n let currentDimensionId: number | undefined;\n const swatches =\n dimensionItem.map(swatchItem => {\n let isDefaultDimension: boolean = false;\n const selectedDimensions = productMainInfo.product.productInfo.Dimensions?.filter(\n item => item.DimensionTypeValue === swatchItem.DimensionTypeValue\n );\n selectedDimensions?.map(selectedDimension => {\n if (\n selectedDimension.DimensionValue !== undefined &&\n selectedDimension.DimensionValue.DimensionId ===\n swatchItem.DimensionValue?.DimensionId\n ) {\n isDefaultDimension = true;\n }\n return isDefaultDimension;\n });\n\n if (swatchItem.DimensionTypeValue === dimensionId) {\n currentDimensionId = swatchItem.DimensionTypeValue;\n }\n const dimensionType = dimensionName;\n return {\n itemId: `${swatchItem.DimensionValue?.RecordId ?? ''}-${swatchItem.DimensionValue\n ?.Value ?? ''}`,\n value: swatchItem.DimensionValue?.Value ?? '',\n dimensionType,\n colorHexCode: swatchItem.DimensionValue?.ColorHexCode,\n imageUrl: swatchItem.DimensionValue?.ImageUrl,\n isDefault: isDefaultDimension\n };\n }) ?? [];\n if (currentDimensionId && currentDimensionId === dimensionId) {\n return (\n \n );\n }\n return null;\n })}\n
    \n );\n })}\n
    \n );\n }\n\n if (dimensionSelectionType === SelectionType.text) {\n dimension.map(item => {\n return item.result.map(items => {\n return items.map(dimensionItem => {\n if (dimensionItem.DimensionTypeValue === dimensionId) {\n const productDimensionSeperatorValue =\n textValue !== ''\n ? this.props.resources.productDimensionSeparator\n : this.props.resources.productDimensionSeparator.replace('/', '');\n textValue = textValue + format(productDimensionSeperatorValue, dimensionItem.DimensionValue?.Value ?? '');\n }\n return textValue;\n });\n });\n });\n }\n\n const dimensionProps = {\n RecordId: productMainInfo.product.productInfo.RecordId,\n Value: textValue,\n DimensionId: dimensionId,\n ImageUrl: productMainInfo.product.productInfo.PrimaryImageUrl\n };\n\n return {\n dimensionProps,\n productMainInfo,\n node: (\n
    \n {dimensionSelectionType === SelectionType.swatch ? renderSwatch : dimensionProps.Value}\n
    \n )\n };\n });\n return {\n dimensionId,\n dimensionName: dimensionDescription,\n dimensionClassName,\n productDimensionValues\n };\n }\n private _getSpecificationProps(specifications: AttributeValue[], products: IProductComparisonProductMainInfo[]) {\n return specifications.map(specification => {\n const specificationClassName = `${ProductComparison.specificationsRowClassName}__specification-${specification.Name!}`;\n\n const specificationValues = products.map(productMainInfo => {\n const productSpecification = productMainInfo.product.specifications?.specificationsList.find(\n productSpecifications => productSpecifications.Name === specification.Name\n );\n\n return {\n productSpecification,\n productMainInfo,\n node: (\n
    \n \n
    \n )\n };\n });\n\n return {\n specification,\n specificationClassName,\n specificationValues\n };\n });\n }\n\n private _renderHeading(): React.ReactNode {\n return ;\n }\n\n private _renderLoading(): React.ReactNode {\n return
    {this.props.resources.productComparisonLoadingText}
    ;\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllButtonText}\n \n );\n }\n\n /**\n * Retrieves unique dimension ids of product.\n * @param products - Product.\n * @returns Unique dimension ids.\n */\n private getProductsDimensionsIds(products: IProductComparisonItemData[]): number[] {\n const dimensions = products.map(product => product.productInfo.Dimensions);\n const allDimensions: ProductDimension[] = ArrayExtensions.flatten(dimensions);\n\n const dimensionIds = ArrayExtensions.validValues(allDimensions.map(dimension => dimension.DimensionTypeValue));\n const uniqueDimensionIds = ArrayExtensions.unique(dimensionIds);\n\n return uniqueDimensionIds;\n }\n\n private _renderPreviousClicker(): React.ReactNode {\n return (\n \n
    \n );\n};\n\n/**\n * Renders quick order grid table rows for desktop view.\n * @param props - Configuration for the rows.\n * @returns A react node with a list of quick order grid rows for desktop view.\n */\nexport const QuickOrderGridDesktopTableRowCellComponent: React.FC = (props: IQuickOrderGridTableRowProps) => {\n const product = props.data.product.productLine.fullProduct?.ProductDetails;\n const productListLine = props.data.product.productLine.productListLine;\n const { min, max, quantity } = props;\n const columnWithNumberClassName = `${props.className}__column-with-number`;\n if (product !== undefined) {\n let productUrl = '';\n if (!StringExtensions.isNullOrWhitespace(product.Name) && !ObjectExtensions.isNullOrUndefined(product.RecordId)) {\n productUrl = getProductPageUrlSync(product.Name!, product.RecordId, props.context.actionContext);\n }\n\n return (\n <>\n \n \n \n {product.ItemId}\n \n
    \n \n {product.Name}\n \n \n {product.Dimensions?.map(dimension => dimension.DimensionValue?.Value)\n .filter(dimensionValue => !StringExtensions.isNullOrWhitespace(dimensionValue))\n .join(props.resources.quickOrderGridProductDimensionsSeparator)}\n \n
    \n \n {renderProductPrice(props)}\n {renderUnitOfMeasure(props)}\n \n \n \n \n \n \n \n );\n }\n\n return null;\n};\n\n/**\n * Renders rows for mobile view.\n * @param props - Configuration for the rows.\n * @returns A react node with a list of quick order grid rows for mobile view.\n */\nexport const QuickOrderGridMobileTableRowCellComponent: React.FC = (props: IQuickOrderGridTableRowProps) => {\n const product = props.data.product.productLine.fullProduct?.ProductDetails;\n const productListLine = props.data.product.productLine.productListLine;\n const { min, max, quantity } = props;\n if (product !== undefined) {\n return (\n <>\n \n \n \n \n
    \n {product.RecordId}\n \n \n \n
    \n \n \n \n \n \n );\n }\n return null;\n};\n\n/**\n * Quick order table row component.\n * @param props - Configuration of the component.\n * @returns React node for the row.\n */\nexport const QuickOrderGridTableRowComponent: React.FC = (props: IQuickOrderGridTableRowProps) => {\n const rowClassName = `${props.className}__row`;\n const isMobileView = isMobile({ variant: VariantType.Viewport, context: props.context.request }) === 'xs';\n let headerCells: JSX.Element;\n if (isMobileView) {\n headerCells = ;\n } else {\n headerCells = ;\n }\n\n return (\n \n {headerCells}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IComponent, IComponentProps, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\nimport React from 'react';\n\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { QuickOrderGridProduct } from '../quick-order-grid-product';\nimport { IQuickOrderGridRowCallbacks } from '../utilities';\nimport {\n IQuickOrderGridTableHeaderResources,\n IQuickOrderGridTableRowResources,\n QuickOrderGridTableHeaderComponent,\n QuickOrderGridTableRowComponent\n} from './components';\n\n/**\n * Quick order table data interface.\n */\ninterface IQuickOrderGridTableData {\n quickOrderGridProducts: QuickOrderGridProduct[];\n isOrderQuantityLimitsFeatureEnabled: boolean;\n}\n\n/**\n * Quick order table resources.\n */\nexport interface IQuickOrderGridTableResources extends IQuickOrderGridTableHeaderResources, IQuickOrderGridTableRowResources {}\n\n/**\n * Quick order table props.\n */\nexport interface IQuickOrderGridTableProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n moduleId: string;\n moduleTypeName: string;\n\n resources: IQuickOrderGridTableResources;\n isMobileView: boolean;\n imageSettings?: IImageSettings;\n callBacks: IQuickOrderGridRowCallbacks;\n}\n\n/**\n * Quick order table component.\n */\nexport interface IQuickOrderGridTableComponent extends IComponent {}\n\n/**\n * The quick order table.\n * @param props -- The quick order table props.\n * @returns The quick order table element.\n */\nexport const QuickOrderGridTableComponent: React.FC = (props: IQuickOrderGridTableProps) => {\n const [isMobile, setIsMobile] = React.useState(props.isMobileView);\n const quickOrderGridProducts = props.data.quickOrderGridProducts;\n const isOrderQuantityLimitsFeatureEnabled = props.data.isOrderQuantityLimitsFeatureEnabled;\n\n /**\n * Update the view port.\n */\n const updateViewport = () => {\n setIsMobile(props.isMobileView);\n };\n\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', updateViewport);\n }\n\n const headerClassName = `${props.className}__header`;\n const rowClassName = `${props.className}__row`;\n\n return (\n \n \n {quickOrderGridProducts.map((quickOrderProduct, index) => {\n let quantity = quickOrderProduct.productLine.productListLine.Quantity!;\n const product = quickOrderProduct.productLine.fullProduct;\n let min: number = 1;\n let max: number = 10;\n const behavior = product?.ProductDetails?.Behavior;\n if (isOrderQuantityLimitsFeatureEnabled && !ObjectExtensions.isNullOrUndefined(behavior)) {\n if (behavior.MinimumQuantity && behavior.MinimumQuantity > 0) {\n min = behavior.MinimumQuantity;\n }\n if (behavior.MaximumQuantity && behavior.MaximumQuantity > 0) {\n max = behavior.MaximumQuantity;\n }\n quantity = Math.max(quantity, min);\n }\n const price = quickOrderProduct.productLine.fullProduct?.ProductPrice;\n return (\n \n );\n })}\n
    \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n getProductConfigure,\n IProductDimensionCallbacks,\n IProductDimensionConfigureResources,\n IProductDimensionConfigureViewProps\n} from '@msdyn365-commerce/components';\nimport {\n ProductDimension,\n ProductDimensionType,\n ProductDimensionValue,\n ProductListsDataActions,\n ProductListType,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport {\n addItemToProductListAction,\n AddItemToProductListInput,\n ArrayExtensions,\n createProductList,\n CreateProductListInput,\n FinitePromiseQueue,\n FinitePromiseQueueError,\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getScanResult,\n GetScanResultInput,\n getSelectedVariant,\n IDimensionForSelectedVariant,\n IPromiseQueue,\n ObjectExtensions,\n QuickOrderTemplate,\n QuickOrderTemplateLine,\n SelectedVariantInput,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { debounce } from 'lodash';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ActiveProductListInput } from './actions';\nimport {\n EcommerceQuantityLimitConfigurationsFeatureName,\n IQuickOrderGridActionsProps,\n IQuickOrderGridActionsViewProps,\n IQuickOrderGridRowCallbacks,\n IQuickOrderGridState,\n QuickOrderGridActionsView,\n QuickOrderGridDrawer,\n QuickOrderGridFormComponent,\n QuickOrderGridProduct,\n QuickOrderGridTableComponent,\n RetailDefaultOrderQuantityLimitsFeatureName\n} from './components';\nimport { IQuickOrderGridData } from './quick-order-grid.data';\nimport { IQuickOrderGridProps, IQuickOrderGridResources } from './quick-order-grid.props.autogenerated';\n\n/**\n * QuickOrder Grid View props.\n */\nexport interface IQuickOrderGridViewProps extends IQuickOrderGridProps {\n header: JSX.Element;\n actions?: INodeProps;\n isB2bCustomer?: boolean;\n isQuickOrderGridFormExpanded: boolean;\n contentProps: INodeProps;\n drawer: INodeProps;\n loading?: React.ReactNode;\n quickOrderGridForm: INodeProps;\n quickOrderGridFormProductContent: INodeProps;\n quickOrderGridFormMsgContent: INodeProps;\n quickOrderGridProps: IModuleProps;\n form: React.ReactNode;\n configure?: IProductDimensionConfigureViewProps;\n isMobileView: boolean;\n container?: JSX.Element;\n orderActions?: IQuickOrderGridActionsViewProps | null;\n bulkPurchase?: React.ReactNode;\n}\n\n/**\n * QuickOrder Grid View port.\n */\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * QuickOrderGrid component.\n * @extends {React.PureComponent>}\n */\nclass QuickOrderGrid extends React.PureComponent, IQuickOrderGridState> {\n private readonly _productTextInput: React.RefObject;\n\n private readonly _quantityInput: React.RefObject;\n\n private readonly _waitTime: number = 500;\n\n private readonly _dimensionUpdateQueueMaxLength: number = 2;\n\n private readonly _errorCssClass: string = 'danger';\n\n private readonly _errorCssGlyphClass: string = 'fas fa-exclamation-triangle';\n\n private readonly _quickOrderGridFormClass: string;\n\n private readonly _quickOrderGridFormProductContent: string;\n\n private readonly _quickOrderGridFormMsgContent: string;\n\n private readonly _telemetryContent: ITelemetryContent;\n\n private readonly _dimensionUpdateQueue: IPromiseQueue = new FinitePromiseQueue(this._dimensionUpdateQueueMaxLength);\n\n private _dimensions: { [id: number]: string } = {};\n\n private _initializedDimensions: Set = new Set();\n\n private readonly _cssClassNameConfigure: string = 'ms-quick-order_grid__content-form-main';\n\n private readonly _className: string = 'ms-quick-order-grid';\n\n // @ts-expect-error: Debouce needs to be used as type.\n private _cancellabelDebounce: debounce;\n\n private _isOrderQuantityLimitsFeatureEnabled: boolean = false;\n\n private _isChannelLimitsFeatureEnabled: boolean = false;\n\n private _applyDefaultOrderSettingsForCartLine: boolean = false;\n\n private readonly _quickOrderGridCallbacks: IProductDimensionCallbacks = {\n initializeDimension: (initializedDimension: string): void => {\n if (initializedDimension) {\n this._initializedDimensions.add(initializedDimension);\n }\n },\n /**\n * Get Dropdown name.\n * @param selectedDimensionId - Dimension type.\n * @param selectedDimensionValueId - Resources.\n * @returns Dropdown name.\n */\n dimensionSelectedAsync: async (selectedDimensionId: number, selectedDimensionValueId: string): Promise => {\n this._dimensions[selectedDimensionId] = selectedDimensionValueId;\n // Only trigger _updateDimensions when all dimensions are initialized\n if (this._initializedDimensions.size === this.state.productDimensions?.length) {\n return this._dimensionUpdateQueue\n .enqueue(async () => {\n return this._updateDimensions();\n })\n .catch((error: string) => {\n // Ignore discarded processes.\n if (error !== FinitePromiseQueueError.ProcessWasDiscardedFromTheQueue) {\n throw new Error(error);\n }\n });\n }\n },\n\n /**\n * Get Dropdown name.\n * @param dimensionType - Dimension type.\n * @param resources - Resources.\n * @returns Dropdown name.\n */\n getDropdownName: (dimensionType: number, resources: IProductDimensionConfigureResources): string => {\n return this._getDropdownName(dimensionType, resources);\n },\n\n /**\n * Method to call on dimension change.\n * @param isUpdatingDimension - Flag to update dimension.\n */\n changeUpdatingDimension: (isUpdatingDimension: boolean): void => {\n this.setState({ isUpdatingDimension });\n }\n };\n\n private readonly _quickOrderGridRowCallbacks: IQuickOrderGridRowCallbacks = {\n /**\n * Method to call remove button.\n * @param line - Grid row product.\n */\n onRemoveItem: (line: QuickOrderGridProduct): void => {\n this._removeItemRowFromTable(line.productLine);\n },\n\n /**\n * Method to call on change quantity button.\n * @param productListLineId - Grid row product list line id.\n * @param quantity - Product quantity.\n * @returns - Falg to get confirmation for action.\n */\n onChangeQuantity: (productListLineId: string | undefined, quantity: number): boolean => {\n return this._changeRowQuantity(productListLineId, quantity);\n }\n };\n\n public constructor(props: IQuickOrderGridProps) {\n super(props);\n this._productTextInput = React.createRef();\n this._quantityInput = React.createRef();\n\n this._telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.state = {\n isQuickOrderGridFormExpanded: false,\n min: 0,\n max: 10,\n quantity: 1,\n productResponse: undefined,\n productDimensions: undefined,\n productDimensionErrorState: {\n configureErrors: {}\n },\n isMobile: this.isMobile,\n products: [],\n isUpdatingDimension: false,\n productListId: ''\n };\n\n this._quickOrderGridFormClass = 'ms-quick-order-grid__content-form';\n this._quickOrderGridFormProductContent = 'ms-quick-order-grid__content-form-main';\n this._quickOrderGridFormMsgContent = 'ms-quick-order-grid__content-form-msg';\n\n this._isOrderQuantityLimitsFeatureEnabled =\n this.props.data.featureState.result?.find(featureState => featureState.Name === RetailDefaultOrderQuantityLimitsFeatureName)\n ?.IsEnabled ?? false;\n\n this._isChannelLimitsFeatureEnabled =\n this.props.data.featureState.result?.find(featureState => featureState.Name === EcommerceQuantityLimitConfigurationsFeatureName)\n ?.IsEnabled ?? false;\n\n const cartConfiguration = this.props.data.cartConfiguration;\n this._applyDefaultOrderSettingsForCartLine = cartConfiguration?.result?.ValidateDefaultOrderSettingsPerLine ?? false;\n }\n\n @computed public get isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public render(): JSX.Element | null {\n const { data } = this.props;\n if (!data.customerInformation.result) {\n return null;\n }\n const quickOrderTemplate = data.quickOrderTemplate;\n\n if (quickOrderTemplate?.result !== undefined) {\n this.setState({\n products: quickOrderTemplate.result.quickOrderTemplateLines,\n productListId: quickOrderTemplate.result.productList.Id\n });\n }\n const { className = '', maxQuantity } = this.props.config;\n const customerInfo = this.props.data.customerInformation.result;\n const {\n quickOrderGridModuleHeading,\n quickOrderGridModuleDescription,\n quickOrderGridAddtogrid,\n quickOrderGridProductQuantityInputLabel,\n quickOrderGridProductInputLabel,\n quickOrderGridProductDimensionTypeColor,\n quickOrderGridProductDimensionTypeConfiguration,\n quickOrderGridSelectDimensionFormatString,\n quickOrderGridProductDimensionTypeSize,\n quickOrderGridProductDimensionTypeStyle,\n quickOrderGridProductDimensionTypeAmount,\n quickOrderGridModulePageHeading\n } = this.props.resources;\n\n const productConfigureResources: IProductDimensionConfigureResources = {\n selectDimensionFormatString: quickOrderGridSelectDimensionFormatString,\n productDimensionTypeColor: quickOrderGridProductDimensionTypeColor,\n productDimensionTypeConfiguration: quickOrderGridProductDimensionTypeConfiguration,\n productDimensionTypeSize: quickOrderGridProductDimensionTypeSize,\n productDimensionTypeStyle: quickOrderGridProductDimensionTypeStyle,\n productDimensionTypeAmount: quickOrderGridProductDimensionTypeAmount\n };\n\n const { isQuickOrderGridFormExpanded, productDimensionErrorState, productResponse, productDimensions } = this.state;\n\n const headerClassName = `${this._className}__header`;\n\n const header = (\n
    \n \n
    \n );\n\n const viewProps: IQuickOrderGridViewProps = {\n ...(this.props as IQuickOrderGridProps),\n\n quickOrderGridProps: { className: classnames('ms-quick-order-grid', className), moduleProps: this.props },\n contentProps: { className: 'ms-quick-order-grid__content' },\n isB2bCustomer: customerInfo?.IsB2b,\n header,\n actions: {\n className: `${this._className}-action-bar`,\n tag: 'div'\n },\n drawer: {\n tag: QuickOrderGridDrawer,\n className: `${this._className}__drawer`,\n collapseProps: { isOpen: this.state.isQuickOrderGridFormExpanded },\n moduleHeadingText: quickOrderGridModuleHeading,\n moduleDescriptionText: quickOrderGridModuleDescription,\n requestContext: this.props.context.request,\n telemetryContent: this._telemetryContent\n },\n bulkPurchase: this._renderBulkPurchase(),\n quickOrderGridForm: {\n className: `${this._quickOrderGridFormClass} ${isQuickOrderGridFormExpanded ? 'qo-show' : 'qo-hide'}`\n },\n quickOrderGridFormProductContent: {\n className: this._quickOrderGridFormProductContent\n },\n quickOrderGridFormMsgContent: {\n className: this._quickOrderGridFormMsgContent\n },\n form: QuickOrderGridFormComponent({\n productTextInput: this._productTextInput,\n quantityTextInput: this._quantityInput,\n isAddtoListDisabled: !productResponse,\n ariaLabelAddtoCart: quickOrderGridAddtogrid,\n ariaLabelProduct: quickOrderGridProductInputLabel,\n ariaLabelQuantity: quickOrderGridProductQuantityInputLabel,\n maxChars: 50,\n minQuantity: this.state.min ?? 0,\n maxQuantity: this.state.max ?? maxQuantity,\n moduleClassName: this._className,\n quickOrderGridState: this.state,\n handleInputChange: this._handleInputChange,\n handleQuantityChange: this._handleQuantityChange,\n handleAddProductListClick: this._addItemToProductListLine\n }),\n configure:\n productResponse && productDimensions\n ? getProductConfigure(\n this._cssClassNameConfigure,\n this.props.context,\n this.props.friendlyName,\n this.props.telemetry,\n quickOrderGridSelectDimensionFormatString,\n productConfigureResources,\n this._quickOrderGridCallbacks,\n productResponse,\n productDimensions,\n productDimensionErrorState\n )\n : undefined,\n isQuickOrderGridFormExpanded: this.state.isQuickOrderGridFormExpanded,\n isMobileView: this.state.isMobile,\n container: ArrayExtensions.hasElements(this.state.products) ? this._renderListContainer() : undefined,\n orderActions: this._renderQuickOrderGridActions(quickOrderTemplate?.result)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _renderQuickOrderGridActions(quickOrderTemplate: QuickOrderTemplate | undefined): IQuickOrderGridActionsViewProps | null {\n const { typeName, context, resources } = this.props;\n const {\n quickOrderGridDeleteButtonText,\n quickOrderGridBuySelectedButtonText,\n quickOrderGridBuySelectedButtonAriaLabel,\n quickOrderGridBuySelectedAddingToCartErrorNotificationTitle,\n quickOrderGridBuySelectedAddingToCartErrorNotificationCloseAriaLabel,\n quickOrderGridGoToCartText,\n quickOrderGridDialogCloseText,\n quickOrderGridSingleItemText,\n quickOrderGridMultiLineItemFormatText,\n quickOrderGridMultiLinesFormatText,\n quickOrderGridHeaderMessageText,\n addedQuantityText,\n originalPriceText,\n currentPriceText,\n freePriceText\n } = resources;\n if (ArrayExtensions.hasElements(quickOrderTemplate?.quickOrderTemplateLines)) {\n const quickOrderGridActions: IQuickOrderGridActionsProps = {\n data: { quickOrderTemplate },\n moduleClassName: this._className,\n id: 'quick-order-grid',\n typeName,\n context,\n handlers: {\n removeProductList: this._removeProductList,\n onErrorMessage: (message: string) =>\n this.setState({\n topStateMessage: {\n messageText: message,\n statusCssString: this._errorCssClass,\n messageGlyph: this._errorCssGlyphClass,\n isOpen: true\n }\n })\n },\n quickOrderGridState: this.state,\n resources: {\n quickOrderGridDeleteButtonText,\n quickOrderGridBuySelectedButtonText,\n quickOrderGridBuySelectedButtonAriaLabel,\n quickOrderGridBuySelectedAddingToCartErrorNotificationTitle,\n quickOrderGridBuySelectedAddingToCartErrorNotificationCloseAriaLabel,\n quickOrderGridGoToCartText,\n quickOrderGridDialogCloseText,\n quickOrderGridSingleItemText,\n quickOrderGridMultiLineItemFormatText,\n quickOrderGridMultiLinesFormatText,\n quickOrderGridHeaderMessageText,\n addedQuantityText,\n originalPriceText,\n currentPriceText,\n freePriceText\n }\n };\n\n return QuickOrderGridActionsView(quickOrderGridActions);\n }\n return null;\n }\n\n /**\n * Renders bulk purchase module.\n * @returns Bulk purchase module react node.\n */\n private _renderBulkPurchase(): React.ReactNode {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Temporary switch for the feature which is under development.\n if (!this.props.context.app.config.isBulkPurchaseEnabled) {\n return null;\n }\n\n if (!ArrayExtensions.hasElements(this.props.slots.bulkPurchaseSlots)) {\n return null;\n }\n\n const containerClass = `${this._className}__bulk-purchase`;\n return (\n
    \n {React.cloneElement(this.props.slots.bulkPurchaseSlots[0] as React.ReactElement, {\n productDimensions: this.state.productDimensions\n })}\n
    \n );\n }\n\n /**\n * Render list container.\n * @returns JSX element.\n */\n private _renderListContainer(): JSX.Element {\n const containerClass = `${this._className}__table-content`;\n return
    {this._renderQuickOrderTable(this._className)}
    ;\n }\n\n /**\n * Initial the products on quick order.\n * @returns List of quick order products or undefined.\n */\n private _initQuickOrderGridProducts(): QuickOrderGridProduct[] {\n const products: QuickOrderTemplateLine[] = this.state.products;\n\n const quickOrderGridProduct: QuickOrderGridProduct[] = products.map((product: QuickOrderTemplateLine) => {\n return new QuickOrderGridProduct(product);\n });\n\n return ArrayExtensions.validValues(quickOrderGridProduct);\n }\n\n /**\n * Method to call on clear button.\n */\n private readonly _removeProductList = () => {\n const { context, data, telemetry, resources } = this.props;\n const { quickOrderTemplate } = data;\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && quickOrderTemplate && quickOrderTemplate.result) {\n ProductListsDataActions.deleteAsync({ callerContext: context.actionContext }, quickOrderTemplate.result.productList)\n .then(() => {\n window.location.reload();\n })\n .catch((error: string) => {\n telemetry.warning('[quick-order-grid] Unable to delete product list.');\n telemetry.error(error);\n this._updateStatusState(\n resources.quickOrderGridDeleteProductListFailedText,\n this._errorCssClass,\n this._errorCssGlyphClass,\n true\n );\n });\n } else {\n telemetry.warning('[quick-order-grid] Failed to delete product list. Product List was not found');\n }\n };\n\n /**\n * Initial the products on quick order.\n * @param className - Class name.\n * @returns JSX element.\n */\n private _renderQuickOrderTable(className: string): JSX.Element {\n const tableClassName = `${className}__table-list`;\n\n return (\n \n );\n }\n\n private _updateQuantitiesInState(product: SimpleProduct): void {\n const min: number = this._getMinQuantityForCartLineItem(this._isOrderQuantityLimitsFeatureEnabled, product);\n const max: number = this._getMaxQuantityForCartLineItem(\n this._isChannelLimitsFeatureEnabled || this._isOrderQuantityLimitsFeatureEnabled,\n product\n );\n let quantity: number = this._getQuantity(\n this._isOrderQuantityLimitsFeatureEnabled,\n this._applyDefaultOrderSettingsForCartLine,\n product\n );\n quantity = Math.max(quantity, min);\n\n this.setState({\n min,\n max,\n quantity\n });\n }\n\n private _getMinQuantityForCartLineItem(isOrderQuantityLimitsFeatureEnabled: boolean, product: SimpleProduct): number {\n if (\n isOrderQuantityLimitsFeatureEnabled &&\n this._getIgnoreOrderSettings() &&\n product?.Behavior?.MinimumQuantity &&\n product.Behavior.MinimumQuantity > 0\n ) {\n return product.Behavior.MinimumQuantity;\n }\n\n return 1;\n }\n\n private _getMaxQuantityForCartLineItem(isQuantityLimitsFeatureEnabled: boolean, product: SimpleProduct): number {\n if (\n isQuantityLimitsFeatureEnabled &&\n this._getIgnoreOrderSettings() &&\n product?.Behavior?.MaximumQuantity &&\n product.Behavior.MaximumQuantity > 0\n ) {\n return product.Behavior.MaximumQuantity;\n }\n\n return this.props.context.app.config.maxQuantityForCartLineItem;\n }\n\n /**\n * Retrieves the value of the IgnoreOrderSettings property from the cart configuration.\n * If the property is not present, it defaults to false.\n * @returns {boolean} The value of the IgnoreOrderSettings property.\n */\n private _getIgnoreOrderSettings(): boolean {\n const cartConfiguration = this.props.data.cartConfiguration;\n return !(cartConfiguration?.result?.IgnoreOrderSettings ?? false);\n }\n\n private _getQuantity(\n isOrderQuantityLimitsFeatureEnabled: boolean,\n applyDefaultOrderSettingsForCartLine: boolean,\n product: SimpleProduct\n ): number {\n let defaultQuantity = 1;\n\n if (!isOrderQuantityLimitsFeatureEnabled || !applyDefaultOrderSettingsForCartLine) {\n return defaultQuantity;\n }\n\n if (product?.Behavior?.DefaultQuantity && product.Behavior.DefaultQuantity > 0) {\n defaultQuantity = product.Behavior.DefaultQuantity;\n }\n\n return defaultQuantity;\n }\n\n /**\n * Method to called on product input change.\n * @param query - Product inventory info.\n */\n private readonly _handleInputChange = (query: string): void => {\n const queryMinLength = 4;\n if (!query || query.length > queryMinLength) {\n this.setState({ quantity: 0, productDimensions: [], productResponse: undefined });\n this._updateStatusState('', '', '', false);\n }\n if (this._cancellabelDebounce) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call -- existing code.\n this._cancellabelDebounce.cancel();\n }\n\n const { telemetry, context } = this.props;\n const zeroNumber = 0;\n if (!StringExtensions.isNullOrEmpty(query)) {\n this._cancellabelDebounce = debounce(() => {\n getScanResult(\n new GetScanResultInput(\n context.actionContext.requestContext.apiSettings,\n query,\n context.actionContext.requestContext.apiSettings.channelId\n ),\n this.props.context.actionContext\n )\n .then(results => {\n this.setState({\n productResponse: results?.Product,\n productDimensions: results?.ProductDimensionFull,\n isQuickOrderGridFormExpanded: true\n });\n if (results?.Product) {\n this._updateQuantitiesInState(results.Product);\n }\n })\n .catch((error: Error) => {\n telemetry.exception(error);\n telemetry.debug('Unable to get scan results');\n });\n }, this._waitTime);\n\n setTimeout(() => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call -- Existing code.\n this._cancellabelDebounce();\n }, zeroNumber);\n this.setState({ isQuickOrderGridFormExpanded: true });\n } else {\n this.setState({ productResponse: undefined, isQuickOrderGridFormExpanded: true });\n }\n };\n\n /**\n * Method to called on quantity change.\n * @param value - Quantity value.\n */\n private readonly _handleQuantityChange = (value: string): void => {\n let currentValue = Number.parseInt(value, 10);\n const inputElement = this._quantityInput.current instanceof HTMLInputElement && this._quantityInput.current;\n const quantityChangeDebounceTimeout = 200;\n let minimumQuantity = 0;\n let needToUpdateUIValue: boolean = false;\n if (this._isOrderQuantityLimitsFeatureEnabled && !ObjectExtensions.isNullOrUndefined(this.state.productResponse?.Behavior)) {\n const behavior = this.state.productResponse!.Behavior;\n minimumQuantity = behavior?.MinimumQuantity ?? 0;\n const newCurrentValue = Math.max(currentValue, minimumQuantity);\n if (newCurrentValue !== currentValue) {\n needToUpdateUIValue = true;\n }\n currentValue = newCurrentValue;\n }\n\n this.setState({ quantity: currentValue }, () => {\n debounce(() => {\n if (needToUpdateUIValue && !Number.isNaN(this.state.quantity) && inputElement) {\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\n inputElement.value = currentValue.toString();\n }\n }, quantityChangeDebounceTimeout)();\n });\n };\n\n /**\n * Method to get dropdwon name.\n * @param dimensionType - Dimension Type.\n * @param resources - String resources.\n * @returns Dropdwon label.\n */\n private readonly _getDropdownName = (dimensionType: number, resources: IProductDimensionConfigureResources): string => {\n const isGiftCard = this.state.productResponse?.IsGiftCard;\n\n switch (dimensionType) {\n case ProductDimensionType.Color: // ProductDimensionType.Color\n return resources.productDimensionTypeColor;\n case ProductDimensionType.Configuration: // ProductDimensionType.Configuration\n return resources.productDimensionTypeConfiguration;\n case ProductDimensionType.Size: // ProductDimensionType.Size\n return resources.productDimensionTypeSize;\n case ProductDimensionType.Style: // ProductDimensionType.Style\n return isGiftCard ? resources.productDimensionTypeAmount : resources.productDimensionTypeStyle;\n default:\n return '';\n }\n };\n\n /**\n * Method to update dimension and product in UI.\n */\n private readonly _updateDimensions = async (): Promise => {\n const {\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n const { productDimensions, productResponse } = this.state;\n const hasProductDimensions = ArrayExtensions.hasElements(productDimensions);\n if (!productResponse || !hasProductDimensions) {\n return;\n }\n\n const dimensionsToUpdate: { [id: number]: string } = { ...this._dimensions };\n this.setState({ isUpdatingDimension: true });\n\n // Step 1: Update state to indicate which dimensions are selected\n if (this.state.productDimensionErrorState.otherError) {\n // eslint-disable-next-line react/no-access-state-in-setstate -- existing code.\n const clearOtherErrorState = { ...this.state.productDimensionErrorState };\n clearOtherErrorState.otherError = undefined;\n this.setState({ productDimensionErrorState: clearOtherErrorState });\n }\n\n // Step 2: Clear any errors indicating the dimension wasn't selected\n for (const dimensionKey of Object.keys(dimensionsToUpdate)) {\n if (this.state.productDimensionErrorState.configureErrors[dimensionKey]) {\n // eslint-disable-next-line react/no-access-state-in-setstate -- existing code.\n const errorState = { ...this.state.productDimensionErrorState };\n errorState.configureErrors[dimensionKey] = undefined;\n\n this.setState({ productDimensionErrorState: errorState });\n }\n }\n\n // Step 3, Build the actually selected dimensions, prioritizing the information in state\n // over the information in data\n const mappedDimensions = productDimensions\n ?.map(dimension => {\n return {\n DimensionTypeValue: dimension.DimensionTypeValue,\n DimensionValue:\n this._updateDimensionValue(dimension, dimensionsToUpdate[dimension.DimensionTypeValue]) ?? dimension.DimensionValue,\n ExtensionProperties: dimension.ExtensionProperties\n };\n })\n .filter(dimension => {\n return dimension.DimensionValue;\n });\n\n // Step 4. Use these dimensions hydrate the product. Wrap this in a promise\n // so that places like add to cart can await it\n // eslint-disable-next-line no-async-promise-executor -- existing code\n const selectedProduct = new Promise(async resolve => {\n const newProduct = await getSelectedVariant(\n new SelectedVariantInput(\n productResponse.MasterProductId ? productResponse.MasterProductId : productResponse.RecordId,\n channelId,\n mappedDimensions,\n undefined,\n this.props.context.request\n ),\n actionContext\n );\n if (newProduct) {\n await getDimensionsForSelectedVariant(\n new GetDimensionsForSelectedVariantInput(\n newProduct.MasterProductId ? newProduct.MasterProductId : newProduct.RecordId,\n channelId,\n mappedDimensions,\n this.props.context.request\n ),\n actionContext\n );\n }\n\n resolve(newProduct);\n });\n\n const variantProduct = await selectedProduct;\n this.setState({ productResponse: variantProduct !== null ? variantProduct : undefined });\n };\n\n /**\n * Method to get updated dimension value.\n * @param productDimensionFull - Product dimension full.\n * @param newValueId - New Dimension value.\n * @returns Dimension Value.\n */\n private readonly _updateDimensionValue = (\n productDimensionFull: IDimensionForSelectedVariant,\n newValueId: string | undefined\n ): ProductDimensionValue | undefined => {\n if (newValueId && productDimensionFull.DimensionValues) {\n return productDimensionFull.DimensionValues.find(dimension => dimension.RecordId === +newValueId);\n }\n\n return undefined;\n };\n\n /**\n * Method to get dropdwon name.\n * @param dimensionTypeValue - Dimension Type.\n * @param resources - String resources.\n * @param isGiftCard - Flag to check if its a giftcard product.\n * @returns Dropdwon error label.\n */\n private readonly _getDimensionErrorString = (\n dimensionTypeValue: number,\n resources: IQuickOrderGridResources,\n isGiftCard?: boolean\n ): string => {\n const amountErrorMessage = resources.quickOrderGridproductDimensionTypeAmountErrorMessage;\n\n switch (dimensionTypeValue) {\n case ProductDimensionType.Color: // ProductDimensionType.Color\n return resources.quickOrderGridproductDimensionTypeColorErrorMessage;\n case ProductDimensionType.Configuration: // ProductDimensionType.Configuration\n return resources.quickOrderGridproductDimensionTypeConfigurationErrorMessage;\n case ProductDimensionType.Size: // ProductDimensionType.Size\n return resources.quickOrderGridproductDimensionTypeSizeErrorMessage;\n case ProductDimensionType.Style: // ProductDimensionType.Style\n return isGiftCard ? amountErrorMessage : resources.quickOrderGridproductDimensionTypeStyleErrorMessage;\n default:\n return '';\n }\n };\n\n /**\n * Initial the products on quick order.\n * @param productResponse - Simple Product.\n * @param quantity - Product Quantity.\n * @returns Flag to validate productlistline.\n */\n private readonly _validateCart = (productResponse: SimpleProduct, quantity: number): boolean => {\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- existing code\n const missingDimensions = productResponse.Dimensions?.filter(\n dimension => !(dimension.DimensionValue && dimension.DimensionValue.Value)\n );\n const minimumQuantity = 0;\n if (ArrayExtensions.hasElements(missingDimensions)) {\n const userMessage = this._getConfigureErrors(missingDimensions, false);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- existing code\n if (this.state.productDimensionErrorState.configureErrors) {\n // eslint-disable-next-line react/no-access-state-in-setstate -- existing code\n const errorState = { ...this.state.productDimensionErrorState };\n errorState.configureErrors = userMessage;\n\n this.setState({ productDimensionErrorState: errorState });\n return false;\n }\n }\n\n if (quantity <= minimumQuantity) {\n const resources = this.props.resources;\n this._updateStatusState(resources.quickOrderGridWrongQuantityErrorMsg, this._errorCssClass, this._errorCssGlyphClass, true);\n return false;\n }\n return true;\n };\n\n /**\n * Initial the products on quick order.\n * @param result - Simple Product.\n * @param isGiftCard - Product Quantity.\n * @returns Flag to validate cart.\n */\n private _getConfigureErrors(\n result: ProductDimension[] | undefined,\n isGiftCard?: boolean\n ): { [configureId: string]: string | undefined } {\n if (!result) {\n return {};\n }\n const dimensions: { [configureId: string]: string | undefined } = {};\n const resources = this.props.resources;\n for (const dimension of result) {\n dimensions[dimension.DimensionTypeValue] = this._getDimensionErrorString(dimension.DimensionTypeValue, resources, isGiftCard);\n }\n return dimensions;\n }\n\n /**\n * Method to call on quantity change in row.\n * @param itemKey - Product Key.\n * @param quantity - Product quantity.\n * @returns Flag to update status.\n */\n private readonly _changeRowQuantity = (itemKey: string | undefined, quantity: number): boolean => {\n const { context, data, telemetry } = this.props;\n const { quickOrderTemplate } = data;\n if (quickOrderTemplate?.result) {\n const quickOrderTemplateLinesData = quickOrderTemplate.result.quickOrderTemplateLines;\n if (ArrayExtensions.hasElements(quickOrderTemplateLinesData)) {\n const orderLineIndex = quickOrderTemplateLinesData.findIndex(\n (lines: QuickOrderTemplateLine) => lines.productListLine.LineId === itemKey\n );\n const newProductListLine = { ...quickOrderTemplateLinesData[orderLineIndex] };\n if (quickOrderTemplateLinesData[orderLineIndex].productListLine.Quantity === quantity) {\n return true;\n }\n const previousQuantity = newProductListLine.productListLine.Quantity;\n newProductListLine.productListLine.Quantity = quantity;\n const { fullProduct, ...line } = newProductListLine;\n\n ProductListsDataActions.updateProductListLinesAsync(\n { callerContext: context.actionContext },\n quickOrderTemplate.result.productList.Id,\n [line.productListLine]\n )\n .then(list => {\n if (ArrayExtensions.hasElements(list)) {\n const newLine = list.find(lines => lines.LineId === itemKey);\n quickOrderTemplateLinesData[orderLineIndex].productListLine = newLine!;\n const updatedLines = [...quickOrderTemplateLinesData];\n updatedLines[orderLineIndex] = { fullProduct, productListLine: newLine! };\n const updatedProductList = { ...quickOrderTemplate.result, ProductListLines: updatedLines };\n context.actionContext.update(\n new ActiveProductListInput(context.actionContext.requestContext),\n updatedProductList\n );\n return true;\n }\n\n return false;\n })\n .catch((error: Error) => {\n telemetry.warning('[quick-order-grid] Unable to update product quantity.');\n telemetry.error(error.message);\n const userMessage = 'Failed to update quantity value.';\n newProductListLine.productListLine.Quantity = previousQuantity;\n this._updateStatusState(userMessage, this._errorCssClass, this._errorCssGlyphClass, true);\n return false;\n });\n }\n return false;\n }\n\n return false;\n };\n\n /**\n * Method to call on remove item from table.\n * @param line - Order Template Line.\n */\n private readonly _removeItemRowFromTable = (line: QuickOrderTemplateLine): void => {\n const { context, data, telemetry } = this.props;\n const { quickOrderTemplate } = data;\n\n if (quickOrderTemplate?.result) {\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken) {\n ProductListsDataActions.removeProductListLinesAsync(\n { callerContext: context.actionContext },\n line.productListLine.ProductListId!,\n [line.productListLine]\n )\n .then(() => {\n window.location.reload(false);\n })\n .catch((error: Error) => {\n telemetry.warning('[quick-order-grid] Unable remove item from product list grid');\n telemetry.error(error.message);\n });\n } else {\n telemetry.warning('[quick-order-grid] Unable remove items from product list grid user token was not found');\n }\n }\n };\n\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (this.props.data.featureState) {\n isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n return isMultipleCatalogFeatureEnabledInHq;\n };\n\n /**\n * Method to call on add item from form.\n */\n private readonly _addItemToProductListLine = async (): Promise => {\n const {\n context: { actionContext },\n resources,\n telemetry\n } = this.props;\n const {\n quickOrderGridAddedToGridSuccessMessage,\n quickOrderGridAddedToGridFailureMessage,\n quickOrderGridAddedToGridDuplicateError\n } = resources;\n const { productResponse, quantity, productListId } = this.state;\n // get the current catalog id.\n const catalogId = getCatalogId(this.props.context.request);\n\n this._updateStatusState('', '', '', false);\n\n if (productResponse !== undefined && this._validateCart(productResponse, quantity)) {\n if (StringExtensions.isNullOrWhitespace(productListId)) {\n await this._createProductList();\n }\n\n if (StringExtensions.isNullOrWhitespace(this.state.productListId)) {\n this._updateStatusState(quickOrderGridAddedToGridFailureMessage, this._errorCssClass, this._errorCssGlyphClass, true);\n return;\n }\n const input = new AddItemToProductListInput(\n this.state.productListId,\n productResponse.RecordId,\n quantity,\n productResponse.DefaultUnitOfMeasure ?? 'ea',\n this._isChannelMultipleCatalogsFeatureEnabled(),\n catalogId\n );\n\n await addItemToProductListAction(input, actionContext)\n .then(result => {\n if (result.ProductListId) {\n this._updateStatusState(quickOrderGridAddedToGridSuccessMessage, 'success', 'fas fa-check', true);\n window.location.reload();\n this.setState({});\n }\n })\n .catch((error: Error) => {\n telemetry.debug('[quick-order-grid] Error trying to Update Grid Line from the quick order grid');\n if (error.name === 'Microsoft_Dynamics_Commerce_Runtime_DuplicateObject') {\n this._updateStatusState(\n quickOrderGridAddedToGridDuplicateError,\n this._errorCssClass,\n this._errorCssGlyphClass,\n true\n );\n } else {\n this._updateStatusState(\n quickOrderGridAddedToGridFailureMessage,\n this._errorCssClass,\n this._errorCssGlyphClass,\n true\n );\n }\n });\n }\n };\n\n /**\n * Method to create product list.\n * @returns - ProductListId.\n */\n private _createProductList = async (): Promise => {\n const {\n context: { actionContext },\n telemetry,\n resources\n } = this.props;\n const { productListId } = this.state;\n const { quickOrderGridAddedToGridFailureMessage } = resources;\n\n if (StringExtensions.isNullOrWhitespace(productListId)) {\n const input = new CreateProductListInput('', ProductListType.QuickOrder);\n\n await createProductList(input, actionContext)\n .then(result => {\n if (!StringExtensions.isNullOrWhitespace(result.Id)) {\n this.setState({ productListId: result.Id });\n return result.Id;\n }\n return '';\n })\n .catch((error: Error) => {\n telemetry.debug('[quick-order-grid] Error on creating productlist from quick order grid');\n telemetry.error(error.message);\n this._updateStatusState(quickOrderGridAddedToGridFailureMessage, this._errorCssClass, this._errorCssGlyphClass, true);\n return '';\n });\n return '';\n }\n\n return productListId;\n };\n\n /**\n * Method to create product list.\n * @param messageText - Message Text.\n * @param statusCssString - Css class names.\n * @param messageGlyph - Glyph string.\n * @param isOpen - Flag to show.\n */\n private readonly _updateStatusState = (messageText: string, statusCssString: string, messageGlyph: string, isOpen: boolean): void => {\n this.setState({\n // eslint-disable-next-line react/no-unused-state -- Showing user message in Form component.\n stateMessage: {\n messageText,\n statusCssString,\n messageGlyph,\n isOpen\n }\n });\n };\n}\nexport default QuickOrderGrid;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IErrorState } from '@msdyn365-commerce/components';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IDimensionForSelectedVariant, OrderTemplateLine } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { QuickOrderGridProduct } from './quick-order-grid-product';\n\n/**\n * QuickOrderGrid state message Interface.\n */\nexport interface IQuickOrderGridStateMessage {\n isOpen: boolean;\n messageGlyph: string;\n messageText: string;\n statusCssString: string;\n}\n\n/**\n * QuickOrderGrid state Interface.\n */\nexport interface IQuickOrderGridState {\n isQuickOrderGridFormExpanded: boolean;\n isUpdatingDimension?: boolean;\n productResponse: SimpleProduct | undefined;\n productDimensions: IDimensionForSelectedVariant[] | undefined;\n min: number | undefined;\n max: number | undefined;\n quantity: number;\n stateMessage?: IQuickOrderGridStateMessage;\n topStateMessage?: IQuickOrderGridStateMessage;\n productDimensionErrorState: IErrorState;\n isMobile: boolean;\n products: OrderTemplateLine[];\n productListId: string;\n}\n\n/**\n * QuickOrder Grid Row view.\n */\nexport interface IQuickOrderGridRowViewModel extends OrderTemplateLine {\n isChecked: boolean;\n}\n\n/**\n * Interface for quick order callbacks.\n */\nexport interface IQuickOrderGridRowCallbacks {\n onRemoveItem(line: QuickOrderGridProduct): void;\n onChangeQuantity(orderTemplateLineId: string | undefined, quantity: number): boolean;\n}\n\n/**\n * Interface for quick order grid action view props.\n */\nexport interface IQuickOrderGridActionsViewProps {\n addProductListToBag: React.ReactNode;\n removeProductList?: React.ReactNode;\n userMessage?: React.ReactNode;\n}\n\nexport const RetailDefaultOrderQuantityLimitsFeatureName: string = 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature';\n\nexport const EcommerceQuantityLimitConfigurationsFeatureName: string =\n 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductDimensionConfigureDropdownViewProps, IProductDimensionConfigureViewProps } from '@msdyn365-commerce/components';\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IQuickOrderGridViewProps, IQuickOrderGridFormViewProps } from './index';\n\n/**\n * Render product dimension/configure dropdown.\n * @param dropdown -- Product dimension drop down.\n * @returns Dropdown.\n */\nconst renderConfigureDropdown = (dropdown: IProductDimensionConfigureDropdownViewProps): JSX.Element => {\n const { containerProps, labelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n {heading}\n {errors}\n {select}\n \n );\n};\n\n/**\n * Render product dimension/configure container.\n * @param configure -- Product dimension configuration.\n * @returns Container to have dimension dropdown.\n */\nconst renderConfigure = (configure?: IProductDimensionConfigureViewProps): JSX.Element | null => {\n if (configure !== undefined) {\n const { containerProps, dropdowns } = configure;\n\n return {dropdowns.map(renderConfigureDropdown)};\n }\n return null;\n};\n\n/**\n * Render product dimension/configure container.\n * @param form -- Form props.\n * @param isMobileView -- Flag to check mobile view.\n * @param quickOrderForm - Form component container.\n * @param quickOrderProductContent - Form product component.\n * @param quickOrderMessageContent - Form user message component.\n * @param configure - Product Dimension component.\n * @returns Jsx element of quick order form component.\n */\nconst renderForm = (\n form: IQuickOrderGridFormViewProps,\n isMobileView: boolean,\n quickOrderForm: INodeProps,\n quickOrderProductContent: INodeProps,\n quickOrderMessageContent: INodeProps,\n configure?: IProductDimensionConfigureViewProps\n) => {\n return isMobileView ? (\n \n \n {form.product}\n {renderConfigure(configure)}\n {form.quantity}\n {form.userMessage}\n {form.addToListBtn}\n \n \n ) : (\n \n {form.userMessage}\n \n {form.product}\n {renderConfigure(configure)}\n {form.quantity}\n {form.addToListBtn}\n \n \n );\n};\n\n/**\n * Retrieves current sort criteria.\n * @param props - QuickOrder Grid view props.\n * @returns - Render View.\n */\nconst quickOrderGridView: React.FC = props => {\n const {\n quickOrderGridProps,\n contentProps,\n form,\n quickOrderGridForm,\n drawer,\n configure,\n quickOrderGridFormProductContent,\n quickOrderGridFormMsgContent,\n isMobileView,\n header,\n container,\n actions,\n orderActions\n } = props;\n\n return (\n \n {header}\n {actions && (\n \n {orderActions?.userMessage}\n {orderActions?.addProductListToBag}\n {orderActions?.removeProductList}\n \n )}\n \n \n {renderForm(\n form as IQuickOrderGridFormViewProps,\n isMobileView,\n quickOrderGridForm,\n quickOrderGridFormProductContent,\n quickOrderGridFormMsgContent,\n configure\n )}\n {props.bulkPurchase}\n \n \n {container}\n \n );\n};\n\nexport default quickOrderGridView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductsDimensionsAvailabilities } from '@msdyn365-commerce/commerce-entities';\nimport {\n IPriceComponentResources,\n ISwatchItem,\n PriceComponent,\n ProductComponentSwatchComponent,\n RatingComponent\n} from '@msdyn365-commerce/components';\nimport {\n getCatalogId,\n IAny,\n IComponent,\n IComponentProps,\n ICoreContext,\n IGeneric,\n IGridSettings,\n IImageData,\n IImageSettings,\n Image,\n msdyn365Commerce\n} from '@msdyn365-commerce/core';\nimport {\n AttributeSwatch,\n AttributeValue,\n ProductDimension,\n ProductPrice,\n ProductSearchResult,\n ProductType,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n convertDimensionTypeToProductDimensionType,\n Dictionary,\n DimensionTypes,\n generateImageUrl,\n getProductPageUrlSync,\n IDimensionsApp,\n StringExtensions,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n format,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nexport interface IProductComponentProps extends IComponentProps<{ product?: ProductSearchResult; productPrice?: ProductPrice }> {\n className?: string;\n imageSettings?: IImageSettings;\n savingsText?: string;\n freePriceText?: string;\n originalPriceText?: string;\n currentPriceText?: string;\n ratingAriaLabel?: string;\n ratingCountAriaLabel?: string;\n allowBack?: boolean;\n telemetryContent?: ITelemetryContent;\n quickViewButton?: React.ReactNode;\n productComparisonButton?: React.ReactNode;\n isEnabledProductDescription?: boolean;\n isPriceMinMaxEnabled?: boolean;\n priceResources?: IPriceComponentResources;\n inventoryLabel?: string;\n dimensionAvailabilities?: IProductsDimensionsAvailabilities[];\n swatchItemAriaLabel?: string;\n}\n\nexport interface IProductComponent extends IComponent {}\n\nconst PriceComponentActions = {};\n\n/**\n * Gets the product page url from the default swatch selected.\n * @param productData - Product card to be rendered.\n * @returns The default color swatch selected if any.\n */\nfunction getDefaultSwatchSelected(coreContext: ICoreContext, productData?: ProductSearchResult): AttributeSwatch | null {\n if (!productData || !productData.AttributeValues) {\n return null;\n }\n\n const siteContext = coreContext as ICoreContext;\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\n\n const attributeSwatches = productData.AttributeValues.find(\n attributeValue => attributeValue.KeyName?.toLocaleLowerCase() === dimensionToPreSelectInProductCard\n )?.Swatches;\n\n if (!ArrayExtensions.hasElements(attributeSwatches)) {\n return null;\n }\n\n const defaultSwatch = attributeSwatches.find(item => item.IsDefault === true) ?? attributeSwatches[0];\n return defaultSwatch;\n}\n\n/**\n * Gets the product image from the default swatch selected.\n * @param coreContext - Context of the module using the component.\n * @param productData - Product card to be rendered.\n * @returns The product card image url.\n */\nfunction getProductImageUrlFromDefaultSwatch(coreContext: ICoreContext, productData?: ProductSearchResult): string | undefined {\n const defaultSwatch = getDefaultSwatchSelected(coreContext, productData);\n const swatchProductImageUrls = defaultSwatch?.ProductImageUrls;\n if (!ArrayExtensions.hasElements(swatchProductImageUrls)) {\n return productData?.PrimaryImageUrl;\n }\n\n return generateImageUrl(swatchProductImageUrls[0], coreContext.request.apiSettings);\n}\n\n/**\n * Updates the product url link to product details page.\n * @param productDetailsPageUrl - Product page url.\n * @param coreContext - Context of the module using the component.\n * @param queryString - Querystring to be added to the URL.\n * @returns The update product page url.\n */\nfunction updateProductUrl(productDetailsPageUrl: string, coreContext: ICoreContext, queryString: string): string {\n const sourceUrl = new URL(productDetailsPageUrl, coreContext.request.apiSettings.baseUrl);\n if (sourceUrl.search) {\n sourceUrl.search += `&${queryString}`;\n } else {\n sourceUrl.search += queryString;\n }\n\n const updatedUrl = new URL(sourceUrl.href);\n return updatedUrl.pathname + sourceUrl.search;\n}\n\n/**\n * Gets the react node for product unit of measure display.\n * @param unitOfMeasure - DefaultUnitOfMeasure property from product.\n * @returns The node representing markup for unit of measure component.\n */\nfunction renderProductUnitOfMeasure(unitOfMeasure?: string): JSX.Element | null {\n if (!unitOfMeasure) {\n return null;\n }\n return (\n
    \n {unitOfMeasure}\n
    \n );\n}\n\n/**\n * Gets the react node for product availability.\n * @param inventoryAvailabilityLabel - The product information.\n * @returns The node representing markup for product availability.\n */\nfunction renderProductAvailability(inventoryAvailabilityLabel: string | undefined): JSX.Element | null {\n if (!inventoryAvailabilityLabel || inventoryAvailabilityLabel === '') {\n return null;\n }\n\n return (\n
    \n {inventoryAvailabilityLabel}\n
    \n );\n}\n\n/**\n * Renders product comparison button similar to the quick view button.\n * @param productComparisonButton - React element of the button.\n * @param product - Current product info.\n * @param catalogId - Current catalog.\n * @returns React element for the specific product.\n */\nfunction renderProductComparisonButton(\n productComparisonButton: React.ReactNode,\n product: ProductSearchResult,\n catalogId: number\n): JSX.Element | undefined {\n validateCatalogId(catalogId);\n return React.cloneElement(productComparisonButton as React.ReactElement, { product, catalogId });\n}\n\n/**\n * Gets the product page url from the default swatch selected.\n * @param coreContext - Context of the module using the component.\n * @param productUrl - Product page url for the product card.\n * @param productData - Product card to be rendered.\n * @returns The product card image url.\n */\nfunction getProductPageUrlFromDefaultSwatch(\n coreContext: ICoreContext,\n productUrl: string,\n productData?: ProductSearchResult\n): string | undefined {\n const defaultSwatch = getDefaultSwatchSelected(coreContext, productData);\n if (!defaultSwatch?.SwatchValue) {\n return productUrl;\n }\n\n const siteContext = coreContext as ICoreContext;\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\n\n const queryStringEncoded = encodeURIComponent(defaultSwatch.SwatchValue);\n const queryString = `${dimensionToPreSelectInProductCard}=${queryStringEncoded}`;\n return updateProductUrl(productUrl, coreContext, queryString);\n}\n\nconst ProductCard: React.FC = ({\n data,\n context,\n imageSettings,\n savingsText,\n freePriceText,\n originalPriceText,\n currentPriceText,\n ratingAriaLabel,\n ratingCountAriaLabel,\n allowBack,\n typeName,\n id,\n telemetryContent,\n quickViewButton,\n productComparisonButton,\n isEnabledProductDescription,\n isPriceMinMaxEnabled,\n priceResources,\n inventoryLabel,\n dimensionAvailabilities,\n swatchItemAriaLabel\n}) => {\n const product = data.product;\n const productPrice = data.productPrice;\n\n let productUrl = getProductPageUrlSync(product?.Name ?? '', product?.RecordId ?? Number.MIN_VALUE, context.actionContext, undefined);\n if (allowBack) {\n productUrl = updateProductUrl(productUrl, context, 'back=true');\n }\n const productImageUrlFromSwatch = getProductImageUrlFromDefaultSwatch(context, product) ?? product?.PrimaryImageUrl;\n const productPageUrlFromSwatch = getProductPageUrlFromDefaultSwatch(context, productUrl, product) ?? productUrl;\n const [productPageUrl, setProductPageUrl] = useState(productPageUrlFromSwatch);\n const [productImageUrl, setProductImageUrl] = useState(productImageUrlFromSwatch);\n React.useEffect(() => {\n setProductPageUrl(productPageUrlFromSwatch);\n setProductImageUrl(productImageUrlFromSwatch);\n }, [productUrl, productPageUrlFromSwatch, productImageUrlFromSwatch]);\n const [selectedSwatchItems] = useState(new Dictionary());\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access -- app context is generic\n const enableStockCheck = context.app.config.enableStockCheck;\n\n const siteContext = context as ICoreContext;\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\n\n /**\n * Updates the product page and Image url based on swatch selected.\n * @param coreContext - Context of the caller.\n * @param swatchItem - Dimension swatch selected.\n */\n const updatePageAndImageUrl = React.useCallback(\n (coreContext: ICoreContext, swatchItem: ISwatchItem) => {\n const dimensionType = swatchItem.dimensionType;\n selectedSwatchItems.setValue(dimensionType, swatchItem);\n if (StringExtensions.isNullOrWhitespace(swatchItem.value)) {\n return;\n }\n const queryString = `${dimensionType}=${swatchItem.value}`;\n let productPageUrlWithSwatch = '';\n if (productPageUrl.includes(dimensionType)) {\n const newUrl = new URL(productPageUrl, coreContext.request.apiSettings.baseUrl);\n newUrl.searchParams.delete(dimensionType);\n productPageUrlWithSwatch = updateProductUrl(newUrl.toString(), context, queryString);\n } else {\n productPageUrlWithSwatch = updateProductUrl(productPageUrl, context, queryString);\n }\n setProductPageUrl(productPageUrlWithSwatch);\n if (dimensionType === dimensionToPreSelectInProductCard) {\n const swatchProductImageUrl = ArrayExtensions.hasElements(swatchItem.productImageUrls)\n ? swatchItem.productImageUrls[0]\n : undefined;\n const newImageUrl = generateImageUrl(swatchProductImageUrl, coreContext.request.apiSettings);\n setProductImageUrl(newImageUrl);\n }\n },\n [selectedSwatchItems, context, productPageUrl]\n );\n\n if (!product) {\n return null;\n }\n\n /**\n * Checks if rendering the particular dimensions is allowed for product card.\n * @param dimensionType - Dimension to be displayed.\n * @returns Updates the state with new product page url.\n */\n function shouldDisplayDimension(dimensionType: string): boolean {\n const dimensionsContext = context as ICoreContext;\n const dimensionsToDisplayOnProductCard = dimensionsContext.app.config.dimensionsInProductCard;\n return (\n ArrayExtensions.hasElements(dimensionsToDisplayOnProductCard) &&\n !dimensionsToDisplayOnProductCard.includes(DimensionTypes.none) &&\n dimensionsToDisplayOnProductCard.includes(dimensionType.toLocaleLowerCase() as DimensionTypes)\n );\n }\n\n /**\n * Gets the react node for product dimension as swatch.\n * @param attributeValues - Attribute value property from product.\n * @returns The node representing markup for unit of measure component.\n */\n function renderProductDimensions(attributeValues?: AttributeValue[]): JSX.Element | null {\n if (!attributeValues) {\n return null;\n }\n\n return (\n
    \n {attributeValues.map((item: AttributeValue) => {\n const dimensionTypeValue = item.KeyName?.toLocaleLowerCase() ?? '';\n if (!shouldDisplayDimension(dimensionTypeValue)) {\n return null;\n }\n\n const siteContext = context as ICoreContext;\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\n const dimensionType = dimensionTypeValue as DimensionTypes;\n const swatches =\n item.Swatches?.map(swatchItem => {\n return {\n itemId: `${item.RecordId ?? ''}-${dimensionTypeValue}-${swatchItem.SwatchValue ?? ''}`,\n value: swatchItem.SwatchValue ?? '',\n dimensionType,\n colorHexCode: swatchItem.SwatchColorHexCode,\n imageUrl: swatchItem.SwatchImageUrl,\n productImageUrls: swatchItem.ProductImageUrls,\n isDefault: swatchItem.IsDefault,\n swatchItemAriaLabel: swatchItemAriaLabel ? format(swatchItemAriaLabel, dimensionType) : '',\n isDisabled:\n enableStockCheck &&\n dimensionAvailabilities?.find(\n dimensionAvailability => dimensionAvailability.value === (swatchItem.SwatchValue ?? '')\n )?.isDisabled\n };\n }) ?? [];\n if (\n dimensionType === dimensionToPreSelectInProductCard &&\n ArrayExtensions.hasElements(swatches) &&\n !swatches.some(swatch => swatch.isDefault)\n ) {\n swatches[0].isDefault = true;\n }\n return (\n \n );\n })}\n
    \n );\n }\n\n function renderQuickView(quickview: React.ReactNode, item?: number): JSX.Element | undefined {\n if (quickview === null) {\n return undefined;\n }\n const selectedDimensions: ProductDimension[] = selectedSwatchItems.getValues().map(swatches => {\n return {\n DimensionTypeValue: convertDimensionTypeToProductDimensionType(swatches.dimensionType),\n DimensionValue: {\n RecordId: 0,\n Value: swatches.value\n }\n };\n });\n return React.cloneElement(quickview as React.ReactElement, { selectedProductId: item, selectedDimensions });\n }\n\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', telemetryContent!, '', product.RecordId.toString());\n\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- -- Do not need type check for appsettings\n const isUnitOfMeasureEnabled = context.app.config && context.app.config.unitOfMeasureDisplayType === 'buyboxAndBrowse';\n\n return (\n <>\n {isEnabledProductDescription ? (\n \n
    \n
    \n {renderProductPlacementImage(\n imageSettings,\n context.request.gridSettings,\n productImageUrl,\n product.PrimaryImageUrl,\n product.Name,\n context\n )}\n
    \n
    \n

    {product.Name}

    \n {renderPrice(\n context,\n typeName,\n id,\n product,\n savingsText,\n freePriceText,\n originalPriceText,\n currentPriceText,\n isPriceMinMaxEnabled,\n priceResources,\n productPrice\n )}\n {isUnitOfMeasureEnabled && renderProductUnitOfMeasure(product.DefaultUnitOfMeasure)}\n {renderDescription(product.Description)}\n
    \n
    \n \n ) : (\n \n
    \n {renderProductPlacementImage(\n imageSettings,\n context.request.gridSettings,\n productImageUrl,\n product.PrimaryImageUrl,\n product.Name,\n context\n )}\n
    \n
    \n

    {product.Name}

    \n {renderPrice(\n context,\n typeName,\n id,\n product,\n savingsText,\n freePriceText,\n originalPriceText,\n currentPriceText,\n isPriceMinMaxEnabled,\n priceResources,\n productPrice\n )}\n {isUnitOfMeasureEnabled && renderProductUnitOfMeasure(product.DefaultUnitOfMeasure)}\n
    \n \n )}\n {renderProductDimensions(product.AttributeValues)}\n {!context.app.config.hideRating &&\n renderRating(context, typeName, id, product.AverageRating, product.TotalRatings, ratingAriaLabel, ratingCountAriaLabel)}\n {renderProductAvailability(inventoryLabel)}\n {quickViewButton && renderQuickView(quickViewButton, product.RecordId)}\n {productComparisonButton && renderProductComparisonButton(productComparisonButton, product, getCatalogId(context.request))}\n \n );\n};\n\nfunction renderLabel(\n name?: string,\n price?: string,\n rating?: number,\n ratingAriaLabelText?: string,\n reviewCount?: number,\n ratingCountAriaLabelText?: string\n): string {\n const reviewCountArialableText = getReviewAriaLabel(reviewCount, ratingCountAriaLabelText ?? '');\n return `${name ?? ''} ${price ?? ''} ${getRatingAriaLabel(rating, ratingAriaLabelText)}${\n reviewCountArialableText ? ` ${reviewCountArialableText}` : ''\n }`;\n}\n\nfunction renderDescription(description?: string): JSX.Element | null {\n return

    {description}

    ;\n}\n\nfunction getRatingAriaLabel(rating?: number, ratingAriaLabel?: string): string {\n if (rating && ratingAriaLabel) {\n const roundedRating = rating.toFixed(2);\n return format(ratingAriaLabel || '', roundedRating, '5');\n }\n return '';\n}\n\nfunction getReviewAriaLabel(reviewCount?: number, ratingCountAriaLabelText?: string): string {\n if (reviewCount && ratingCountAriaLabelText) {\n return format(ratingCountAriaLabelText || '', reviewCount);\n }\n return '';\n}\n\nfunction renderRating(\n coreContext: ICoreContext,\n moduleTypeName: string,\n moduleId: string,\n avgRating?: number,\n totalRatings?: number,\n ariaLabel?: string,\n ratingCountAriaLabel?: string\n): JSX.Element | null {\n if (!avgRating) {\n return null;\n }\n\n const numberRatings = totalRatings?.toString() || undefined;\n const ratingAriaLabelText = getRatingAriaLabel(avgRating, ariaLabel);\n const ratingCountAriaLabelText = getReviewAriaLabel(Number(numberRatings), ratingCountAriaLabel);\n\n return (\n \n );\n}\n\nfunction renderPrice(\n context: ICoreContext,\n typeName: string,\n id: string,\n productSearchResult: ProductSearchResult,\n savingsText?: string,\n freePriceText?: string,\n originalPriceText?: string,\n currentPriceText?: string,\n isPriceMinMaxEnabled?: boolean,\n priceResources?: IPriceComponentResources,\n productPrice?: ProductPrice\n): JSX.Element | null {\n const product: SimpleProduct = {\n // This is a fake product. The product type is only used for price component to determine if it should show price range or not.\n ProductTypeValue: productSearchResult.IsMasterProduct ? ProductType.Master : ProductType.Standalone\n } as SimpleProduct;\n\n const price: ProductPrice = productPrice ?? {\n BasePrice: productSearchResult.BasePrice,\n AdjustedPrice: productSearchResult.Price,\n CustomerContextualPrice: productSearchResult.Price,\n MaxVariantPrice: productSearchResult.MaxVariantPrice ? productSearchResult.MaxVariantPrice : productSearchResult.Price,\n MinVariantPrice: productSearchResult.MinVariantPrice ? productSearchResult.MinVariantPrice : productSearchResult.Price\n };\n\n return (\n \n );\n}\n\nfunction renderProductPlacementImage(\n imageSettings?: IImageSettings,\n gridSettings?: IGridSettings,\n imageUrl?: string,\n fallbackImageUrl?: string,\n altText?: string,\n context?: ICoreContext>\n): JSX.Element | null {\n if (!imageUrl || !gridSettings || !imageSettings) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Site level config can be of any type.\n const contextConfig = context?.app.config?.placeholderImageName;\n const emptyPlaceHolderImage = contextConfig as string;\n let fallbackImageSource = fallbackImageUrl;\n if (emptyPlaceHolderImage && fallbackImageUrl) {\n fallbackImageSource = `${fallbackImageUrl},${emptyPlaceHolderImage}`;\n }\n const img: IImageData = {\n src: imageUrl,\n altText: altText ? altText : '',\n fallBackSrc: fallbackImageSource\n };\n const imageProps = {\n gridSettings,\n imageSettings\n };\n imageProps.imageSettings.cropFocalRegion = true;\n return (\n \n );\n}\n\nexport const ProductComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride<\n IProductComponent\n>('Product', { component: ProductCard, ...PriceComponentActions });\n\nexport default ProductComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IPriceComponentResources } from '@msdyn365-commerce/components';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n ICategoryHierarchyViewProps,\n IRefineMenuViewProps,\n ISearchResultContainerViewProps,\n ISearchResultModalViewProps,\n ISortByViewProps,\n ITitleViewProps\n} from '@msdyn365-commerce-modules/search-result-container';\nimport { Button, getTelemetryObject, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { MouseEventHandler, useEffect, useState } from 'react';\n\nimport { IProductsDimensionsAvailabilities } from '@msdyn365-commerce/commerce-entities';\nimport {\n ISearchResultContainerProps,\n ISearchResultContainerResources\n} from '../definition-extensions/search-result-container.ext.props.autogenerated';\nimport { ProductComponent } from './components/product.component';\n\n/**\n * DescriptionInterval.\n */\nenum DescriptionInterval {\n productDescriptionInterval = 14,\n productDescriptionIntervalRemainder0 = 0,\n productDescriptionIntervalRemainder9 = 9\n}\n\n/**\n * Render Clear button for mobile viewport.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst renderProductCards = (props: ISearchResultContainerViewProps & ISearchResultContainerProps<{}>): JSX.Element | null => {\n return {props.products};\n};\n\n/**\n * Returns the product inventory label.\n * @param channelInventoryConfigurationId - The channel configuration Id.\n * @param product - The product.\n * @returns The inventory label.\n */\nfunction getInventoryLabel(channelInventoryConfigurationId: number | undefined, product: ProductSearchResult): string | undefined {\n if (!channelInventoryConfigurationId || !ArrayExtensions.hasElements(product.AttributeValues)) {\n return undefined;\n }\n const inventoryAttribute = product.AttributeValues.find(attribute => attribute.RecordId === channelInventoryConfigurationId);\n if (inventoryAttribute) {\n return inventoryAttribute.TextValue;\n }\n return undefined;\n}\n\n/**\n * Render Clear button for mobile viewport.\n * @param props - The view props.\n * @param product - The product item data.\n * @param index - The index of each product item.\n * @param isEnabledProductDescription - The flag for showing Product desription tile.\n * @returns The JSX Element.\n */\nconst renderProductCardsDescription = (\n props: ISearchResultContainerViewProps & ISearchResultContainerProps<{}>,\n product: ProductSearchResult,\n index: number,\n isEnabledProductDescription?: boolean\n): JSX.Element | null => {\n const { config, context, resources, productsDimensionAvailabilities } = props;\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\n const breadCrumbType = props.context.app.config.breadcrumbType;\n const isAllowBack = props.config.allowBackNavigation && (breadCrumbType === 'back' || breadCrumbType === 'categoryAndBack');\n const classname = isEnabledProductDescription\n ? 'ms-product-search-result__item product__description'\n : 'ms-product-search-result__item';\n const quickviewslot = ArrayExtensions.hasElements(props.slots.quickview) ? props.slots.quickview[0] : undefined;\n const channelInventoryConfigurationId = props.data.products.result?.channelInventoryConfigurationId;\n const isPriceMinMaxFeatureState = props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailSearchPriceRangeFeature'\n );\n const priceResources: IPriceComponentResources = {\n priceRangeSeparator: resources.priceRangeSeparator\n };\n\n const productComparisonButton = ArrayExtensions.hasElements(props.slots.productComparisonButton)\n ? props.slots.productComparisonButton[0]\n : null;\n\n return (\n
  • \n \n ArrayExtensions.hasElements(dimensionAvailability) &&\n dimensionAvailability[0].masterProductId === product.MasterProductId\n )}\n />\n
  • \n );\n};\n\n/**\n * Render Clear button for mobile viewport.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst renderProducts = (props: ISearchResultContainerViewProps & ISearchResultContainerProps<{}>): JSX.Element | null => {\n const products = props.data.listPageState.result?.activeProducts;\n if (!products || !ArrayExtensions.hasElements(products)) {\n return null;\n }\n const productDescriptionInterval: number = DescriptionInterval.productDescriptionInterval;\n const productDescriptionIntervalRemainder0: number = DescriptionInterval.productDescriptionIntervalRemainder0;\n const productDescriptionIntervalRemainder9: number = DescriptionInterval.productDescriptionIntervalRemainder9;\n return (\n \n {props.errorMessage}\n
      \n {products.map((product: ProductSearchResult, index: number) =>\n index % productDescriptionInterval === productDescriptionIntervalRemainder0 ||\n index % productDescriptionInterval === productDescriptionIntervalRemainder9\n ? renderProductCardsDescription(props, product, index, true)\n : renderProductCardsDescription(props, product, index, false)\n )}\n
    \n
    \n );\n};\n\n/**\n * Render Title Count.\n * @param props - The title view props.\n * @returns The JSX Element.\n */\nconst renderTitleCount = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return {title.titleCount};\n }\n return null;\n};\n\n/**\n * Render Category Hierarchy.\n * @param props - The category hierarchy view props.\n * @returns The JSX Element.\n */\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\n/**\n * Function to make filter sticky.\n * @param isMobile - The boolean prop.\n * @param isStickyHeader - The boolean prop.\n */\nexport const configureStickyFilter = (isMobile: boolean, isStickyHeader: boolean): void => {\n // Get heights of cookie and promotion banners\n const defaultValue = 0;\n const defaultOffset = 28;\n const headerContainer: HTMLElement | null = document.querySelector('.ms-header');\n\n const headerHeight: number | undefined = headerContainer?.offsetHeight;\n const containerHeight: number = headerHeight ?? defaultOffset;\n const bannerHeights = isStickyHeader ? defaultValue : containerHeight;\n const headerElement = document.querySelector('header .lock-opaque');\n const defaultContainer = document.querySelector('header .default-container');\n const refinerElement = isMobile ? document.querySelector('.msc-sort-filter-wrapper') : document.querySelector('.ms-refiner-heading');\n if (refinerElement && headerElement && defaultContainer) {\n if (MsDyn365.isBrowser && document.documentElement.scrollTop > bannerHeights) {\n refinerElement.classList.add('lock-Filter');\n refinerElement.setAttribute('style', `top: ${defaultContainer.clientHeight}px`);\n } else {\n refinerElement.classList.remove('lock-Filter');\n }\n } else if (refinerElement) {\n if (MsDyn365.isBrowser && document.documentElement.scrollTop > bannerHeights) {\n refinerElement.classList.add('lock-top');\n } else {\n refinerElement.classList.remove('lock-top');\n refinerElement.classList.remove('lock-Filter');\n refinerElement.removeAttribute('style');\n }\n }\n};\n\n/**\n * Function to setup filter sticky.\n * @param isMobile - The boolean prop.\n * @param isStickyHeader - The boolean prop.\n */\nfunction stickyFilterSetup(isMobile: boolean, isStickyHeader: boolean): void {\n window.addEventListener('scroll', () => {\n configureStickyFilter(isMobile, isStickyHeader);\n });\n configureStickyFilter(isMobile, isStickyHeader);\n}\n\n/**\n * Function to make filter sticky.\n * @param refinerRefernce - Ref prop for filter.\n * @param toggle - Toggle function for filter menu.\n */\nfunction useOutsideClick(refinerRefernce: React.RefObject, toggle: (event: Event) => void) {\n React.useEffect(() => {\n /**\n * Function to make filter sticky.\n * @param event - Event prop for filter.\n */\n function handleClickOutside(event: Event) {\n const element = document.querySelector('.ms-refine-filter__toggle_collapsed');\n if (refinerRefernce.current && !refinerRefernce.current.contains(event.target as Node) && !element) {\n toggle(event);\n }\n }\n if (MsDyn365.isBrowser) {\n document.addEventListener('click', handleClickOutside);\n }\n return () => {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('click', handleClickOutside);\n }\n };\n }, [refinerRefernce, toggle]);\n}\n\n/**\n * Render the category page items.\n * @param props - The view props.\n * @returns The search Result container module view.\n */\nconst SearchResultContainerView: React.FC> = props => {\n const {\n SearchResultContainer,\n pagination,\n ProductSectionContainer,\n choiceSummary,\n isMobile,\n modalToggle,\n searchResultModal,\n TitleViewProps,\n refineMenu,\n categoryHierarchy,\n sortByOptions,\n CategoryNavContainer,\n RefineAndProductSectionContainer,\n FeatureSearchContainer,\n similarLookProduct,\n errorMessage,\n resources\n } = props;\n useEffect(() => {\n if (props.config.useStickyFilter && MsDyn365.isBrowser) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app context is generic\n stickyFilterSetup(props.isMobile, props.context.app.config.enableStickyHeader as boolean);\n }\n }, [props]);\n const [isExpanded, setIsExpanded] = useState(false);\n const toggle = () => {\n setIsExpanded(!isExpanded);\n };\n const wrapperRefiner = React.useRef(null);\n useOutsideClick(wrapperRefiner, toggle);\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\n if (isMobile) {\n return (\n \n {similarLookProduct ? null : (\n \n {renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {renderTitleCount(TitleViewProps)}\n \n )}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\n {similarLookProduct}\n {errorMessage}\n {props.config.enableProdutDescription ? renderProducts(props) : renderProductCards(props)}\n {pagination}\n \n );\n }\n return (\n \n {similarLookProduct ? null : (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {TitleViewProps && renderTitle(TitleViewProps)}\n {TitleViewProps && renderTitleCount(TitleViewProps)}\n \n )}\n {similarLookProduct}\n \n \n \n \n {resources.filterText}\n \n
    {choiceSummary}
    \n
    \n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
    \n
    \n {refineMenu && isExpanded && renderRefiner(refineMenu)}\n \n {refineMenu && isExpanded && renderRefinerFooter(refineMenu, toggle, resources)}\n \n
    \n\n \n {errorMessage}\n {props.config.enableProdutDescription ? renderProducts(props) : renderProductCards(props)}\n {pagination}\n \n
    \n
    \n );\n};\n\n/**\n * Render Search result Modal.\n * @param modalProps - The Search Result Modal view props.\n * @param refineMenu - The Refine Menu view props.\n * @param sortByDropDown - The Sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\n/**\n * Render Refiner Mobile.\n * @param props - The Refine Menu view props.\n * @returns The JSX Element.\n */\nconst renderRefinerMobile = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render Search result Body.\n * @param props - The Search Result Modal view props.\n * @param refineMenu - The Refine Menu view props.\n * @param sortByDropDown - The Sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefinerMobile(refineMenu));\n }\n return null;\n};\n\n/**\n * Render Refiner.\n * @param props - The Refine Menu view props.\n * @returns The JSX Element.\n */\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render Refiner Footer.\n * @param props - The Refine Menu view props.\n * @param handler - The Refine menu toggle function.\n * @param resources - Resources to get the done text and aria label.\n * @returns The JSX Element.\n */\nconst renderRefinerFooter = (\n props: IRefineMenuViewProps,\n handler: MouseEventHandler,\n resources: ISearchResultContainerResources\n): JSX.Element | null => {\n const { refiners } = props;\n if (refiners) {\n return (\n \n \n {resources.doneText}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render sort by drop down.\n * @param props - The sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\n/**\n * Render Title.\n * @param props - The title view props.\n * @returns The JSX Element.\n */\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n \n {title.titlePrefix}\n {title.titleText}\n \n \n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\n"],"names":["props","React","className","msg","CONTENT","AddLineToTemplate","constructor","super","state","isOpen","query","products","productCatalogs","content","Search","selectedProduct","selectedCatalogId","defaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","searchTextInput","addLineButtonRef","_renderSearchForm","resources","searchButtonAriaLabel","searchModalPlaceholderText","selectCatalogTitleText","this","name","role","autoComplete","onSubmit","_onSearchSubmit","ArrayExtensions","hasElements","htmlFor","id","onChange","_onCatalogSelectionChange","_getCatalogNodes","type","autoFocus","placeholder","value","_onInputChange","ref","maxLength","color","event","preventDefault","_get","setState","Loading","_getSearchResults","then","result","length","NotFound","ProductList","catch","error","Error","_onQuantityChangeHandler","selectedQuantity","target","_onSelectItem","async","actionContext","request","apiSettings","channelId","context","varianteInput","SelectedVariantInput","product","RecordId","undefined","productVariant","getSelectedVariant","telemetry","Promise","resolve","dimensions","_getProductDimensions","selectedProductDimensions","ProductConfiguration","_onBackButtonClickHandler","_highlightSearchTerm","parsedName","unescape","replace","RegExp","dangerouslySetInnerHTML","__html","_resultCountText","searchResultsCountVerbage","toString","searchResultsCountSubject","_addItemToTemplateHandler","orderTemplateId","isMultipleCatalogFeatureEnabledInHq","catalogId","input","AddItemToOrderTemplateInput","config","quantity","DefaultUnitOfMeasure","addItemToOrderTemplate","reloadPage","window","location","reload","Number","parseInt","_toggleModalHandler","payLoad","getPayloadObject","telemetryContent","onTelemetryClick","_getCatalogs","current","focus","onComponentDidMount","_this$searchTextInput","componentDidMount","onComponentDidUpdate","_this$searchTextInput2","showBackArrow","shouldComponentUpdate","nextProps","nextState","render","addLineModalLinkText","backToResultsText","modalProps","_objectSpread","toggle","ariaLabel","Modal","Object","assign","ModalHeader","onClick","_renderContent","viewProps","imageSettings","addToTemplateHandler","onQuantityChangeHandler","highlightSearchTerm","searchForm","productProps","clickHandler","renderResultCountText","ModalBody","Spinner","progressNotificationText","notFoundSearchErrorNotice","notFoundSearchErrorRedediation","NotFoundComponent","searchErrorMessage","catalogs","getCatalogId","validateCatalogId","map","productCatalog","isSelected","key","selected","Name","searchText","searchCriteriaInput","Context","ChannelId","CatalogId","IncludeAttributes","SearchCondition","searchByCriteriaAsync","callerContext","MasterProductId","getDimensionsForSelectedVariant","GetDimensionsForSelectedVariantInput","__decorate","computed","Dropdown","selectMenu","_onChanged","selectedIndex","dropdownId","selectId","selectedValue","innerText","dropdownList","dropdownName","item","OrderTemplateQuantity","inputRef","_validateMin","minValue","min","isNaN","currentInput","currentCount","_handleChange","bind","reaction","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","disabled","incDisabled","max","currentValue","extraClass","getChangeHandler","amount","_onIncrementalChange","title","decrementButtonAriaLabel","tabIndex","pattern","onBlur","inputQuantityAriaLabel","incrementButtonAriaLabel","updatedQuantity","e","inputElement","HTMLInputElement","_debounce","setAttribute","defaultProps","observer","selectedDimensions","_getDimensionsError","dimensionName","dimensionMissingError","_addToTemplateHandler","isBusy","showAddConfirmation","errors","add","missingDimensions","dimension","DimensionTypeValue","filter","status","ProductListId","addToTemplateDuplicateError","addToTemplateGenericError","errorMessage","_onQuantityChange","newValue","totalPrice","Price","_updateDimensionValue","productDimensionFull","newValueId","DimensionValues","find","_onDimensionChanged","_this$state$errors","remainingDimensionsErrors","selection","buttonDisabled","mappedDimensions","DimensionValue","ExtensionProperties","variantProduct","dimensionInput","variantDimensions","availabilityInput","ProductAvailabilitiesForSelectedVariantInput","newAvailableQuantity","getProductAvailabilitiesForSelectedVariant","priceInput","PriceForSelectedVariantInput","productPrice","getPriceForSelectedVariant","productAvailableQuantity","unitPrice","BasePrice","sort","a","b","_getDropdownName","dimensionType","productDimensionTypeColor","productDimensionTypeConfiguration","productDimensionTypeSize","productDimensionTypeStyle","_product$Name","_product$PrimaryImage","_getFallbackImageUrl","_this$props$context$r","_product$Name2","requestContext","gridSettings","addItemToTemplateText","addLineProductUnitPricePrefix","quantitySelectLabel","addLineProductUnitOfMeasurePrefix","totalPriceLabel","isMultipleCatalogSelect","Image","altText","src","PrimaryImageUrl","fallBackSrc","getFallbackImageUrl","ItemId","app","OmniChannelMedia","loadFailureBehavior","_formatPrice","_getDimensionsNodes","ModalFooter","_getConfirmationMessage","Button","classnames","selectedDimensionNames","_dimension$DimensionV","variant","Value","addToTemplateConfirmation","values","join","_this$state$errors2","unshift","includes","Alert","assertive","price","cultureFormatter","formatCurrency","currencyCode","toFixed","selectProductButtonText","index","_generateImageUrl","_props$context$reques","primaryImageSource","generateImageUrl","fallBackImg","ProductSelectButton","buttonText","setBusy","useState","getClickHandler","OrderTemplateBulkActions","isAddDisabled","isRemoveDisabled","addHandler","onAddSelectionToBag","removeHandler","onRemoveSelection","static","selectedLines","_this$props$data$cata","searchInputAriaLabel","backButtonText","addSelectedToBagButtonText","removeSelectedToBagButtonText","addLineProps","data","isMinifiedView","OrderTemplateLines","_isChannelMultipleCatalogsFeatureEnabled","_this$props$data$feat","featureState","feature","IsEnabled","_onRemoveSelection","removeSelectedFailureMessage","removeSelectedSuccessMessage","lines","productSelection","productListLines","line","isChecked","productListLine","productListId","maxWaitTimeInMilliSeconds","removeProductListLinesAsync","userMessage","statusCssString","messageGlyph","setTimeout","warning","_getOrderTemplatePageUrl","_this$props$data$orde","url","getUrlSync","substr","indexOf","orderTemplate","productList","Id","_onAddSelectionToBag","productLine","_productLine$fullProd","_productLine$fullProd2","_productLine$fullProd3","_productLine$fullProd4","_productLine$productL","itemKey","fullProduct","ProductDetails","ProductTypeValue","AdjustedPrice","Quantity","_addItemToBag","_getCurrentUrl","reqContext","MsDyn365","isBrowser","URL","href","requestUrl","onCloseHandler","isItemAddedToOrderTemplateOpen","_renderItemAddedToCartDialog","_this$props$data$feat2","itemAddedToCartDialogData","ItemAddedToCartDialog","typeName","dialogStrings","_generateItemAddedToCartDialogResources","modalOpen","onClose","_renderPagination","fullUrl","itemsPerPage","skipCount","_getCurrentPageNumber","totalItems","totalLines","previousText","flipperPrevious","nextText","flipperNext","UncontrolledPagination","paginationAriaLabel","qsp","items","startingItem","_renderPrev","_renderNext","previousAriaLabel","nextAriaLabel","_toggleDetailsDisplayed","isDetailsDisplayed","detailedProductView","OrderTemplateMobileLineView","_updateProductUrlCatalog","productDetails","productUrl","getProductUrlSync","StringExtensions","isNullOrWhitespace","absoluteUrl","searchParams","set","_onDismiss","_changeQuantity","orderTemplateLinesData","orderTemplateLines","orderLineIndex","findIndex","LineId","newProductListLine","prevQuantity","_objectWithoutProperties","_excluded","isQuantityDisabledForUpdate","updateProductListLinesAsync","list","newLine","updatedLines","updatedOrderTemplate","ProductListLines","update","ActiveOrderTemplateLinesInput","editOrderTemplateLineQuantityError","cart","maxQuantityLimitText","addedToCartFailureMessage","addProductToCartInput","count","addProductToCart","priceResult","AsyncResult","reject","isMiniCart","addToCartBehavior","substatus","maxQuantityForCartLineItem","_cart$result","_cart$result2","cartLineQuantity","CartLines","ProductId","defaultMessage","_result$errorDetails","errorDetails","LocalizedMessage","debug","message","_removeItemFromOrderTemplateLines","user","isAuthenticated","token","userToken","featureStates","getFeatureState","createGetFeatureStateInput","_featureStates$find","_renameTemplate","_removeTemplate","deleteAsync","_orderTemplate$result","deleteOrderTemplateFailedText","newLink","_getViewport","device","Type","innerWidth","sm","md","paginationPreviousText","paginationNextText","_viewport","_updateViewport","isConfirmAddSelectionToBagModalOpen","getTelemetryObject","telemetryPageName","friendlyName","params","isEditor","signInUrl","isMobile","heading","text","addEventListener","componentWillUnmount","removeEventListener","emptyOrderTemplateLinesText","errorGettingOrderTemplateLines","ObjectExtensions","isNullOrUndefined","errorProps","moduleProps","statusMessage","Heading","renderView","OrderTemplateLinesStatusMessage","errorType","orderTemplateResult","_isFirstPage","emptyViewProps","orderActions","_renderOrderTemplateActions","bulkOrderLineActions","_getOrderTemplateLineActions","OrderTemplateActions","tag","productsStatusMessage","ProductsTable","ProductsTableRow","ProductsTableHeading","_renderProductListHeader","orderLines","_renderProductList","callbacks","updateQuantity","debounce","pagination","itemAddedToCartDialog","toggleDetailsDisplayed","onSelect","updated","_product$fullProduct","_line$fullProduct","onSelectAll","productImage","productNumberText","productText","productUnitPriceText","productUOMText","productQuantityText","productActionsText","selectAllRowsText","productLineCatalogName","headers","productNumber","productName","productUnitPrice","productUOM","productQuantity","productActions","OrderTemplateTableHeading","_generateLinesAddedToCartDialogResources","viewCartButtonText","orderTemplateCloseButtonText","linesAddedToCartHeaderItemsOneText","linesAddedToCartHeaderLinesOneText","linesAddedToCartHeaderLinesFormatText","linesAddedToCartHeaderMessageText","itemAddedToCartHeaderItemOneText","itemAddedToCartHeaderItemFormatText","itemAddedToCartHeaderMessageText","freePriceText","originalPriceText","currentPriceText","addTemplateToBagButtonText","renameTemplateButtonText","deleteTemplateButtonText","closeWindowButtonText","addToCartFailureMessage","addToCartSuccessMessage","addToCartProcessMessage","orderTemplateErrorMessage","orderTemplateActions","handlers","onRenameTemplate","onRemoveTemplate","renameOrderTemplateDialogStrings","_generateOrderTemplateNameDialogResources","linesAddedToCartDialogResources","OrderTemplateActionsView","orderTemplateHeaderLabel","renameOrderTemplateTitleText","orderTemplateTitleLabel","orderTemplateTitle","orderTemplateNameAriaLabel","orderTemplateDescription","defaultOrderTemplateName","orderTemplateButtonLabel","renameOrderTemplateButtonText","orderTemplateCancelButtonLabel","cancelBtnLabel","skip","selectOneRowText","moreButtonText","viewProductDetailsText","priceFree","addOrderTemplateItemToBagButtonText","removeItemFromOrderTemplateButtonText","deleteButtonText","unavailableProductErrorMessage","outOfStockProductErrorMessage","_line$fullProduct2","currentProductProps","orderTemplateLine","ProductPrice","shouldDisable","moduleId","moduleTypeName","onAddToBag","onRemoveItem","onChangeQuantity","removeFromOrderTemplateLinesText","addToBagButtonText","OrderTemplateLineView","observable","action","_renderItem","quantityLabel","selectLine","productLineCatalog","addToBagButton","removeButton","productInfo","productUnitOfMeasure","productQuantityView","popUp","extraActionsPopup","disableElement","pointerEvents","opacity","Node","style","toggleDetails","Module","addTemplateToBag","renameTemplate","removeTemplate","actionsSplitButton","wrapClassName","fade","applicationNode","CartIconView","_modalContainer","placement","hideArrow","isModalOpen","closeModal","_openModal","_renderCartCloseIcon","_renderCartItemCount","cartItemCount","cartlines","_escFunction","keyCode","KeyCodes","Escape","isAutoDisplayTriggered","isCartValid","isQuantityLimitsFeatureEnabled","payload","TelemetryEvent","CheckOut","TelemetryConstant","Checkout","contentAction","etext","GuestCheckout","checkoutByGuestAttributes","getTelemetryAttributes","_validateCart","componentDidUpdate","_removeCommentFromCartLine","cartState","_cartState$cart$CartL","Comment","_clonedCart","updateCart","newCartObject","_renderGuestCheckout","hasError","guestCheckoutUrl","guestCheckoutButtonTitle","_cart$result$cart$Ver","cartVersion","Version","lastValidatedCartVersion","validateCartAsync","ValidationResultsPairs","_this$props$data$cart","_this$props$data$cart2","_this$props$data$cart3","_this$props$data$cart4","shouldShowMiniCart","isProductAddedToCart","AddToCartBehavior","showMiniCart","some","cartline","miniCartWrapper","renderModuleAttributes","cartIcon","flyoutTitle","isEmpty","slots","emptyCart","CartlinesWrapper","cartLines","cartLine","cartLineIndex","miniCartItemWrapper","storeLocation","remove","promoContentItem","_props$data$cart$resu","_props$resources$tota","hasInvoiceLine","TotalAmount","emptyPrice","totalPriceFormatString","renderTotalPrice","subTotalMessage","goToCartButton","continueShoppingButtonTitle","renderCartlines","modalCloseButtonReference","onCancelHandler","isCreateOrderTemplateDialogOpen","setOrderTemplateNameDialogOpen","onCreateButtonClick","createOrderTemplateText","OrderTemplateNameDialog","isUpdateDialog","setModalOpen","createOrderTemplateDialogResources","onCancel","onSuccess","onOrderTemplateCreated","parentElementRef","_reloadPage","OrderTemplateListViewComponent","OrderTemplateList","OrderTemplates","OrderTemplate","orderTemplates","createOrderTemplateButton","templateHeaderStatusMessage","console","log","CreateNewTemplateButtonComponent","createNewTemplateButtonText","createOrderTemplateHeader","createOrderTemplateDescription","createOrderTemplateButtonText","cancelNewOrderTemplateCreationButtonText","headingForEmptyOrderTemplateList","textForEmptyOrderTemplateList","renderOrderTemplate","orderTemplateNodeProps","addToCartButton","orderTemplateImage","orderTemplateStatusMessage","orderTemplateName","orderTemplateImageElement","currentImageListLength","children","push","getExtensionPropertyValueByKey","properties","valueType","_properties$find","property","p","Key","_modalErrContainer","isErrModalOpen","closeErrModal","isErrAutoDisplayTriggered","isAddressCheckComplete","iProductsPresentVersion","customer","readAsync","customerAccountNumber","_customer$Addresses","Addresses","IsPrimary","ShippingAddress","primaryAddress","getAddresses","updateShippingAddress","newShippingAddress","_cart$cart","ippContent","iProductsPresent","CommercePropertyValueEnum","string","ineligibleProductsText","JSON","parse","r","Barcode","Description","err","handleCartAddress","allowableFreight","invoiceInCartMessage","document","_data$detail$Products","detail","Products","removeCartLines","cartLineIds","_props$data$cart$resu2","checkoutAsSignInUserButton","checkoutAsGuestButton","CarouselModule","_handleDismissCarousel","cookies","dismissCarousel","_next","nextIndex","activeIndex","animating","closeNow","_previous","_onExiting","_onExited","_goToIndex","newIndex","get","carouselContainer","closeAnimation","next","previous","onIndicatorsClickHandler","handleDismissCarousel","handleOnExited","handleOnExiting","retrieveItems","Carousel","pause","pauseOnHover","ride","autoplay","interval","transitionType","hideFlipper","dismissEnabled","dismissCarouselAriaText","ariaLabelForDismissButton","indicatorAriaText","ariaLabelForSlide","directionTextPrev","directionTextNext","keyboard","propsContext","cartResult","shouldRetry","arguments","_validationResult$Val","validationResult","CartsDataActions","bypassCache","ValidationResultsByLineId","refreshCart","refreshError","validateError","cartLineQuantityUpdatedAsync","cartLineToUpdate","isUsingDefaultOrderSettingsMax","_modifiedProduct$Beha2","modifiedProduct","Behavior","MaximumQuantity","cartLineId","newQuantity","additionalProperties","updateLineResult","updateCartLineQuantity","getProductByProductId","productId","getProductByProductIdAndWarehouse","warehouseId","targetWarehouseValue","WarehouseId","_product$Behavior","InventoryLocationId","_renderDeliveryLocation","deliverylocation","FulfillmentStoreId","_foundProductDelivery","orgUnitName","_getOrgUnitName","orgUnitLocations","foundProductDeliveryOption","productDeliveryOptions","deliveryOption","delivery","DeliveryOptions","option","Code","DeliveryMode","shippingText","_renderStoreLocation","fulfillmentStoreId","foundLocation","orgUnitLocation","OrgUnitNumber","OrgUnitName","_assembleCartlines","reactNodes","foundProductAvailability","_foundProductAvailabi","productAvailabilites","productAvailability","_productAvailability$","ProductAvailableQuantity","_assembleNode","foundProductDeliveryOptions","removeButtonText","removeItemClickHandler","availableQuantityInStock","isStockCheckEnabled","outOfStockThreshold","AvailableQuantity","_getCartItemAvailableQuantity","maxQuantity","_getCartItemMaxQuantity","maxQuantityByConfig","maxByQuantityLimitsFeature","maxByQuantityLimitsFeatureResult","maxCartlineQuantity","isServiceItem","ItemTypeValue","ReleasedProductType","Service","onRemoveClickHandler","onRemoveClickFunction","RemoveCartItem","removeCartItemAttribute","isChannelTypeB2B","_cartline$CatalogId","CartLineItemComponent","currentQuantity","isOutOfStock","isQuantityEditable","primaryImageUrl","displayMode","channelDeliveryOptionConfig","deliveryLocation","getMiniCartData","ctx","miniCartData","getActiveCartProductsAction","ActiveCartProductsInput","exception","getAvailabilitiesForCartLineItems","ProductAvailabilitiesForCartLineItems","availableQuantity","getDeliveryOptionsForCartLineItems","ProductDeliveryOptionsForCartLineItems","deliveryOptions","CartIcon","retailMultiplePickUpOptionEnabled","getSortedCartLines","sortOrder","item1","item2","_item2$LineNumber","_item1$LineNumber","LineNumber","_item1$LineNumber2","_item2$LineNumber2","_getImageSettings","_removeItemFromCartHandler","cartlineToRemove","checkoutBySignInAttributes","ViewShoppingBag","viewShoppingBagAttributes","_this$props$data$orgU","_setQuantityLimitsFeatureFlag","prevProps","_cart$cart$CartLines","_this$state$miniCartD","_this$state$miniCartD2","_this$props$data$chan","enableHoverCart","isAnonymousCheckout","cartUrl","checkoutURL","_getCheckoutURL","isCartEmpty","emailDeliveryModeCode","channel","EmailDeliveryModeCode","_getCartLines","validInventoryAcrossCartLines","validateCartLinesInventory","isValid","includeFlyout","totalItemsInCart","goToCartButtonText","goToCartButtonTitle","flyoutTooltip","UncontrolledTooltip","trigger","shouldShowCloseButton","cartPageUrl","hideAriaHidden","priceString","CartIconComponent","cartLabel","cartQtyLabel","FlyoutContainer","checkoutButtonTitle","checkoutBlockedDueToUnavailableFunds","isAbsoluteUrl","urlCheck","returnURL","msdyn365Commerce","origin","PickupDeliveryModeCode","FlyoutCartLineItems","cartLinesSortOrder","enableStockCheck","updateMaxQuantityForCartLineItem","sizeString","colorString","configString","styleString","quantityDisplayString","quantityDisplayText","salesAgreementPricePrompt","discountStringText","shippingChargesText","removeCartButtonText","outOfStockText","outOfRangeOneText","outOfRangeFormatText","pickupDeliveryModeCode","_featureStatuses$find","_featureStatuses$find2","featureStatuses","_this$props$context","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","_featureStatuses$find3","customerInformation","customerInfo","IsB2b","_cartConfiguration$Ig","cartConfiguration","IgnoreOrderSettings","_renderCartlines","CatalogLabelComponent","isB2b","catalog","CartLineItemFunctions","renderProductDimensions","Product","DimensionStrings","Dimensions","productDimension","IsGiftCard","amountString","DiscountLines","discountLine","OfferId","OfferName","PriceComponent","isSalesLine","CustomerContextualPrice","PeriodicDiscount","EffectiveAmount","priceCurrency","EffectivePercentage","inventoryInformationLabel","inventoryCssName","inventoryLabelClassName","IsInvoiceLine","unitOfMeasureDisplayType","hasShippingMethod","_channelDeliveryOptio","PickupDeliveryModeCodes","deliveryMode","shippingChargeLines","ChargeLines","chargeLine","IsShipping","freightFee","reduce","chargeTotal","CalculatedAmount","priceComponent","_cartline$ChargeLines","otherCharges","chargeline","otherCharge","SalesAgreementLineRecordId","_props$context$reques2","_props$primaryImageUr","destructDimensionStrings","fallbackImageUrl","productDimensions","cropFocalRegion","renderDisountLines","renderInventoryLabel","renderUnitOfMeasure","renderShippingLabel","renderOtherCharges","renderSalesAgreementPrompt","productAttribute","imgeClassName","quantityOnChange","lineIndex","NetAmountWithAllInclusiveTax","GrossAmount","ExtendedPrice","NetPrice","salesAgreementLineId","showShippingChargesForLineItems","_generateQuantityandPrice","nodes","IncrementalQuantity","isCartStateReady","isGiftCard","classNames","DiscountAmount","priceEditorResources","CartLinePriceEditor","onRemoveOrderTemplate","removeOrderTemplateActionHandler","OrderTemplateRender","removeFromOrderTemplateListText","orderTemplateState","enableImageProductLink","onDismiss","_renderOrderTemplateImages","orderTemplateAriaLabel","_renderAriaLabel","_getUrlSync","separator","AddOrderTemplateToCartComponent","addToCartText","addToBagText","onClickHandler","slice","_line$productListLine","_line$fullProduct$Pro","_line$fullProduct$Pro2","_line$fullProduct3","_line$fullProduct4","_context$request$app","OrderTemplateListStatusMessage","_ref","_onRemoveFromOrderTemplateList","headerStatusMessage","_heading$text","_heading$tag3","emptyOrderTemplateText","orderTemplatesData","orderTemplateListHeading","orderTemplateListTitle","_heading$tag","_heading$tag2","_renderOrderTemplateList","currentTemplateProps","OrderTemplateListView","_renderOrderTemplate","removeOrderActionHandler","_removeOrderTemplate","_getOrderTemplateAddToCartDialog","_getOrderTemplateRenameControl","ActionsSplitButton","RenameOrderTemplateComponent","buttonEventReference","isStatementRequestAdminDropdownOpen","setIsStatementRequestAdminDropdownOpen","renameOrderTemplateDialogOpen","onToggleDropdown1","popoverReference","renderModalPopup","existingOrderTemplate","onOrderTemplateNameCancel","_buttonEventReference","requestStatementDropdownString","Random","Guid","generateGuid","innerRef","Popover","OrderTemplateLineActions","getAddToBag","getRemoveItem","PopUp","showMobile","setShowMobile","getActionButton","removeButtonClassName","addButtonClassName","getDesktopActionButton","onSelectLineHandler","checked","UnitOfMeasure","fallbackImage","renderProductCatalog","_renderProductImage","renderProductInfo","_renderPrice","_renderProductError","_generateQuantity","ExtraActionsPopup","showActions","setShowActions","actionsContainerClassName","_context$request$app2","onChangeHandler","image","_context$actionContex","_context$request","OOS","UNASSORTED","NONE","_orderTemplateLine$fu","_renderProductDimensions","dimensionsLine","componentClassName","getOnChange","checkedLines","scope","ProductComparisonPreview","_renderGreyPlaceHolders","productData","counts","greyPlaceHoldersCount","displayGreyPlaceHolders","elements","_removeProductFromList","itemId","_this$props$data$acco","ProductComparisonState","instance","accountInformation","removeItemById","previousState","_previousState$produc","productsData","_handleCollapseClick","_previousState$isExpa","isExpanded","_hasUserInteractedWithComparison","_clearAllProductsFromTheComparison","_this$props$data$acco2","clearAll","_instanceId","_displayedInstanceId","_this$props$data$acco3","_loadProducts","listModifiedEvent","subscribe","instanceId","handler","_this$props$data$acco4","unsubscribe","_this$state$productsD","_this$props$data$prod","collapseButton","_renderCollapseButton","isMainContentReady","hasUserInteractedWithComparison","_getProdutComparisonDataByCatalogId","productsLimit","_getProductsLimit","subheaderText","productComparisonPreviewHeaderTextWithLimit","handleCollapseClick","productsMainInfo","_getProductsMainInfo","previewGreyPlaceHolders","productComparisonLink","clearAllProductsFromTheComparison","removeProductFromList","goToComparisonButton","_renderGoToComparisonButton","clearAllButton","_renderClearAllButton","_productData$filter","_this$props$data$acco5","GetProductsInPreviewProductComparisonInput","getProductsInPreviewProductComparisonAction","productDataByCatalogId","_getGreyPlaceHoldersCount","limit","placeHolder","productImageContainerClassName","tableRowClassName","productImageClassName","productNameClassName","productNameLink","_product$Dimensions","dimensionValue","convertProductDimensionTypeToDimensionTypes","removeFromComparisonButton","RemoveFromComparisonButtonComponent","productLink","viewport","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","defaultImageSettingQ","_this$state$isExpande","shouldBeExpanded","headerContainerClassName","mainContainerClassName","collapseClassName","collapseButtonClassName","footerClassName","productComparisonCompareProductsButtonText","productComparisonClearAllProductsButtonText","containerClassName","headerClassName","headerLabelClassName","tableClassName","ProductComparisonPreviewViewFunctionalComponent","_props$isExpanded","_props$productsMainIn","_props$productsMainIn2","productComparisonPreviewHeaderText","info","SpecificationDataTypeValues","ProductSpecification","CurrencyValue","CurrencyCode","_product$DateTimeOffs","isFunction","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","TextValue","getRichTextHtml","_specification$DataTy","specification","DataTypeValue","none","currency","_renderCurrencyCell","dateTime","_renderDateTimeCell","decimal","_renderDecimalCell","integer","_renderIntegerCell","_renderTextCell","boolean","_renderTrueFalseCell","video","BooleanValue","productComparisonProductItemSpecificationTrue","productComparisonProductItemSpecificationFalse","RemoveFromComparisonButtonFunctionalComponent","useCallback","productComparisonRemoveProductFromListAriaLabel","SelectionType","ProductClickerDirections","ProductComparison","_clearAllProductsFromComparison","_configureBoxShadowOnScroll","_this$_tableReference","_tableReference","comparisonProductCardHeader","getElementsByClassName","tableHeaderClassName","Array","from","documentElement","scrollTop","classList","tableHeaderLockedClassName","_handleScroll","_this$_tableHeaderRef","_tableHeaderReference","scrollTo","top","currentTarget","left","scrollLeft","_checkClickersState","_handleScrollClick","direction","_this$_tableBodyRefer","_this$_tableCellRefer","_document$body$parent","tableBody","_tableBodyReference","newLeftPosition","cellWidth","_tableCellReference","clientWidth","_getCellWidth","scrollPosition","Math","ceil","minLeftPosition","maxScroll","scrollWidth","body","parentElement","getAttribute","currentClickerPosition","change","hoverStateLastUpdate","Date","now","hoveringCellItemId","_handlePreviousClick","_document$body$parent2","right","_handleNextClick","_document$body$parent3","_this$_tableBodyRefer2","floor","_this$_tableBodyRefer3","_document$body$parent4","_shouldShowNextClicker","forceUpdate","_shouldShowPreviousClicker","newClickerPosition","_handleHoverIn","_hoveringCellItemId","_handleHoverOut","_goBack","backToShoppingUrl","referrer","history","back","specifications","_product$specificatio","specificationsList","allSpecifications","flatten","specificationNames","validValues","AttributeValueId","uniqueSpecificationNames","unique","allDimensions","dimensionIds","actionBarClassName","clearAllProductsFromComparison","isEmptyContent","_renderHeading","loading","_renderLoading","actionBarContainerProps","_getActionBarContainerProps","previousClicker","_renderPreviousClicker","nextClicker","_renderNextClicker","backToShopping","_renderBackToShoppingButton","emptyComparison","emptyComparisonContentSlots","_getProductComparisonDataByCatalogId","isConsentGiven","productCountText","productComparisonCountText","productsMainInfoData","allUniqueDimensionIds","getProductsDimensionsIds","updatedDimensionProps","getUpdatedDimensionsProps","tableReference","tableHeaderReference","tableBodyReference","tableCellReference","shouldShowPreviousClicker","shouldShowNextClicker","handlePreviousClick","handleNextClick","handleScroll","handleHoverIn","handleHoverOut","uniqueDimensionIds","_getProductsDimensions","dimensionsProps","uniqueSpecifications","_getProductsSpecifications","specificationsProps","_getSpecificationProps","GetProductsInProductComparisonInput","getProductsInProductComparisonAction","_renderQuickView","_product$productInfo$","quickViewSlot","quickViews","selectedProductId","defaultImageSettingsQ","_getTableHeaderProps","isHoverModeEnabled","tableHeaderCellClassName","onMouseEnter","onMouseLeave","_getTableCellProps","cellClassName","tableCellClassName","_renderProductRating","rating","_ratingValue$reviewsC","averageRating","ratingValue","RatingComponent","avgRating","readOnly","format","productComparisonProductItemRatingAriaLabel","ratingCount","reviewsCount","shouldShowFullRatingDescription","backToShoppingLabel","_getDimensionName","dimensionId","ProductDimensionType","Color","productComparisonProductItemColorDimension","Size","productComparisonProductItemSizeDimension","Style","productComparisonProductItemStyleDimension","dimensionClassName","dimensionsRowClassName","dimensionDescription","dimensionSelectionType","dimensionsAsSwatchConfiguration","dimensionsAsSwatchType","DimensionTypes","swatch","productDimensionValues","productMainInfo","_this$props$data$prod2","renderSwatch","textValue","productsDimension","_productsDimension$di","_productsDimension$di2","dimensionItems","dimensionItem","_dimensionItem$map","currentDimensionId","swatches","swatchItem","_productMainInfo$prod","_swatchItem$Dimension2","_swatchItem$Dimension3","_swatchItem$Dimension4","_swatchItem$Dimension5","_swatchItem$Dimension6","_swatchItem$Dimension7","_swatchItem$Dimension8","_swatchItem$Dimension9","isDefaultDimension","selectedDimension","_swatchItem$Dimension","DimensionId","colorHexCode","ColorHexCode","imageUrl","ImageUrl","isDefault","SwatchComponent","isSelectionEnabled","_dimensionItem$Dimens","_dimensionItem$Dimens2","productDimensionSeperatorValue","productDimensionSeparator","dimensionProps","node","specificationClassName","specificationsRowClassName","specificationValues","_productMainInfo$prod2","productSpecification","productSpecifications","productComparisonTitle","productComparisonLoadingText","productComparisonClearAllButtonAriaLabel","productComparisonClearAllButtonText","tableClickerClassName","onKeyUp","productComparisonPreviousProduct","productComparisonNextProduct","_renderRemoveFromComparisonButton","productRowClassName","currentCatalogId","productUrlLink","_product$productInfo$2","_dimension$DimensionV2","isFromCurrentCatalog","productPriceClassName","cellNewWidth","width","minWidth","maxWidth","cellContainerProps","productComparisonProductItemFreePrice","productComparisonProductItemOriginalPrice","productComparisonProductItemCurrentPrice","quickView","goToProductDetailsButton","productComparisonGoToProductDetailsButtonText","tableCellProps","tableHeaderProps","productRating","productDescription","_renderProductDescription","tableBodyClassName","tableRowContentClassName","tableRowContentInformationClassName","renderDynamicHeaderCells","headerName","tabindex","renderDynamicCells","ProductComparisonViewFunctionalComponent","_props$productsMainIn5","_props$dimensionsProp","_props$specifications","_props$productsMainIn8","_props$productsMainIn9","actionsClassName","onScroll","_props$productsMainIn3","_props$productsMainIn4","productComparisonProductItemRating","description","_props$productsMainIn6","_props$productsMainIn7","productComparisonProductItemDescription","specificationProps","isNullOrEmpty","productComparisonProductItemSku","AddToCartProductListComponent","_quickOrderTemplate$q","_quickOrderTemplate$q2","quickOrderTemplate","quickOrderTemplateLines","buttonLabel","quickOrderGridBuySelectedButtonText","buttonAriaLabel","quickOrderGridBuySelectedButtonAriaLabel","_props$resources$quic","_props$resources$quic2","_props$resources$quic3","_props$resources$quic4","_props$resources$quic5","_props$resources$quic6","_props$resources$quic7","_props$resources$free","_props$resources$orig","_props$resources$curr","_props$resources$adde","_props$resources$quic8","_props$resources$quic9","goToCartText","quickOrderGridGoToCartText","continueShoppingText","quickOrderGridDialogCloseText","closeNotificationLabel","quickOrderGridBuySelectedAddingToCartErrorNotificationCloseAriaLabel","headerItemOneText","quickOrderGridSingleItemText","headerItemFormatText","quickOrderGridMultiLineItemFormatText","headerLinesFormatText","quickOrderGridMultiLinesFormatText","headerMessageText","quickOrderGridHeaderMessageText","addedQuantityText","buyAgainNotificationTitle","quickOrderGridBuySelectedAddingToCartErrorNotificationTitle","buyAgainNotificationCloseAriaLabel","getDialogStrings","orderDetailProducts","quickOrder","orderDetails","quickLine","_quickLine$fullProduc","salesLine","OrderDetailsProduct","getOrderDetails","AddToCartComponent","addToCartArialLabel","navigationUrl","shouldSkipSiteSettings","orderDetailsProducts","onError","getQuickOrderGridAddToCartDialog","moduleClassName","_result$cartActionRes","cartActionResult","onErrorMessage","removeActionHandler","removeProductList","removeQuickOrderList","QuickOrderGridDrawer","_props$collapseProps$","_props$collapseProps","_isManuallyToggled","onToggle","collapseProps","_drawerGlyphClass","toggleGlyphClassName","closeGlyph","isAnimateGlyph","_drawerOpenGlyph","openGlyph","_drawerCloseGlyph","drawerClass","drawerButtonClassName","toggleButtonProps","block","isDisabled","_generateDrawerButtonInnerMarkup","Collapse","isCollapseState","drawerButtonTextClass","toggleButtonClassName","headingDrawerClass","descriptionDrawerClass","moduleHeadingText","moduleDescriptionText","_generateGlyphMarkup","glyphClass","QuickOrderGridFormComponent","productTextInput","quantityTextInput","quickOrderGridState","maxChars","minQuantity","isAddtoListDisabled","ariaLabelQuantity","ariaLabelProduct","ariaLabelAddtoCart","handleQuantityChange","handleInputChange","handleAddProductListClick","onInputChange","onInputChangeFunction","onQuantityInputChange","onQuantityChangeFunction","productNode","quantityNode","addToListBtn","stateMessage","messageText","QuickOrderGridProduct","QuickOrderGridDesktopHeaderCellsComponent","columnWithNumberClassName","quickOrderGridProductNumberText","quickOrderGridProductText","quickOrderGridUnitPriceText","quickOrderGridUnitOfMeasureText","quickOrderGridQuantityText","quickOrderGridActionsText","QuickOrderGridMobileHeaderCellsComponent","QuickOrderGridTableHeaderComponent","rowClassName","headerCells","QuickOrderGridTableRowProductImageComponent","_props$data$product$p","_props$imageSettings","setShowPreviousActions","onRemoveHandler","quickOrderGridProductKey","QuickOrderGridExtraActionsPopupComponent","_props$data$product$p2","quickOrderGridViewDetailsButtonAriaLabel","quickOrderGridViewDetailsButtonText","shouldShowActions","getProductPageUrlSync","onClickViewDetails","shouldShowActionsNewValue","quickOrderGridRemoveItemButtonAriaLabel","QuickOrderGridDesktopTableRowCellComponent","_props$data$product$p3","_productListLine$Line","quickOrderGridProductDimensionsSeparator","renderProductPrice","quickOrderGridInputQuantityAriaLabel","quickOrderGridDecrementButtonAriaLabel","quickOrderGridIncrementButtonAriaLabel","QuickOrderGridMobileTableRowCellComponent","_props$data$product$p4","_productListLine$Line2","QuickOrderGridTableRowComponent","Viewport","QuickOrderGridTableComponent","setIsMobile","isMobileView","quickOrderGridProducts","isOrderQuantityLimitsFeatureEnabled","updateViewport","quickOrderProduct","_product$ProductDetai","_quickOrderProduct$pr","_quickOrderProduct$pr2","behavior","MinimumQuantity","callBacks","QuickOrderGrid","_this$props$data$feat3","_this$props$data$feat4","_this$props$data$feat5","_cartConfiguration$re","_cartConfiguration$re2","_waitTime","_dimensionUpdateQueueMaxLength","_errorCssClass","_errorCssGlyphClass","_dimensionUpdateQueue","FinitePromiseQueue","_dimensions","_initializedDimensions","Set","_cssClassNameConfigure","_className","_isOrderQuantityLimitsFeatureEnabled","_isChannelLimitsFeatureEnabled","_applyDefaultOrderSettingsForCartLine","_quickOrderGridCallbacks","initializeDimension","initializedDimension","dimensionSelectedAsync","selectedDimensionId","selectedDimensionValueId","_this$state$productDi","size","enqueue","_updateDimensions","FinitePromiseQueueError","ProcessWasDiscardedFromTheQueue","getDropdownName","changeUpdatingDimension","isUpdatingDimension","_quickOrderGridRowCallbacks","_removeItemRowFromTable","productListLineId","_changeRowQuantity","_removeProductList","ProductListsDataActions","_updateStatusState","quickOrderGridDeleteProductListFailedText","_handleInputChange","productResponse","_cancellabelDebounce","cancel","isQuickOrderGridFormExpanded","getScanResult","GetScanResultInput","results","ProductDimensionFull","_updateQuantitiesInState","_handleQuantityChange","_this$state$productRe","_quantityInput","minimumQuantity","needToUpdateUIValue","_behavior$MinimumQuan","newCurrentValue","_this$state$productRe2","Configuration","productDimensionTypeAmount","hasProductDimensions","dimensionsToUpdate","productDimensionErrorState","otherError","clearOtherErrorState","dimensionKey","keys","configureErrors","errorState","_this$_updateDimensio","newProduct","_getDimensionErrorString","dimensionTypeValue","amountErrorMessage","quickOrderGridproductDimensionTypeAmountErrorMessage","quickOrderGridproductDimensionTypeColorErrorMessage","quickOrderGridproductDimensionTypeConfigurationErrorMessage","quickOrderGridproductDimensionTypeSizeErrorMessage","quickOrderGridproductDimensionTypeStyleErrorMessage","_productResponse$Dime","_getConfigureErrors","quickOrderGridWrongQuantityErrorMsg","quickOrderTemplateLinesData","previousQuantity","updatedProductList","ActiveProductListInput","_addItemToProductListLine","quickOrderGridAddedToGridSuccessMessage","quickOrderGridAddedToGridFailureMessage","quickOrderGridAddedToGridDuplicateError","_productResponse$Defa","_createProductList","AddItemToProductListInput","addItemToProductListAction","CreateProductListInput","ProductListType","QuickOrder","createProductList","_productTextInput","_telemetryContent","_quickOrderGridFormClass","_quickOrderGridFormProductContent","_quickOrderGridFormMsgContent","ValidateDefaultOrderSettingsPerLine","_this$state$min","_this$state$max","quickOrderGridModuleHeading","quickOrderGridModuleDescription","quickOrderGridAddtogrid","quickOrderGridProductQuantityInputLabel","quickOrderGridProductInputLabel","quickOrderGridProductDimensionTypeColor","quickOrderGridProductDimensionTypeConfiguration","quickOrderGridSelectDimensionFormatString","quickOrderGridProductDimensionTypeSize","quickOrderGridProductDimensionTypeStyle","quickOrderGridProductDimensionTypeAmount","quickOrderGridModulePageHeading","productConfigureResources","selectDimensionFormatString","header","quickOrderGridProps","contentProps","isB2bCustomer","actions","drawer","bulkPurchase","_renderBulkPurchase","quickOrderGridForm","quickOrderGridFormProductContent","quickOrderGridFormMsgContent","form","configure","getProductConfigure","container","_renderListContainer","_renderQuickOrderGridActions","quickOrderGridDeleteButtonText","userMessageNode","topStateMessage","addProductListToBag","QuickOrderGridActionsView","isBulkPurchaseEnabled","bulkPurchaseSlots","containerClass","_renderQuickOrderTable","_initQuickOrderGridProducts","quickOrderGridProduct","_getMinQuantityForCartLineItem","_getMaxQuantityForCartLineItem","_getQuantity","_getIgnoreOrderSettings","_product$Behavior2","_cartConfiguration$re3","_cartConfiguration$re4","applyDefaultOrderSettingsForCartLine","_product$Behavior3","defaultQuantity","DefaultQuantity","renderConfigureDropdown","dropdown","containerProps","labelContainerProps","select","renderConfigure","dropdowns","renderForm","quickOrderForm","quickOrderProductContent","quickOrderMessageContent","getDefaultSwatchSelected","coreContext","_productData$Attribut","_attributeSwatches$fi","AttributeValues","dimensionToPreSelectInProductCard","attributeSwatches","attributeValue","_attributeValue$KeyNa","KeyName","toLocaleLowerCase","Swatches","IsDefault","updateProductUrl","productDetailsPageUrl","queryString","sourceUrl","baseUrl","search","pathname","renderProductUnitOfMeasure","unitOfMeasure","renderLabel","ratingAriaLabelText","reviewCount","ratingCountAriaLabelText","reviewCountArialableText","getReviewAriaLabel","getRatingAriaLabel","ratingAriaLabel","roundedRating","renderPrice","productSearchResult","savingsText","isPriceMinMaxEnabled","priceResources","IsMasterProduct","ProductType","Master","Standalone","MaxVariantPrice","MinVariantPrice","renderProductPlacementImage","_context$app$config","contextConfig","placeholderImageName","fallbackImageSource","img","imageProps","bypassHideOnFailure","ProductComponent","createComponentOverride","component","_product$RecordId","_getProductImageUrlFr","_getProductPageUrlFro","ratingCountAriaLabel","allowBack","quickViewButton","productComparisonButton","isEnabledProductDescription","inventoryLabel","dimensionAvailabilities","swatchItemAriaLabel","MIN_VALUE","productImageUrlFromSwatch","defaultSwatch","swatchProductImageUrls","ProductImageUrls","getProductImageUrlFromDefaultSwatch","productPageUrlFromSwatch","SwatchValue","encodeURIComponent","getProductPageUrlFromDefaultSwatch","productPageUrl","setProductPageUrl","productImageUrl","setProductImageUrl","selectedSwatchItems","Dictionary","updatePageAndImageUrl","setValue","productPageUrlWithSwatch","newUrl","delete","swatchProductImageUrl","productImageUrls","newImageUrl","attribute","isUnitOfMeasureEnabled","AverageRating","TotalRatings","attributeValues","_item$KeyName$toLocal","_item$KeyName","_item$Swatches$map","_item$Swatches","dimensionsToDisplayOnProductCard","dimensionsInProductCard","shouldDisplayDimension","_item$RecordId","_swatchItem$SwatchVal","_swatchItem$SwatchVal2","_dimensionAvailabilit","SwatchColorHexCode","SwatchImageUrl","dimensionAvailability","_swatchItem$SwatchVal3","ProductComponentSwatchComponent","onSelectDimension","hideRating","totalRatings","numberRatings","renderRating","inventoryAvailabilityLabel","quickview","getValues","convertDimensionTypeToProductDimensionType","renderQuickView","renderProductComparisonButton","DescriptionInterval","renderProductCards","ProductsContainer","getInventoryLabel","channelInventoryConfigurationId","inventoryAttribute","renderProductCardsDescription","_props$data$products$","_props$data$featureSt","productsDimensionAvailabilities","breadCrumbType","breadcrumbType","isAllowBack","allowBackNavigation","classname","quickviewslot","isPriceMinMaxFeatureState","priceRangeSeparator","masterProductId","renderProducts","_props$data$listPageS","listPageState","activeProducts","productDescriptionInterval","productDescriptionIntervalRemainder0","productDescriptionIntervalRemainder9","renderTitleCount","TitleContainer","titleCount","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","configureStickyFilter","isStickyHeader","headerContainer","querySelector","headerHeight","offsetHeight","bannerHeights","headerElement","defaultContainer","refinerElement","clientHeight","removeAttribute","createSearchResultModal","refineMenu","sortByDropDown","isRecoSearchPage","modal","modalHeader","createModalBody","modalFooter","modalBody","renderSort","refiners","RefineMenuContainer","RefinerSectionContainer","submenu","renderRefinerMobile","renderRefiner","renderRefinerFooter","doneAriaLabel","doneText","SortingContainer","renderTitle","titlePrefix","titleText","_props$context$action","SearchResultContainer","ProductSectionContainer","choiceSummary","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","useEffect","useStickyFilter","stickyFilterSetup","enableStickyHeader","setIsExpanded","wrapperRefiner","refinerRefernce","handleClickOutside","element","contains","useOutsideClick","recommendation","enableProdutDescription","filterText"],"sourceRoot":""}