{"version":3,"file":"static/js/268c72b4b3678ec3e47d.bundle.js","mappings":";qNAUM,MAAOA,EAAbC,cAGW,KAAAC,YAAc,IAAM,0BACpB,KAAAC,mBAAqB,IAAM,0BAC3B,KAAAC,cAAgB,IAA0B,aACrD,EAyBA,QAAeC,EAAAA,GAAoC,CAC/CC,OATJC,eAAoDC,EAAuCC,GAKvF,MAAO,CAAEC,iBAAkB,EAC/B,EAKIC,GAAI,4CACJH,MAnBiBI,GACV,IAAIZ,yNCZf,IAAqBa,EAArB,cAAsCC,EAAAA,cAUlCb,YAAYc,GACRC,MAAMD,GAJF,KAAAE,SAA8CH,EAAAA,YAgM9C,KAAAI,aAAe,KACnB,MAAMC,OAA8BC,IAAnBC,KAAKN,MAAMO,IAAoB,EAAID,KAAKN,MAAMO,IAC3DC,MAAMF,KAAKG,MAAMC,eAAkBJ,KAAKG,MAAMC,aAAeN,EAC7DE,KAAKK,SAAS,CAAED,aAAcN,IAAY,KAAQE,KAAKN,MAAMY,UAAYN,KAAKN,MAAMY,SAASN,KAAKG,MAAMC,aAAa,IAErHJ,KAAKN,MAAMY,UAAYN,KAAKN,MAAMY,SAASN,KAAKG,MAAMC,eAhM1DJ,KAAKG,MAAQ,CAAEC,aAAcV,EAAMa,cAAgB,EAAGC,aAAa,GACnER,KAAKS,aAAeT,KAAKS,aAAaC,KAAKV,MAC3CA,KAAKW,aAAeX,KAAKW,aAAaD,KAAKV,MAC3CA,KAAKY,cAAgBZ,KAAKY,cAAcF,KAAKV,MAC7CA,KAAKa,SAAUC,EAAAA,EAAAA,kBAAiB,QAASd,KAAKN,MAAMqB,iBAAmB,GAC3E,CAEOC,mBAAmBC,GACjBjB,KAAKN,MAAMwB,UAAYlB,KAAKG,MAAMC,eAAiBJ,KAAKN,MAAMa,cAAgBU,EAAUV,eAAiBP,KAAKN,MAAMa,cACrHP,KAAKK,SAAS,CAAED,aAAcJ,KAAKN,MAAMa,cAAgB,IAGzDP,KAAKN,MAAMwB,WAAalB,KAAKG,MAAMK,aACnCR,KAAKK,SAAS,CAAEG,aAAa,KAG5BR,KAAKN,MAAMwB,UAAYlB,KAAKG,MAAMK,aACnCR,KAAKK,SAAS,CAAED,aAAcJ,KAAKN,MAAMa,cAAgB,EAAGC,aAAa,GAEjF,CAEOW,SACH,MAAM,IACFlB,EAAG,IACHmB,GACApB,KAAKN,MAEH2B,EAA8B,GAAGrB,KAAKN,MAAM4B,+CAC5CC,EAA6B,GAAGvB,KAAKN,MAAM8B,+CAC3CC,EAAoBzB,KAAKG,MAAMC,eAAiBH,GAAO,IAAMD,KAAKN,MAAMgC,WACxEC,EAAoB3B,KAAKG,MAAMC,cAAgBgB,GAAOpB,KAAKN,MAAMgC,WACjEE,EAAe5B,KAAKG,MAAMC,aAChCJ,KAAKa,QAAQgB,cAAcC,MAAQC,EAAAA,kBAAAA,kBACnC,MAAMC,GAAsBC,EAAAA,EAAAA,wBAAuBjC,KAAKN,MAAMqB,iBAAmBf,KAAKa,SACtFb,KAAKa,QAAQgB,cAAcC,MAAQC,EAAAA,kBAAAA,kBACnC,MAAMG,GAAsBD,EAAAA,EAAAA,wBAAuBjC,KAAKN,MAAMqB,iBAAmBf,KAAKa,SAEtF,IAAIsB,EAAsB,GACtBV,EAEAU,EAAqB,WAEdnC,KAAKN,MAAMwB,WAElBiB,EAAsB,cAE1B,IAAIC,EAAsB,GAS1B,OARIT,EAEAS,EAAqB,WACdpC,KAAKN,MAAMwB,WAElBkB,EAAsB,cAItB3C,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAK4C,UAAU,WAAW/C,GAAIU,KAAKN,MAAMJ,IACrCG,EAAAA,cAAA,SAAA6C,OAAAC,OAAA,CACIrB,SAAUlB,KAAKN,MAAMwB,UAAYO,EACjCe,MAAQf,EAAoB,GAAKzB,KAAKN,MAAM+C,yBAC5CJ,UAAW,gCAAgCF,IAC3CO,QAAS1C,KAAKW,aAAY,eACb,EAAI,aACL,GAAGX,KAAKN,MAAM+C,2BAC1BE,UAAW,EACXC,MAAO,aACHZ,GAEJvC,EAAAA,cAAA,QAAM4C,UAAWhB,KAErB5B,EAAAA,cAAA,SACIoD,KAAK,SACLR,UAAU,iBACVS,QAAQ,SACRC,MAAO/C,KAAKG,MAAMC,aAClBE,SAAUN,KAAKY,cACfoC,OAAQhD,KAAKH,aAAY,YACf,SAAQ,aACN,GAAGG,KAAKN,MAAMuD,yBAC1BC,KAAK,aAAY,gBACFjD,EAAG,gBACHmB,EAAG,gBACHQ,EACfuB,IAAKnD,KAAKJ,SACVsB,SAAUlB,KAAKN,MAAMwB,WAEzBzB,EAAAA,cAAA,SAAA6C,OAAAC,OAAA,CACIrB,SAAUlB,KAAKN,MAAMwB,UAAYS,EACjCa,MAAOb,EAAoB,GAAK3B,KAAKN,MAAM0D,yBAC3Cf,UAAW,gCAAgCD,IAC3CM,QAAS1C,KAAKS,aAAY,eACb,EAAI,aACL,GAAGT,KAAKN,MAAM0D,2BAC1BT,UAAW,EACXC,MAAO,aACHV,GAEJzC,EAAAA,cAAA,QAAM4C,UAAWd,MAKrC,CAEQd,eACJ,IAAI4C,GAAiB,EACrB,MAAMC,EAAetD,KAAKG,MAAMC,aAChC,IAAImD,EAW0C,IAAAC,GAT1CF,EAAetD,KAAKN,MAAM0B,KAC1BiC,GAAiB,EACjBE,EAAkBD,EAAe,IAEjCD,GAAiB,EACjBE,EAAkBvD,KAAKN,MAAM0B,KAG7BiC,GAAkBrD,KAAKN,MAAMY,YACzBN,KAAKN,MAAMY,SAASiD,KACpBvD,KAAKK,SAAS,CAAED,aAAcmD,IACZ,QAAlBC,EAAAxD,KAAKN,MAAM+D,eAAO,IAAAD,GAAlBA,EAAoBE,OAAO,IAAI/E,EAAAA,+BAAkC,CAAEU,iBAAkBkE,KAGjG,CAEQ5C,eACJ,IAAI0C,GAAiB,EACrB,MAAMC,EAAetD,KAAKG,MAAMC,aAChC,IAAImD,EAW0C,IAAAI,GAT1CL,EAAe,GACfD,GAAiB,EACjBE,EAAkBD,EAAe,IAEjCD,GAAiB,EACjBE,EAAkB,GAGlBF,GAAkBrD,KAAKN,MAAMY,YACzBN,KAAKN,MAAMY,SAASiD,KACpBvD,KAAKK,SAAS,CAAED,aAAcmD,IACZ,QAAlBI,EAAA3D,KAAKN,MAAM+D,eAAO,IAAAE,GAAlBA,EAAoBD,OAAO,IAAI/E,EAAAA,+BAAkC,CAAEU,iBAAkBkE,KAGjG,CAEQ3C,cAAcgD,GAAsC,IAAAC,EACxD,MAAMjC,EAAekC,SAAUF,EAAEG,OAAOhB,MAAQ,IAC9B,QAAlBc,EAAA7D,KAAKN,MAAM+D,eAAO,IAAAI,GAAlBA,EAAoBH,OAAO,IAAI/E,EAAAA,+BAAkC,CAAEU,iBAAkBuC,IACrF,MAAM9B,OAA8BC,IAAnBC,KAAKN,MAAMO,IAAoB,EAAID,KAAKN,MAAMO,IACzD+D,EAAehE,KAAKJ,UAAYI,KAAKJ,SAASqE,SAAWjE,KAAKJ,SAASqE,mBAAmBC,kBAAoBlE,KAAKJ,SAASqE,QAE9HrC,EAAe5B,KAAKN,MAAM0B,IAC1BpB,KAAKK,SACD,CAAED,aAAcJ,KAAKN,MAAM0B,MAC3B,KACI+C,KACI,KAEInE,KAAKN,MAAMY,UAAYN,KAAKN,MAAMY,SAASN,KAAKG,MAAMC,aAAa,GAEvE,IALJ+D,EAKU,IAIdnE,KAAKK,SACD,CAAED,aAAcwB,IAChB,KACIuC,KACI,KACSjE,MAAMF,KAAKG,MAAMC,eAAmBJ,KAAKG,MAAMC,aAAeN,IAE/DE,KAAKN,MAAMY,UAAYN,KAAKN,MAAMY,SAASN,KAAKG,MAAMC,cAElD4D,IACAA,EAAaI,aAAa,gBAAiBxC,EAAayC,YACxDL,EAAaI,aAAa,QAASxC,EAAayC,gBAI5D,IAZJF,EAYU,GAI9B,GApMc3E,EAAA8E,aAAwC,CAClDrE,IAAK,EACLqB,oBAAqB,eACrBE,oBAAqB,eAJRhC,GAAQ+E,EAAAA,EAAAA,IAAA,CAD5BC,EAAAA,IACoBhF,8PCGf,SAAUiF,EACRC,EACAC,EACAC,EACAnB,EACAoB,EACAC,EACAC,GAEJ,GAA6B,eAAzBL,EAAOM,cACP,OAAOJ,EAAUK,0BACd,GAA6B,qBAAzBP,EAAOM,cAAsC,CACpD,GAAIN,EAAOQ,kBAA0D,gBAAtCR,EAAOQ,iBAAiBC,UAA6B,CAEhF,IAAIC,GAAyB,EAC7B,MAAMC,EAAkBR,aAAO,EAAPA,EAASS,SAEjC,IAAK,IAAIC,EAAI,EAAGA,EAAIZ,EAAMA,KAAKa,UAAWC,OAAQF,IAAK,KAAAG,EACnD,GAAIf,EAAMA,KAAKa,UAAW,GAAGD,KAAKI,YAAcN,IAC3CV,EAAMA,KAAKa,UAAW,GAAGD,KAAKK,cAAgB,OAASb,IAAwD,QAAhDW,EAAIjC,EAAQoC,cAAcC,eAAeC,eAAO,IAAAL,OAAA,EAA5CA,EAA8CM,yBAA0B,MAC3IrB,EAAMA,KAAKa,UAAW,GAAGD,KAAKU,oBAAsB,QAASlB,aAAQ,EAARA,EAAUmB,gBAAiB,IAAK,CAC9Fd,EAAiBG,EAEjB,OAIR,IAAIY,EAAuB,EAE3B,IAAwB,IAApBf,EAAuB,CACvB,MAAMgB,uWAAgBC,CAAA,GAAO1B,EAAMA,KAAKa,UAAW,GAAGJ,MACtDe,EAAcC,EAAiB5G,UAAY,EAI/C,MAAM8G,EAA6B7C,EAAQ8C,IAAIC,OAAOF,2BAChDG,EAAe3B,aAAmB,EAAnBA,EAAqB4B,kBAE1C,IAAIC,EAYJ,OATIA,OAD+B5G,IAA/BuG,QAA6DvG,IAAjB0G,EAC5B,QACQ1G,IAAjB0G,EACSH,OACsBvG,IAA/BuG,EACSG,EAEAG,KAAK3G,IAAIqG,EAA4BG,GAGlD7B,EAAUiC,qBAAqBC,QAAQ,gBAAiBX,EAAY9B,YAAYyC,QAAQ,gBAAiBH,EAActC,YACpC,IAAA0C,EAAAC,EAAvF,OAAItC,EAAOQ,kBAA0D,mBAAtCR,EAAOQ,iBAAiBC,UAC5B,QAA9B4B,EAAOrC,EAAOQ,wBAAgB,IAAA6B,GAAc,QAAdC,EAAvBD,EAAyBE,oBAAY,IAAAD,OAAd,EAAvBA,EAAuCE,iBAG3CtC,EAAUK,0BAIzB,CAEM,SAAUkC,EAAmBzC,EAAwCE,EAAkClD,GACzG,IAAKgD,EACD,MAAO,CAAC,EAGZ,MAAM0C,EAA4D,CAAC,EAMnE,OAJA1C,EAAO2C,SAAQC,IACXF,EAAWE,EAAUC,oBAMvB,SAAkCC,EAA4B5C,EAAkClD,GAClG,OAAQ8F,GACJ,KAAK,EACD,OAAO5C,EAAU6C,sCACrB,KAAK,EACD,OAAO7C,EAAU8C,8CACrB,KAAK,EACD,OAAO9C,EAAU+C,qCACrB,KAAK,EACD,OAAOjG,EAAakD,EAAUgD,uCAAyChD,EAAUiD,sCACrF,QACI,MAAO,GAEnB,CAnBmDC,CAAwBR,EAAUC,mBAAoB3C,EAAWlD,EAAW,IAGpH0F,CACX,CClEM,SAAUW,EAAwBrI,GACpC,MACIsI,MAAQC,0BAA4BvD,OAAQuD,KAC5CvI,EACJ,GAAKuI,GAA6BA,EAAyBxC,QAGvDwC,GACAA,EAAyBxC,QACzBwC,EAAyB,GAAGC,gBAAiB,CAC7C,MAAMC,EAAqBF,EAAyB,GAAGG,eACnD,wDAAwDH,EAAyB,GAAGG,eAAeC,gBACnG,6BACJ,OAAQ5I,EAAAA,cAAA,OAAK4C,UAAU,6BAA4B5C,EAAAA,cAAA,QAAM4C,UAAW8F,GAAsBF,EAAyB,GAAGC,kBAK9H,CACM,SAAUI,EAAsB5I,GAClC,MACIsI,MAAQnD,SAAWH,OAAQG,IAC3B2B,QAAQ,gBAAE+B,EAAkB,OAC5B7I,EAEJ,OAAOmF,GACHpF,EAAAA,cAAC+I,EAAAA,QAAO,CACJnG,UAAU,2BACVoG,WAAYF,EACZG,KAAM7D,EAAQ8D,MAAQ,IAGlC,CAEM,SAAUC,EAA4BlJ,GACxC,MACIsI,MAAQnD,SAAWH,OAAQG,KAC3BnF,EAEJ,OAAOmF,GACHpF,EAAAA,cAAA,KAAG4C,UAAU,kCAAkCwC,EAAQgE,YAE/D,CASA,IAAI9H,EAGE,SAAU+H,EAAmBpJ,EAA4CS,EAAqB4I,EACjEC,EAAkCC,GAAgC,IAAAC,EACjG,MAAM,SACFC,EACAnB,MAAQC,6BAA8B,UACtCrD,EACA4B,WACA9G,GAII0J,YAAY,gBACRC,EAAe,cACfC,EAAa,kBACbC,EAAiB,WACjBC,EAAU,UACVC,IAEJtJ,EAEyD,YAA/CT,EAAMsI,KAAKC,yBAAyByB,QAElDX,EAAUY,yBAAwB,GAYtC,MAT8C,cAAbR,GAAmE,aAAb,QAA1BD,EAAAxJ,EAAMsI,KAAK4B,uBAAe,IAAAV,OAAA,EAA1BA,EAA4BQ,SACzDX,EAAUc,+BACtCd,EAAUc,+BAA8B,GAG5C9I,GAAmB+I,EAAAA,EAAAA,oBAAmBpK,EAAM+D,QAAQsG,QAAQC,kBACtBtK,EAAMuK,aACNvK,EAAMwK,WAErC,CACHC,eAAgB,CACZ9H,UAAW,+BAEf+H,OACI3K,EAAAA,cAAA,UAAQ4C,UAAW,sBAAuBK,QAASA,IAAM2H,OAAOtF,SAASuF,KAAK,IAAI5K,EAAM8G,OAAO+D,SAAW7K,EAAM8G,OAAO+D,SAAW,OAAQ7K,EAAM8G,OAAOgE,YAE3JC,WACIhL,EAAAA,cAACiL,EAAgB,CACbrB,gBAAiBA,EACjBC,cAAeA,EACfC,kBAAmBA,EACnBC,WAAYA,EACZ5E,UAAWA,EACX+F,UAAyB,cAAdlB,IAI3B,CAEM,SAAUmB,EAAsBlL,EAA4CS,GAChF,MAAM,GAAEb,EAAE,SAAE6J,EAAQ,QAAE1F,EAAO,UAAEmB,GAAclF,EAEvCmL,EAAiB1K,EAAM2K,cAAgD,GAAhC3K,EAAM2K,aAAaC,WAC9DtL,EAAAA,cAAA,OAAK4C,UAAU,8BACb5C,EAAAA,cAACuL,EAAAA,eAAc,CACb1L,GAAIA,EACJ6J,SAAUA,EACV1F,QAASA,EACTuE,KAAM,CAAEiD,MAAO9K,EAAM2K,cACrBI,cAAetG,EAAUuG,UACzBC,kBAAmBxG,EAAUwG,kBAC7BC,iBAAkBzG,EAAUyG,mBAE9B5L,EAAAA,cAAA,SAAIC,EAAM8G,OAAO8E,kBAAoB5L,EAAM8G,OAAO8E,kBAAoB,yBAErEvL,EAEL,OAAOI,EAAM2K,cAAgBD,GAC3BA,CAEJ,CAEM,SAAUU,EAAuB7L,GACnC,MAAM,GACFJ,EAAE,SACF6J,EAAQ,QACR1F,EACAuE,MAAQwD,gBAAkB9G,OAAQ8G,IAAkB,UACpD5G,GACAlF,EAEE+L,EAAkBD,GAAkBA,EAAeE,eACrDjM,EAAAA,cAACkM,EAAAA,gBAAe,CACZC,UAAWJ,EAAeE,eAAiB,EAC3CG,UAAU,EACVC,WAAWC,EAAAA,EAAAA,QAAOnH,EAAUoH,uBAAwBR,EAAeE,cAAe,KAClFO,YAAa,GAAGT,EAAeU,eAC/BlE,KAAM,CAAC,EACPvE,QAASA,EACTnE,GAAIA,EACJ6J,SAAUA,UAEbpJ,EAEL,OAAOyL,GAAkBC,GACrBA,CAER,CAQA,SAASU,EAA0CvH,GAC/C,MAAO,CACHwH,yBAA0BxH,EAAUwH,yBAEpCC,wBAAyBzH,EAAUyH,wBACnCC,4BAA6B1H,EAAU0H,4BAEvCC,gCAAiC3H,EAAU2H,gCAC3CC,iCAAkC5H,EAAU4H,iCAC5CC,sCAAuC7H,EAAU6H,sCAEjDC,oBAAqB9H,EAAU8H,oBAC/BC,wBAAyB/H,EAAU+H,wBACnCC,cAAehI,EAAUgI,cAEjC,CAEA,SAASC,EAAyCjI,GAC9C,MAAO,CACHkI,yBAA0BlI,EAAUmI,0BACpCC,wBAAyBpI,EAAUqI,mBACnCC,2BAA4BtI,EAAUsI,2BACtCC,yBAA0BvI,EAAUwI,+BAEpCC,yBAA0BzI,EAAUyI,yBAEpCC,yBAA0B1I,EAAU2I,8BACpCC,+BAAgC5I,EAAU6I,yCAElD,CAEA,SAASC,EAAgD9I,GACrD,MAAO,CACH+I,4BAA6B/I,EAAU+I,4BACvCC,2BAA4BhJ,EAAUgJ,2BACtCC,0CAA2CjJ,EAAUiJ,0CACrDC,6CAA8ClJ,EAAUkJ,6CACxDC,0CAA2CnJ,EAAUmJ,0CACrD7C,cAAetG,EAAUuG,UACzBC,kBAAmBxG,EAAUwG,kBAC7BC,iBAAkBzG,EAAUyG,iBAEpC,CAEA,SAAS2C,EAA+DpJ,GACpE,MAAO,CACHqJ,yBAA0BrJ,EAAUqJ,yBACpCC,8BAA+BtJ,EAAUsJ,8BACzCC,yBAA0BvJ,EAAUuJ,yBACpCC,+BAAgCxJ,EAAUwJ,+BAElD,CAEM,SAAUC,EAAmC3O,EAA4CS,EAAqB4I,GAChH,MAAM,GACFzJ,EAAE,SACF6J,EAAQ,QACR1F,EACAuE,MACInD,SAAWH,OAAQG,GACnByJ,gBAAkB5J,OAAQ4J,GAC1BC,qBAAuB7J,OAAQ6J,IAClC,UACD3J,GACAlF,GAII0J,YAAY,gBACRC,EAAe,cACfC,EAAa,kBACbC,EAAiB,WACjBC,EAAU,UACVC,GACH,SACD+E,GACArO,EAGR,GAAIA,EAAMsO,sBACN,OAUJ,MAAO,CACHtE,eAAgB,CACZ9H,UAAW,8CAEf+H,OAAQvF,GAAWyJ,GACf7O,EAAAA,cAACiP,EAAAA,4BAA2B,CACxBrM,UAAW,gCACXsM,6BAA8B/J,EAAU+J,6BACxCC,kCAAmCzC,EAA0CvH,GAC7EiK,mCAAoChC,EAAyCjI,GAC7EkK,wCAAyCpB,EAAgD9I,GACzFmK,gCAAgC,GAChCC,uDAAwDhB,EAA+DpJ,GACvHoD,KAAM,CAAEnD,QAASA,EAAS2J,SAAUA,EAAUF,eAAgBA,EAAgBC,oBAAqBA,GACnG9K,QAASA,EACTnE,GAAIA,EACJ6J,SAAUA,EACV8F,QAxBwBvK,IAChCqE,EAAUmG,iBAAiB,CACvBzF,UAAW,iBACXJ,gBAAmC,sBAAlB3E,EAAOgF,OAAiCvC,EAAmBzC,EAAOyK,kBAAmBvK,EAAWC,aAAO,EAAPA,EAASuK,YAAc,CAAC,GAC3I,IAuBF3E,WACIhL,EAAAA,cAACiL,EAAgB,CACbrB,gBAAiBA,EACjBC,cAAeA,EACfC,kBAAmBA,EACnBC,WAAYA,EACZ5E,UAAWA,EACX+F,UAAyB,mBAAdlB,IAI3B,CAOM,SAAU4F,EAA8B3P,EAA4CS,EAAqB4I,GAC3G,MAAM,GACFzJ,EAAE,SACF6J,EAAQ,QACR1F,EACAuE,MACInD,SAAWH,OAAQG,GACnByK,WAAa5K,OAAQ4K,IACxB,UACD1K,GACAlF,GAII0J,YAAY,gBACRC,EAAe,cACfC,EAAa,kBACbC,EAAiB,WACjBC,EAAU,UACVC,GACH,gBACD8F,GACApP,EAGR,GAAIA,EAAMsO,sBACN,OAUJ,MAAO,CACHtE,eAAgB,CACZ9H,UAAW,wCAEf+H,OAAQvF,GACJpF,EAAAA,cAAC+P,EAAAA,uBAAsB,CACnBnN,UAAW,gCACXoN,wBAAyB7K,EAAU6K,wBACnCC,6BAA8B9K,EAAU8K,6BACxCC,qBAAsB/K,EAAU+K,qBAChCC,2BAA4BhL,EAAUgL,2BACtCC,uBAAwBjL,EAAUiL,uBAClCC,4BAA6BlL,EAAUkL,4BACvCC,eAAgBnL,EAAUmL,eAC1B/H,KAAM,CAAEnD,QAASA,EAASyK,UAAWA,GACrC7L,QAASA,EACTnE,GAAIA,EACJ6J,SAAUA,EACV8F,QAzBmBvK,IAC3BqE,EAAUmG,iBAAiB,CACvBzF,UAAW,WACXJ,gBAAmC,qBAAlB3E,EAAOgF,OAAgCvC,EAAmBzC,EAAOyK,kBAAmBvK,EAAWC,aAAO,EAAPA,EAASuK,YAAc,CAAC,GAC1I,EAsBMY,mBAAoBT,IAG5B9E,WACIhL,EAAAA,cAACiL,EAAgB,CACbrB,gBAAiBA,EACjBC,cAAeA,EACfC,kBAAmBA,EACnBC,WAAYA,EACZ5E,UAAWA,EACX+F,UAAyB,aAAdlB,IAI3B,CAWM,SAAUwG,EAAyBvQ,EAA4CS,EAAqB4I,GACtG,MAAM,UACFnE,EAAS,QACTnB,GACA/D,GAGA,SACI8O,EAAQ,IACRpN,EACAgI,YAAY,cACRE,IAEJnJ,EASR,MAAO,CACHgK,eAAgB,CACZ9H,UAAW,uBAEf6N,oBAAqB,CACjBC,IAAK,QACL9N,UAAW,oCACX+N,QAAS,qCAEbC,QACI5Q,EAAAA,cAAA,OAAK4C,UAAU,6CAA6CuC,EAAU0L,wBAE1EC,OAAQjH,GACJ7J,EAAAA,cAAA,QAAM4C,UAAU,iDACZ5C,EAAAA,cAAA,QAAM4C,UAAU,2BAA0B,cAAa,SACvD5C,EAAAA,cAAA,YAAO6J,IAGfnK,MACIM,EAAAA,cAACD,EAAQ,CACLF,GAAG,oCACH8B,IAAKA,EACLb,aAAciO,EACdlO,SA9BUkQ,IACVzH,EAAU0H,gBACH1H,EAAU0H,eAAeD,GA6BhCvN,uBAAwB2B,EAAU3B,uBAClCQ,QAASA,EAAQoC,cACjB9E,iBAAkBA,IAKlC,CAQM,SAAU2P,EAAyBhR,EAA4CS,EAAqB4I,GACtG,MAAM,UACFnE,EAAS,QACTnB,EACAuE,MACInD,SAAWH,OAAQG,KAEvBnF,GAII0J,eACAjJ,EAOFU,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAkBgB,EAAAA,kBAAAA,kBACtD4O,GAAY1O,EAAAA,EAAAA,wBAAuBlB,EAAkBF,GAE3D,MAAO,CACHsJ,eAAgB,CACZ9H,UAAW,+BAEflD,MACIM,EAAAA,cAACmR,EAAAA,OAAMtO,OAAAC,OAAA,CACHC,MAAOoC,EAAUiM,qBACjBxO,UAAU,uCAAsC,aACpCuC,EAAUiM,qBACtBnO,QAjBUoO,KAClB,MAAMC,GAAYC,EAAAA,EAAAA,IAAW,SAAUvN,GAAWA,EAAQoC,eACpDoL,EAAYF,EAAWG,SAAS,KAAO,IAAM,IACnDC,SAASpM,SAASuF,KAAO,GAAGyG,IAAYE,cAAsBpM,GAAWA,EAAQS,UAAU,GAe/EqL,GAEH/L,EAAUiM,sBAI3B,CASM,SAAUO,EAAoB1R,EAA4CS,EAAqB4I,GACjG,MAAM,OACFvC,EAAM,UACN5B,GACAlF,GAII0J,eACAjJ,EAOR,MAAO,CACHgK,eAAgB,CACZ9H,UAAW,2BAEf6N,oBAAqB,CACjBC,IAAK,QACL9N,UAAW,gCACX+N,QAAS,2BAEbC,QACI5Q,EAAAA,cAAA,OAAK4C,UAAU,yCAAyCuC,EAAUyM,8BAEtElS,MACIM,EAAAA,cAAA,SACIoD,KAAK,SACLR,UAAU,+CACV/B,SArBMsD,IACd,MAAMb,EAAQa,EAAE0N,cAAcvO,MAC9BgG,EAAUwI,iBAAiBxO,EAAM0C,OAAS+L,OAAOzO,GAAS0O,WAAW1O,GAAO,EAmBlD,aACN6B,EAAUyM,6BAA4B,gBACnC7K,EAAOkL,kBAAiB,gBACxBlL,EAAOkL,kBAAiB,gBACxBvR,EAAMwR,iBACrB5O,MAAO5C,EAAMwR,iBACb1R,IAAKuG,EAAOkL,kBACZtQ,IAAKoF,EAAOkL,oBAK5B,CAUO,MAAMhH,EAAqDkH,IAA4F,IAA3F,UAAEjH,EAAS,gBAAEtB,EAAe,cAAEC,EAAa,kBAAEC,EAAiB,WAAEC,EAAU,UAAE5E,GAAWgN,EAClJC,EAAwC,GAgB5C,OAdAA,EAAgBvP,OAAOwP,OAAOzI,GAAiB0I,QAAOC,QAAuBjS,IAAZiS,IAE7D1I,GACAuI,EAAcI,KAAK3I,GAGnBC,GACAsI,EAAcI,KAAK1I,GAGnBC,GACAqI,EAAcI,KAAKzI,GAInB/J,EAAAA,cAACyS,EAAAA,MAAK,CAACC,OAAQxH,GAAakH,EAAcpM,OAAS,EAAG7C,MAAM,SAASwP,WAAW,EAAI,aAAcxN,EAAUyN,0BACxG5S,EAAAA,cAAA,OAAK4C,UAAU,oBAAmB,cAAa,QAC3C5C,EAAAA,cAAA,QAAM4C,UAAU,6BAChB5C,EAAAA,cAAA,YAAOmF,EAAUyN,2BAEpBR,EAAcS,KAAI,CAACN,EAASO,IAErB9S,EAAAA,cAAA,OAAK+S,IAAKD,EAAOlQ,UAAU,mBAAmB2P,KAGlD,EAIV,SAAUS,EAA0B/S,EAA4CS,GAClF,MAAM,UACFyE,GACAlF,GAGJ,IACIO,EAAG,IACHmB,GACAjB,EAEJ,GAAKuS,EAAqChT,GAI1C,OACID,EAAAA,cAACkT,EAAAA,KAAI,CAACtQ,UAAW,yBACZuQ,EAAgBxR,EAAKwD,EAAUiO,iBAC/BC,EAAgB7S,EAAK2E,EAAUmO,iBAG5C,CAEO,MAAMC,EAAsD,kEAE7DJ,EAAkBA,CAACxR,EAAyByR,IAC1CzR,GAAe,IAARA,GAAaA,IAAQoQ,OAAOyB,UAE/BxT,EAAAA,cAAA,KAAG4C,UAAU,gCACRwQ,EAAgB/L,QAAQ,QAAS1F,EAAIiD,kBAI9C,EAIFyO,EAAkBA,CAAC7S,EAAyB8S,IAC1C9S,GAAOA,EAAM,EAETR,EAAAA,cAAA,KAAG4C,UAAU,gCACR0Q,EAAgBjM,QAAQ,QAAS7G,EAAIoE,kBAI9C,EAIFqO,EAAwChT,IAAmE,IAAAwT,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAG7G,KAF2D,QAAjCL,EAAGxT,EAAMsI,KAAKwL,aAAa9O,cAAM,IAAAwO,GACkC,QADlCC,EAA9BD,EACvBO,MAAKD,GAAgBA,EAAa7K,OAASqK,WAA4C,IAAAG,OADlC,EAA9BA,EACkEO,WAE3F,OAAO,EAEX,MAAMC,EAAuD,QAAhBP,EAAG1T,EAAM+D,eAAO,IAAA2P,GAAS,QAATC,EAAbD,EAAerJ,eAAO,IAAAsJ,GAAK,QAALC,EAAtBD,EAAwB9M,WAAG,IAAA+M,GAAU,QAAVC,EAA3BD,EAA6BM,gBAAQ,IAAAL,OAAxB,EAAbA,EAAuCM,iCACvF,GAAgD,SAA5CF,EACA,OAAO,EAGX,GAAgD,QAA5CA,EACA,OAAO,EAGX,MAAMG,EAAepU,EAAMsI,KAAKuG,oBAAoB7J,OACpD,OAAOoP,IAC2C,QAA5CH,GAAqDG,EAAaC,OACvB,QAA5CJ,IAAsDG,EAAaC,MAAO,EC/mB7E,SAAUC,EAAqBtU,EAA4CS,EAAqB4I,GAA2B,IAAAkL,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAC7H,MAAM,KACF1M,EACA2M,OAAO,cACHC,GAEJhQ,WAAY,UACRuG,EAAS,kBACTC,EAAiB,iBACjBC,EAAgB,sBAChBwJ,EAAqB,2BACrBC,EAA0B,oBAC1BC,EAAmB,mBACnBC,EAAkB,2BAClBC,EAA0B,qBAC1BC,EAAoB,8BACpBC,EAA6B,wBAC7BC,EAAuB,sCACvBC,GAEJ5R,SACIsG,SACIhE,SAAS,uBACLC,GACA,CAAEA,4BAAwBjG,MAGtCL,EAGEmF,EAAUmD,SAAa,QAATiM,EAAJjM,EAAMnD,eAAO,IAAAoP,OAAT,EAAJA,EAAevP,OACzBuG,EAAQjD,SAAkB,QAAdkM,EAAJlM,EAAM8C,oBAAY,IAAAoJ,OAAd,EAAJA,EAAoBxP,OAC5B4Q,EAA4BtN,SAA+B,QAA3BmM,EAAJnM,EAAMsN,iCAAyB,IAAAnB,OAA3B,EAAJA,EAAiCzP,OAC7DC,EAAOqD,SAAU,QAANoM,EAAJpM,EAAMrD,YAAI,IAAAyP,OAAN,EAAJA,EAAY1P,OACnBkF,EAAkB5B,SAAqB,QAAjBqM,EAAJrM,EAAM4B,uBAAe,IAAAyK,OAAjB,EAAJA,EAAuB3P,OACzC6Q,EAAoCvN,SAAkB,QAAdsM,EAAJtM,EAAMwL,oBAAY,IAAAc,GAAQ,QAARC,EAAlBD,EAAoB5P,cAAM,IAAA6P,GACK,QADLC,EAA1BD,EAC1Cd,MAAKD,GAPiC,oEAOjBA,EAAa7K,cAAuC,IAAA6L,OAD3B,EAAJA,EACiCd,WAIvEtK,YAAY,gBACRC,EAAe,cACfC,EAAa,WACbE,EAAU,UACVC,GACH,UACD+L,EAAS,SACThH,GACArO,EAEEuC,EAAUA,IA6HpBxD,eAAkCQ,EAA4CS,EAAqB4I,GAA2B,IAAA0M,EAAAvC,EAAAC,EAAAuC,EAC1H,MACI1N,MACIsN,2BAA4B5Q,OAAQ4Q,GACpC3Q,MAAOD,OAAQC,GACfsD,0BAA4BvD,OAAQuD,IACvC,UACDrD,EAAS,QACTnB,EAAO,QACPkS,GACAjW,GAEE,gBACF6P,EAAe,SACff,GACArO,EAEJ,IAAIyV,EAAclW,EAAMsI,KAAKnD,QAAQH,OACrC,MAAMmR,EAAgC,kEAChCN,EAA8C,QAAbE,EAAG/V,EAAMsI,YAAI,IAAAyN,GAAc,QAAdvC,EAAVuC,EAAYjC,oBAAY,IAAAN,GAAQ,QAARC,EAAxBD,EAA0BxO,cAAM,IAAAyO,GACD,QADCuC,EAAhCvC,EAC1CM,MAAKD,GAAgBA,EAAa7K,OAASkN,WAA8B,IAAAH,OADrB,EAAVA,EACiChC,UAEvEnE,IACAqG,QAAqBrG,GAAoBqG,GAG7C,IAAKA,IAAgBN,EACjB,OAGJ,MAAMzQ,EAAU+Q,EAEVzG,EAAoBtK,EAAQiR,YAAcjR,EAAQiR,WAAW/D,QAAOzK,KAAeA,EAAUyO,gBAAkBzO,EAAUyO,eAAeC,SAE9I,IAAIC,EAA0B,GAC1BN,GAAWrT,OAAO4T,KAAKP,GAASlQ,OAAS,GAAKkQ,EAAQf,eAAiBe,EAAQf,cAAcnP,OAAS,IACtGwQ,EAAkBN,EAAQf,cAAc,GAAGtV,IAG3C6P,GAAqBA,EAAkB1J,OAAS,EAC5CsD,EAAUmG,kBACVnG,EAAUmG,iBACN,CACIzF,UAAW,cACXJ,gBAAiBlC,EAAmBgI,EAAmBvK,KAKnE0Q,EAA0Ba,WAAW,CACjCtR,UACAvF,GAAK2W,EACLrM,gBAAiB2L,EAAoC7V,EAAMsI,KAAK4B,gBAAgBlF,YAAQ3E,EACxFqW,mBAAoBA,CAACC,EAAiBC,KAAgB,IAAAlD,EAAAmD,EAAAC,EAClD,IAAK7R,EACD,OAAO8R,QAAQC,UAGnB,MAAMC,EAAwB,QAAhBvD,EAAG1T,EAAM+D,eAAO,IAAA2P,GAAK,QAALmD,EAAbnD,EAAe7M,WAAG,IAAAgQ,GAAQ,QAARC,EAAlBD,EAAoB/P,cAAM,IAAAgQ,OAAb,EAAbA,EAA4BI,kBAE7C,OAAOjS,EAAKkS,iBAAiB,CAAChS,QAASA,EAASiS,MAAOtI,EAAUzJ,SAAUsR,EAAiBC,aAAcA,IACrGS,MAAKrS,IACF,GAAsB,WAAlBA,EAAOgF,QAA4C,gBAArBhF,EAAOS,UAA6B,CAClE4D,EAAUiO,iBAAgB,GAE1B,MAAMlS,EAAsB3E,EAAM8H,yBAC9B9H,EAAM8H,yBAAyBgP,yBAC3BhP,GAA4BA,EAAyBxC,OACrDwC,EAAyB,GAAGgP,8BAA0BlX,EAExDmX,EAAyC,CAAClS,cAAe,mBAAoBE,iBAAkB,CAACwE,OAAQhF,EAAOgF,OAAQvE,UAAWT,EAAOS,YAC/I4D,EAAUmG,iBAAiB,CACvBzF,UAAW,YACXJ,gBAAiB,CAAC,EAClBG,WAAY/E,EAAgByS,EAAevS,EAAMC,EAAWnB,EAASoB,EAASC,EAAqBuR,UAGvG,QAAkBtW,IAAb4W,GAAuC,aAAbA,EAA0B,CACrD,MAAM7F,GAAgBE,EAAAA,EAAAA,IAAW,OAAQvN,EAAQoC,eAE3B,YAAlBnB,EAAOgF,QAAwBoH,GAC/BzG,OAAOtF,SAASxC,OAAOuO,OAEP,cAAb6F,IACP5N,EAAUmG,iBAAiB,CACvB7F,gBAAiB,CAAC,IAEtBN,EAAUiO,iBAAgB,OAGnCG,OAAOC,IACF1X,EAAMwK,YACNxK,EAAMwK,UAAUmN,UAAUD,GAC1B1X,EAAMwK,UAAUoN,MAAM,iCAEpB,GACR,IAEXH,OAAOC,IACF1X,EAAMwK,YACNxK,EAAMwK,UAAUkN,MAAMA,EAAMpF,SAC5BtS,EAAMwK,UAAUoN,MAAM,2BAEpB,IAId,MACJ,CAzO0BC,CAAmB7X,EAAOS,EAAO4I,GAEvD,IAAKlE,IAAYyQ,IAA8BV,GAA0C,IAAzBA,EAAcnP,OAC1E,OAKJ,KAAKmE,GACAA,EAAgB4N,iBAChBxR,GACA4D,EAAgB4N,gBAAgB/D,MAAKgE,GAAUA,EAAOC,OAAS1R,KAC5D,OAGR,MAAM2R,EAAgB,CAClBC,aAAc5C,EACd6C,qBAAsB5C,EACtB6C,kBAAmB5C,EACnB6C,qBAAsB5C,EACtB6C,kBAAmB5C,EACnBlK,cAAeC,EACfC,kBAAmBA,EACnBC,iBAAkBA,GAGhBR,EAAiBI,EACnBxL,EAAAA,cAACuL,EAAAA,eAAc,CACXhD,KAAM,CAACiD,MAAOA,GACdxH,QAAS/D,EAAM+D,QACfnE,GAAII,EAAMJ,GACV6J,SAAUzJ,EAAMyJ,SAChB+B,cAAeyM,EAAczM,cAC7BE,kBAAmBuM,EAAcvM,kBACjCC,iBAAkBsM,EAActM,mBAC9B,GAEJ4M,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,GAGRC,EAA0B,CAC5BjV,QAAS/D,EAAM+D,QACfpB,UAAW,YACX/C,GAAII,EAAMJ,GACV6J,SAAUzJ,EAAMyJ,SAChBnB,KAAM,CAACnD,QAA2B,QAApB4P,EAAE/U,EAAMsI,KAAKnD,eAAO,IAAA4P,OAAA,EAAlBA,EAAoB/P,OAAQuG,MAA8B,QAAzByJ,EAAEhV,EAAMsI,KAAK8C,oBAAY,IAAA4J,OAAA,EAAvBA,EAAyBhQ,QAC5EiT,cAAeA,EACfgB,cAAeV,EACfW,aAAclZ,EAAM+D,QAAQsG,QAAQ6O,aACpCC,gBAAiBrK,EACjB3D,eAAgBA,EAChBiG,eAAeE,EAAAA,EAAAA,IAAW,OAAQtR,EAAM+D,QAAQoC,eAChD2P,UAAWA,EACXsD,aAAc/P,EAAUiO,iBAEtB+B,EAAmBtZ,EAAAA,cAACuZ,EAAAA,MAAK1W,OAAAC,OAAA,GAAKmW,IAEpC,MAAO,CACHvO,eAAgB,CACZ9H,UAAW,4BAGfuS,cAAeA,EAAc,GAE7BqE,sBAAuBvW,EAEvB2N,QACI5Q,EAAAA,cAAC+I,EAAAA,QAAO,CACJnG,UAAU,mCACVoG,WAAW,KACXC,KAAMmM,IAIdqE,YACIzZ,EAAAA,cAAA,KAAG4C,UAAU,wCACRyS,GAGTqE,wBAAyB5D,EACrB9V,EAAAA,cAACA,EAAAA,SAAc,KACfA,EAAAA,cAAA,KAAG4C,UAAU,wCACRgT,GAEL5V,EAAAA,cAAA,MAAIyD,KAAK,OAAOb,UAAW,mCACtBuH,EAAgB4N,gBAAgBlF,KAAK8G,GAC5B3Z,EAAAA,cAAA,MAAIyD,KAAK,eAAeb,UAAW,yCAA0CmQ,IAAK4G,EAAK1B,MAAO0B,EAAKvQ,iBAKlH,KACH0H,OACI9Q,EAAAA,cAACiL,EAAgB,CACbrB,gBAAiBA,EACjBC,cAAeA,EACfE,WAAYA,EACZ5E,UAAWlF,EAAMkF,UACjB+F,UAAyB,gBAAdlB,IAInBW,OACI3K,EAAAA,cAAA,UACI4C,UAAU,kCACVK,QAASA,EACTE,MAAM,YAAW,aACLmS,EACZ7T,cAAmBnB,IAAT4E,GAEToQ,GAITsE,MAAON,EAEf,CCzLM,MAAOO,UAAiB7Z,EAAAA,cAI1Bb,YAAYc,EAAuBS,GAC/BR,MAAMD,GAJF,KAAA6Z,WAAiD9Z,EAAAA,YAqCjD,KAAA+Z,WAAata,UACjBc,KAAKK,SAAS,CAACoZ,cAAeC,EAAM3V,OAAOhB,QAEvC/C,KAAKN,MAAMY,gBACLN,KAAKN,MAAMY,SAAS,CACtBqZ,WAAY3Z,KAAKN,MAAMia,WACvBC,SAAUF,EAAM3V,OAAOhB,MACvB8W,cAAeH,EAAM3V,OAAO+V,aAvCpC9Z,KAAKG,MAAQ,CACTsZ,cAAe,IAEnBzZ,KAAKa,SAAUC,EAAAA,EAAAA,kBAAiB,QAASpB,EAAMqB,iBAAmBf,KAAKN,MAAMqa,aACjF,CAEOC,oBACCha,KAAKuZ,WAAWtV,UAChBjE,KAAKuZ,WAAWtV,QAAQwV,cAAgB,EAEhD,CAEOtY,SACH,MAAM,WAACwY,EAAU,aAAEM,EAAY,aAAEF,EAAY,mBAAEG,GAAsBla,KAAKN,MACpEiR,GAAY1O,EAAAA,EAAAA,wBAAuBjC,KAAKN,MAAMqB,iBAAmBf,KAAKa,SAC5E,OACIpB,EAAAA,cAAA,SAAA6C,OAAAC,OAAA,CACIjD,GAAI,uBAAuBqa,IAC3BxW,IAAKnD,KAAKuZ,WAAU,aACRQ,EACZ1X,UAAU,uBACV/B,SAAUN,KAAKwZ,YACX7I,GAEJlR,EAAAA,cAAA,UAAQsD,MAAM,GAAE,gBAA6C,KAA7B/C,KAAKG,MAAMsZ,cAAsBU,SAAuC,KAA7Bna,KAAKG,MAAMsZ,cAAsBW,QAAM,EAAClZ,UAAQ,GAAEgZ,GAC5HD,EAAa3H,KACT8G,GAA6BA,GAAQ3Z,EAAAA,cAAA,UAAQsD,MAAOqW,EAAK9Z,GAAIkT,IAAK4G,EAAK9Z,GAAI6a,SAAUna,KAAKG,MAAMsZ,gBAAkBL,EAAK9Z,GAAG+E,WAAU,gBAAiBrE,KAAKG,MAAMsZ,gBAAkBL,EAAK9Z,GAAG+E,YAAa+U,EAAKrW,SAI7N,ECjBJ,IAAIhC,EAEE,SAAUsZ,EAA0B3a,EAA4CS,EAAqB4I,GACvG,MACIf,MACInD,SAAUH,OAAQG,GAClByV,mBAAoB5V,OAAQ4V,IAC/B,UACD1V,GACAlF,GAIA0J,YAAY,gBACRC,IAEJlJ,GAGJ,gBACIoa,GACAxR,EAEJ,IAAKlE,IAAYyV,EACb,OAGJ,MAAME,EAAYtb,SACdsa,EAAWiB,EAAc1R,EAAU2R,wBAEvC3Z,GAAmB+I,EAAAA,EAAAA,oBAAmBpK,EAAM+D,QAAQsG,QAAQC,kBAAoBtK,EAAMuK,aAAcvK,EAAMwK,WAC1G,MAAMyQ,EAAYL,EAAkBhI,KAAIsI,GAAwBC,EAA4CD,EAAsBhW,EAAWyE,EAAiBkR,EAAiBC,KAE/K,OAAKG,GAAkC,IAArBA,EAAUlV,OAIrB,CACH0E,eAAgB,CACZ9H,UAAW,wBAEfsY,UAAWA,QARf,CAUJ,CAEA,MAAMnB,EAAata,MACXub,EACAK,WAEEA,GAAkBL,EAAad,WAAYc,EAAab,SAAS,EAGrEiB,EACFA,CACID,EACAhW,EACAyE,EACAkR,EACAQ,KAEJ,MAAMhB,EAAgBQ,EAAgBK,EAAqBrT,mBAAoB3C,GACzE+U,EAAaiB,EAAqBrT,mBAAmBlD,WACrD6V,EAAqBtV,EAAUoW,4BAA4BlU,QAAQ,MAAOiT,EAAakB,qBACvFhB,EAAqCW,EAAqBM,gBAC1DN,EAAqBM,gBAAgB5I,KAAwB6I,IACpD,CACHpY,MAAOoY,EAAenF,OAAS,GAC/B1W,GAAI6b,EAAe7V,SAASjB,eAGlC,GACA+W,EAAe/R,EAAgB,GAAGsQ,KAExC,MAAO,CACHxP,eAAgB,CACZ9H,UAAW,uBAEf6N,oBAAqB,CACjBC,IAAK,QACL9N,UAAW,qCACX+N,QAAS,qCAAqCuJ,KAElDpJ,OAAQ6K,GACJ3b,EAAAA,cAAA,QAAM4C,UAAU,iDACZ5C,EAAAA,cAAA,QAAM4C,UAAU,2BAA0B,cAAa,SACvD5C,EAAAA,cAAA,YAAO2b,IAGf/K,QACI5Q,EAAAA,cAAA,WAAMsa,GAEVsB,OACI5b,EAAAA,cAAC6Z,EAAQ,CACLK,WAAYA,EACZI,aAAcA,EACdG,mBAAoBA,EACpBD,aAAcA,EACd3Z,SAAUya,EACVha,iBAAkBA,IAG7B,olBCPL,MAAMua,UAAe7b,EAAAA,cA+EnBb,YAAYc,EAA4CS,GACtDR,MAAMD,GAxEA,KAAA6b,qBAA4C,IAAIC,EAAAA,mBAAyB,GACzE,KAAApU,WAAuC,CAAC,EAExC,KAAAqU,gBAAoC,CAC1ChL,eAAiBiL,IACf,MAAMtS,EAAU/C,EAAA,GAAOrG,KAAKG,MAAMiJ,YAMlC,OALAA,EAAWE,mBAAgBvJ,EAC3BqJ,EAAWI,gBAAazJ,EAExBC,KAAKK,SAAS,CAACmO,SAAUkN,EAAatS,WAAYA,KAE3C,CAAI,EAEb8F,iBAAmByM,IACjB3b,KAAKK,SAAS,CAAC+I,WAAYuS,GAAe,EAE5CC,sBAAuBA,CACrBC,EACAC,EACAC,EACAC,KAEAhc,KAAKK,SAAS,CACZkP,gBAAiBsM,EACjB5T,yBAA0B6T,EAC1BG,uBAAwBD,IAG1Bhc,KAAKkc,aAAaH,EAAS,EAE7BrB,uBAAwBA,CAACyB,EAA6BC,KACpDpc,KAAKoH,WAAW,GAAG+U,KAAyBC,EAErCpc,KAAKub,qBAAqBc,SAAQ,IAChCrc,KAAKsc,sBACXnF,OAAOoF,IAER,GAAIA,IAAWC,EAAAA,wBAAAA,gCACb,MAAMD,MAIZhC,gBAAkBA,CAACkC,EAAuB7X,IACjC5E,KAAK0c,iBAAiBD,EAAe7X,GAE9CoS,gBAAkB2F,IAChB3c,KAAKK,SAAS,CAACmV,UAAWmH,GAAa,EAEzChT,wBAA0BiT,IACxB5c,KAAKK,SAAS,CAACuc,oBAAqBA,GAAqB,EAO3D/S,8BAAgCgT,IAC9B7c,KAAKK,SAAS,CAAEwc,6BAA4B,EAE9CtL,iBAAmBuL,IAEjB,MAAM1T,EAAU/C,EAAA,GAAOrG,KAAKG,MAAMiJ,YAClCA,EAAWG,uBAAoBxJ,EAE/BC,KAAKK,SAAS,CAAC0c,gBAAgB,EAAMpL,iBAAkBmL,EAAa1T,WAAYA,IAChFpJ,KAAKkc,aAAalc,KAAKG,MAAM2K,aAAcgS,EAAY,GA2JnD,KAAAR,kBAAoBpd,UAC1B,MACE8I,MACEnD,SAAUH,OAAQG,GAClByV,mBAAoB5V,OAAQ4V,IAE9B7W,SAAS,cACPoC,EACAkE,SACEiT,aAAa,UAAEC,MAGjBjd,KAAKN,MAET,IAAKmF,IAAYyV,EACf,OAGF,MAAM4C,EAAkB7W,EAAA,GAAiCrG,KAAKoH,YAI9D,GAHApH,KAAKK,SAAS,CAACuc,qBAAqB,EAAMC,2BAA2B,IAGjE7c,KAAKG,MAAMiJ,WAAWI,WAAY,CACpC,MAAM2T,EAAoB9W,EAAA,GAAOrG,KAAKG,MAAMiJ,YAC5C+T,EAAqB3T,gBAAazJ,EAClCC,KAAKK,SAAS,CAAC+I,WAAY+T,IAI7B,IAAK,MAAM3K,KAAOlQ,OAAO4T,KAAKgH,GAC5B,GAAIld,KAAKG,MAAMiJ,WAAWC,gBAAgB,GAAGmJ,KAAQ,CACnD,MAAMpJ,EAAU/C,EAAA,GAAOrG,KAAKG,MAAMiJ,YAClCA,EAAWC,gBAAgB,GAAGmJ,UAASzS,EAEvCC,KAAKK,SAAS,CAAC+I,WAAYA,IAM/B,MAAMgU,EAAmB9C,EAAkBhI,KAAIhL,IACtC,CACLC,mBAAoBD,EAAUC,mBAC9BwO,eAAgB/V,KAAKqd,sBAAsB/V,EAAW4V,EAAmB5V,EAAUC,sBAAwBD,EAAUyO,eACrHuH,oBAAqBhW,EAAUgW,wBAEhCvL,QAAOzK,GACDA,GAAaA,EAAUyO,iBAI1BxG,EAAkB,IAAIkH,SAA8BvX,MAAOwX,EAAS6G,KACxE,MAAMC,QAAoBC,EAAAA,EAAAA,oBACxB,IAAIC,EAAAA,qBACF7Y,EAAQ8Y,gBAAkB9Y,EAAQ8Y,gBAAkB9Y,EAAQS,SAC5D2X,EACAG,GAEFvX,GAGE2X,SACII,EAAAA,EAAAA,iCACJ,IAAIC,EAAAA,qCACFL,EAAWG,gBAAkBH,EAAWG,gBAAkBH,EAAWlY,SACrE2X,EACAG,GAEFvX,GAIJ6Q,EAAQ8G,EAAW,IAErBxd,KAAKK,SAAS,CAACkP,gBAAiBA,IAChC,MAAMuO,QAAuBvO,EAE7B,GAAIuO,EAAgB,KAAAC,EAGlB,MAAMC,QAA6BC,EAAAA,EAAAA,4CAC/B,IAAIC,EAAAA,6CACAJ,EAAexY,SACf2X,GAEJpX,GAKJ,GAF8BiY,GAAkBA,EAAehI,YAAcgI,EAAehI,WAAWrC,MAAKnM,GAA8C,IAAjCA,EAAUC,oBAA4BD,EAAUyO,gBAAqD,WAAnCzO,EAAUyO,eAAeC,QAGlNhW,KAAKK,SAAS,CAACoO,uBAAuB,QACjC,CAEL,MAAMrF,EAAU/C,EAAA,GAAOrG,KAAKG,MAAMiJ,YAClCA,EAAWG,uBAAoBxJ,EAE/BC,KAAKK,SAAS,CAACoO,uBAAuB,EAAOsO,gBAAgB,EAAO3T,WAAYA,IAG9E4U,GAAwBA,EAAqBvY,OAC/CzF,KAAKK,SAAS,CAAC4H,yBAA0B+V,EAAqB,KAE9Dhe,KAAKK,SAAS,CAAC4H,8BAA0BlI,IAI3C,MAAMgc,QAAiBoC,EAAAA,EAAAA,4BACrB,IAAIC,EAAAA,6BACFN,EAAexY,SACf2X,GAEFpX,GAGEkW,GACF/b,KAAKkc,aAAaH,GAGpB,MAAMsC,EAAuE,QAAtCN,EAAG/d,KAAKN,MAAMsI,KAAKwL,aAAa9O,cAAM,IAAAqZ,OAAA,EAAnCA,EAAqCtK,MAAKD,GAAsC,oEAAtBA,EAAa7K,OAE3GqT,QAA2BsC,EAAAA,EAAAA,sCAC/B,IAAIC,EAAAA,0CACFT,EAAexY,SACf2X,OACAld,OACAA,EACAse,aAAiC,EAAjCA,EAAmC3K,WAErC7N,GAGEmW,GACFhc,KAAKK,SAAS,CAAC4b,uBAAwBD,UAGnChc,KAAKwe,yBAAyBV,KAuBhC,KAAAT,sBAAwB,CAACzC,EAA4C6D,KAC3E,GAAIA,GAAc7D,EAAqBM,gBACrC,OAAON,EAAqBM,gBAAgBzH,MAAKnM,GAAaA,EAAUhC,YAAcmZ,GAGxE,EAGV,KAAA/B,iBAAmB,CAACD,EAAuB7X,KAA4C,IAAA8Z,EAC7F,MAAMhd,EAA2C,QAAjCgd,EAAG1e,KAAKN,MAAMsI,KAAKnD,QAAQH,cAAM,IAAAga,OAAA,EAA9BA,EAAgCtP,WAEnD,OAAQqN,GACN,KAAK,EACH,OAAO7X,EAAU+Z,0BACnB,KAAK,EACH,OAAO/Z,EAAUga,kCACnB,KAAK,EACH,OAAOha,EAAUia,yBACnB,KAAK,EACH,OAAOnd,EAAakD,EAAUka,2BAA6Bla,EAAUma,0BACvE,QACE,MAAO,GAAG,EAtUd/e,KAAKG,MAAQ,CACXiJ,WAAY,CACVC,gBAAiB,CAAC,GAEpBmF,SAAU,EACVvO,SAAKF,EACLqB,SAAKrB,EACLwP,qBAAiBxP,EACjB+K,kBAAc/K,EACdkc,4BAAwBlc,EAExByV,WAAW,EACXoH,qBAAqB,EACrBC,2BAA2B,EAC3BmC,aAAYtf,EAAM+D,QAAQsG,QAAQkV,KAAKC,iBAGzClf,KAAKe,kBAAmB+I,EAAAA,EAAAA,oBAAmBpK,EAAM+D,QAAQsG,QAAQC,kBAAoBtK,EAAMuK,aAAcvK,EAAMwK,UACjH,CAEOhL,0BACL,MACE8I,MACEnD,SAAWH,OAAQG,GAAS,aAC5BiG,IAEA9K,KAAKN,MAMT,GAJAoL,EAAaiM,MAAK7X,UAChBc,KAAKkc,aAAaxX,EAAO,IAGvBG,EAAS,CAEX,MAAMsa,EAAmB,EAErBta,EAAQua,gBAAkBD,GAC5Bnf,KAAKK,SAAS,CAACgf,eAAe,UAG1Brf,KAAKwe,yBAAyB3Z,GAExC,CAEO1D,SACL,MACEwT,OAAO,aACL2K,GAEFtX,MACEnD,SAAWH,OAAQG,GACnBxF,kBAAoBqF,OAAQrF,IAE9BmH,QAAQ,UAAEnE,EAAY,IACtBoB,SAAWsG,SAAS,KAAEkV,KACpBjf,KAAKN,OAEJ,IAAE0B,GAAQpB,KAAKG,MAEpB,IAAK0E,EAEH,OADA7E,KAAKN,MAAM+D,QAAQyG,UAAUkN,MAAM,gDAC5B,KAGT,IAAK/X,EAEH,OADAW,KAAKN,MAAM+D,QAAQyG,UAAUkN,MAAM,0BAC5B,KAMLpX,KAAKN,MAAMsI,KAAK3I,kBAAkBW,KAAKN,MAAMsI,KAAK3I,iBAAiBqF,QAAQ1E,KAAKG,MAAMqO,WAAWxO,KAAKN,MAAMsI,KAAK3I,iBAAiBqF,OAAOrF,kBACvIW,KAAKG,MAAMqO,SAAW,GACxBxO,KAAKK,SAAS,CAACmO,SAAUxO,KAAKN,MAAMsI,KAAK3I,iBAAiBqF,OAAOrF,mBAIrE,MAAMkgB,EAASlZ,EAAAA,EAAA,GACTrG,KAAKN,OAA6C,IACtDS,MAAOH,KAAKG,MACZmf,aAAcA,GAAgBA,EAAa7Z,OAAS,EAAI6Z,EAAa,QAAKvf,EAC1Eyf,YAAa,CACTC,YAAazf,KAAKN,MAClB2C,UAAWqd,IAAW,6BAA8Brd,IAExDsd,2BAA4B,CAC1Btd,UAAW,qCAEbud,0BAA2B,CACvBvd,UAAW,+BAEftB,iBAAkBf,KAAKe,iBACvBgI,UAAW/I,KAAKyb,gBAChBjZ,MAAO8F,EAAsBtI,KAAKN,OAClCwZ,YAAatQ,EAA4B5I,KAAKN,OAC9CmgB,UAAWxF,EAA0Bra,KAAKN,MAAOM,KAAKG,MAAOH,KAAKyb,iBAClEqE,YAAa9L,EAAqBhU,KAAKN,MAAOM,KAAKG,MAAOH,KAAKyb,iBAC/DxQ,MAAOL,EAAsB5K,KAAKN,MAAOM,KAAKG,OAC9C4f,UAAWjX,EAAmB9I,KAAKN,MAAOM,KAAKG,MAAOH,KAAKyb,iBAC3DuE,mBAAoB3R,EAAmCrO,KAAKN,MAAOM,KAAKG,MAAOH,KAAKyb,iBACpFwE,cAAe5Q,EAA8BrP,KAAKN,MAAOM,KAAKG,MAAOH,KAAKyb,iBAC1EyE,QAASlgB,KAAKN,MAAM+D,QAAQ8C,IAAIC,OAAO2Z,YAAc5U,EAAuBvL,KAAKN,OACjF8O,SAAU3J,EAAQuK,gBAAarP,EAAYkQ,EAAyBjQ,KAAKN,MAAOM,KAAKG,MAAOH,KAAKyb,iBACjG2E,eAAgBrY,EAAwB/H,KAAKN,OAC7C2gB,gBAAiBrgB,KAAKN,MAAM8G,OAAO8Z,yBAA2Bzb,EAAQuK,WAAasB,EAAyB1Q,KAAKN,MAAOM,KAAKG,MAAOH,KAAKyb,sBAAmB1b,EAC5JwgB,WAAYvgB,KAAKN,MAAM8G,OAAOga,kBAAoBxgB,KAAKG,MAAMsO,sBAAsB2C,EAAoBpR,KAAKN,MAAOM,KAAKG,MAAOH,KAAKyb,sBAAiB1b,EACrJ0gB,uBAAwBhO,EAA0BzS,KAAKN,MAAOM,KAAKG,OACnEiB,IAAKA,IAGP,OAAO3B,EAAAA,cAAAA,EAAAA,SAAA,KACNO,KAAKN,MAAMghB,WAAWnB,GACvB9f,EAAAA,cAACkhB,EAAAA,EAAO,CAACC,KAAM5gB,KAAKG,MAAM6e,YAAa6B,cAAY,GACjDphB,EAAAA,cAAA,OAAK4C,UAAU,kBAAkBK,QAASA,IAAK1C,KAAKK,SAAS,CAAC2e,aAAY,KACxEvf,EAAAA,cAAA,OAAK4C,UAAU,aAAaK,QAAUgX,IACpCoH,QAAQC,IAAIrH,EAAM3V,QAClB+c,QAAQC,IAAIrH,EAAMpI,eACdoI,EAAM3V,SAAW2V,EAAMpI,eACzBoI,EAAMsH,oBAGRvhB,EAAAA,cAAA,OAAK4C,UAAU,gBAAmD,WAAnCrC,KAAKN,MAAM+D,QAAQsG,QAAQkX,OAAkB,QAAQ,wBACpFxhB,EAAAA,cAAA,OAAK4C,UAAU,iBAAoD,WAAnCrC,KAAKN,MAAM+D,QAAQsG,QAAQkX,OAAkB,sBAAsB,6GACnGxhB,EAAAA,cAAA,OAAKyhB,MAAO,CAAEC,QAAQ,OAAQC,cAAe,MAAOC,eAAgB,eAAgBC,WAAY,SAAUC,MAAO,SAC7G9hB,EAAAA,cAAA,KAAG6K,KAAM2U,GAAQA,EAAKuC,UAAWnf,UAAU,gBAAmD,WAAnCrC,KAAKN,MAAM+D,QAAQsG,QAAQkX,OAAkB,OAAO,sBAC/GxhB,EAAAA,cAAA,OAAKiD,QAASA,IAAK1C,KAAKK,SAAS,CAAC2e,aAAY,IAAS3c,UAAU,iBAAoD,WAAnCrC,KAAKN,MAAM+D,QAAQsG,QAAQkX,OAAkB,OAAO,mBAMlJ,CAEQ/E,aACNH,GAC6D,IAA7De,EAAA2E,UAAAhc,OAAA,QAAA1F,IAAA0hB,UAAA,GAAAA,UAAA,GAAkCzhB,KAAKG,MAAMwR,iBAEzC3R,KAAKG,MAAMsO,uBAAyBsN,IACtCA,EAAS2F,wBAA0B5E,GAGrC9c,KAAKK,SAAS,CAACyK,aAAciR,GAC/B,CA+IQ7c,+BAA+B2F,GAGe,IAAA8c,EAAAC,EAAAC,EAAAC,EAAAC,QAFF/hB,KAAK0S,wCAEZ7N,EACzC7E,KAAKK,SAAS,CACZmO,UAA0B,QAAhBmT,EAAA9c,EAAQmd,gBAAQ,IAAAL,OAAA,EAAhBA,EAAkBM,kBAAmB,EAC/ChiB,KAAqB,QAAhB2hB,EAAA/c,EAAQmd,gBAAQ,IAAAJ,OAAA,EAAhBA,EAAkBM,kBAAmB,EAC1C9gB,IAAsB,QAAhBygB,EAAAhd,EAAQmd,gBAAQ,IAAAH,GAAhBA,EAAkBM,kBAAmC,QAAhBL,EAAAjd,EAAQmd,gBAAQ,IAAAF,OAAA,EAAhBA,EAAkBK,iBAAkB,EACzD,QAD0DJ,EAC1Eld,EAAQmd,gBAAQ,IAAAD,OAAA,EAAhBA,EAAkBI,gBAClB3Q,OAAOyB,YAGfjT,KAAKK,SAAS,CACZJ,IAAK,EACLmB,IAAKpB,KAAKN,MAAM+D,QAAQ8C,IAAIC,OAAOF,4BAA8B,IAGvE,CA2BQpH,6CAA0C,IAAAsE,EAAA4e,EAAAC,EAAAC,EAAAC,EAChD,MAAM5O,EAA4D,QAArBnQ,EAAGxD,KAAKN,MAAM+D,eAAO,IAAAD,GAAS,QAAT4e,EAAlB5e,EAAoBuG,eAAO,IAAAqY,GAAK,QAALC,EAA3BD,EAA6B7b,WAAG,IAAA8b,GAAU,QAAVC,EAAhCD,EAAkCzO,gBAAQ,IAAA0O,OAAxB,EAAlBA,EAA4CzO,iCAE5F,GAAgD,SAA5CF,EACF,OAAO,EAGT,MAAM6O,QAAwBxiB,KAAKN,MAAMsI,KAAKwL,aAG9C,KAF6BgP,SAAwG,QAAzFD,EAAfC,EAAiB/O,MAAKD,GAAgBA,EAAa7K,OAASqK,WAA4C,IAAAuP,OAAzF,EAAfA,EAA0G7O,WAGrI,OAAO,EAGT,GAAgD,QAA5CC,EACF,OAAO,EAGT,IAAIG,EAEJ,IACEA,QAAqB9T,KAAKN,MAAMsI,KAAKuG,oBACrC,MAAO6I,GACP,MAAMqL,EAAMrL,EAKZ,OAHApX,KAAKN,MAAMwK,UAAUwY,YAAYD,GACjCziB,KAAKN,MAAMwK,UAAUoN,MAAM,0EAEpB,EAGT,OAAOxD,IACuC,QAA5CH,GAAqDG,EAAaC,OACvB,QAA5CJ,IAAsDG,EAAaC,MACtE,EAGF,2GCjjBA,MAyBM4O,EAAoB5C,IACtB,MAAM,eAAE5V,EAAc,WAAEM,EAAU,OAAEL,EAAM,QAAEwY,GAAY7C,EAExD,OACEtgB,EAAAA,cAACkT,EAAAA,KAAIrQ,OAAAC,OAAA,GAAK4H,GACPM,EACAL,EACAwY,EACI,EAIPC,EAA6B7C,IAC/B,MAAM,eAAE7V,EAAc,WAAEM,EAAU,OAAEL,GAAW4V,EAE/C,OACEvgB,EAAAA,cAACkT,EAAAA,KAAIrQ,OAAAC,OAAA,GAAK4H,GACPM,EACAL,EACI,EAIP0Y,EAAoBjD,IACtB,MAAM,eAAE1V,EAAc,UAAEwQ,GAAckF,EAEtC,OAAOpgB,EAAAA,cAACkT,EAAAA,KAAIrQ,OAAAC,OAAA,GAAK4H,GAAiBwQ,EAAUrI,IAAIyQ,GAAiC,EAG/EC,EAAsBC,IACxB,GAAKA,GAAsC,IAAvBA,EAAYxd,OAIhC,OAAOhG,EAAAA,cAAAA,EAAAA,SAAA,KAAGwjB,EAAY,GAAM,EAG1BF,EAA4BG,IAC9B,MAAM,eAAE/Y,EAAc,oBAAE+F,EAAmB,QAAEG,EAAO,OAAEE,EAAM,OAAE8K,GAAW6H,EAEzE,OACEzjB,EAAAA,cAACkT,EAAAA,KAAIrQ,OAAAC,OAAA,GAAK4H,GACR1K,EAAAA,cAACkT,EAAAA,KAAIrQ,OAAAC,OAAA,GAAK2N,GACPG,EACAE,GAEF8K,EACI,EAIP8H,EAAsBrD,IACxB,MAAM,eAAE3V,EAAc,cAAEyK,EAAa,QAAEvE,EAAO,YAAE6I,EAAW,OAAE3I,EAAM,OAAEnG,EAAM,MAAEiP,EAAK,wBAAEF,GAA4B2G,EAEhH,OACErgB,EAAAA,cAACkT,EAAAA,KAAIrQ,OAAAC,OAAA,GAAK4H,GACPyK,EACAvE,EACA8I,EACAD,EACA3I,EACAnG,EACAiP,EACI,EAIP+J,EAAmB5U,IACrB,MAAM,eAAErE,EAAc,oBAAE+F,EAAmB,QAAEG,EAAO,MAAElR,EAAK,OAAEoR,GAAW/B,EAExE,OACE/O,EAAAA,cAACkT,EAAAA,KAAIrQ,OAAAC,OAAA,GAAK4H,GACR1K,EAAAA,cAACkT,EAAAA,KAAIrQ,OAAAC,OAAA,GAAK2N,GACPG,EACAE,GAEFpR,EACI,EAIPkkB,EAAqB9C,IACvB,MAAM,eAACpW,EAAc,oBAAE+F,EAAmB,QAAEG,EAAO,MAAElR,GAAUohB,EAE/D,OACE9gB,EAAAA,cAACkT,EAAAA,KAAIrQ,OAAAC,OAAA,GAAK4H,GACR1K,EAAAA,cAACkT,EAAAA,KAAIrQ,OAAAC,OAAA,GAAK2N,GAAsBG,GAC/BlR,EACI,EAIb,EArH+CO,IAC3C,MAAM,YAAE8f,EAAW,2BAAEG,EAA0B,0BAAEC,EAAyB,UAAEG,EAAS,mBAAEC,EAAkB,UAAEH,EAAS,YAAE3G,EAAW,YAAE4G,EAAW,SAAEtR,EAAQ,MAAEvD,EAAK,MAAEzI,EAAK,OAAE0d,EAAM,eAAEE,EAAc,WAAEG,GAAe7gB,EAG/M,OACAD,EAAAA,cAAC6jB,EAAAA,OAAMhhB,OAAAC,OAAA,GAAKid,GACV/f,EAAAA,cAACkT,EAAAA,KAAIrQ,OAAAC,OAAA,GAAKod,GAA6BjgB,EAAM4f,cAC7C7f,EAAAA,cAACkT,EAAAA,KAAIrQ,OAAAC,OAAA,GAAKqd,GACPpd,EACAyI,EACAiO,EACAgH,EACAL,GAAaiD,EAAiBjD,GAC9BU,GAAc8C,EAAkB9C,GAChC/R,GAAY4U,EAAgB5U,GAC5B4R,GACCmD,EAAAA,IAAaxD,GAAa4C,EAAiB5C,GAC5CD,GAAeqD,EAAmBrD,GAClCE,GAAsB6C,EAA0B7C,GAC/CgD,EAAmBtjB,EAAMiV,OAASjV,EAAMiV,MAAMsO,cAE3C,onBC5Cb,MAAMO,EAAU,CAAE7N,QAAS,CAAC,EAAG8N,YAAa,CAAC,GAmBnCC,EAA8BA,CAACC,EAAqBC,KAUlD,GADAJ,EAAQC,YAAYE,GAAuBC,GACtCJ,EAAQC,YAAYE,GAAqBE,QAC1C,MAAM,IAAIC,MAAM,oBAAsBH,EAAsB,mCAEhEH,EAAQC,YAAYE,GAAqBE,QAAQE,UAAUC,eAAiBL,EACxEH,EAAQC,YAAYE,GAAqBE,QAAQE,UAAUzkB,KAC3DkkB,EAAQC,YAAYD,EAAQC,YAAYE,GAAqBE,QAAQE,UAAUzkB,IAAMqkB,EAE7F,EAIHH,EAAQ7N,QAAQ,gBAAkB,CAC/BsO,EAAGA,IAAMC,EAAQ,MACjBC,MAAO,kBACPC,GAAI,CAAC,CAACC,KAAK,OAASC,KAAK,+EAAgFC,MAAO,GAAG,CAACF,KAAK,sBAAwBC,KAAK,kEAAmEC,MAAO,GAAG,CAACF,KAAK,kBAAoBC,KAAK,+FAAgGC,MAAO,GAAG,CAACF,KAAK,eAAiBC,KAAK,uEAAwEC,MAAO,GAAG,CAACF,KAAK,iBAAmBC,KAAK,iGAAkGC,MAAO,GAAG,CAACF,KAAK,UAAYC,KAAK,0EAA2EC,MAAO,GAAG,CAACF,KAAK,2BAA6BC,KAAK,qGAAsGC,MAAO,GAAG,CAACF,KAAK,oBAAsBC,KAAK,yFAA0FC,MAAO,GAAG,CAACF,KAAK,eAAiBC,KAAK,oFAAqFC,MAAO,GAAG,CAACF,KAAK,iBAAmBC,KAAK,yEAA0EC,MAAO,GAAG,CAACF,KAAK,mBAAqBC,KAAK,gEAAiEC,MAAO,GAAG,CAACF,KAAK,4BAA8BC,KAAK,4HAA6HC,MAAO,GAAG,CAACF,KAAK,YAAcC,KAAK,iFAAkFC,MAAO,IAEvmDC,KAAK,EACLC,GAAI,YACJC,EAAG,eACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,4BAOAnB,EAF4B,4HACXQ,EAAQ,MAQzBR,EAF4B,kEACXQ,EAAQ,KAQzBR,EAF4B,+FACXQ,EAAQ,MAQzBR,EAF4B,yFACXQ,EAAQ,MAQzBR,EAF4B,uEACXQ,EAAQ,KAQzBR,EAF4B,oFACXQ,EAAQ,MAQzBR,EAF4B,qGACXQ,EAAQ,MAQzBR,EAF4B,yEACXQ,EAAQ,MAQzBR,EAF4B,0EACXQ,EAAQ,MAQzBR,EAF4B,iFACXQ,EAAQ,MAQzBR,EAF4B,iGACXQ,EAAQ,MAQzBR,EAF4B,+EACXQ,EAAQ,MAQzBR,EAF4B,gEACXQ,EAAQ,MAMjC7Z,OAAOya,aAAeza,OAAOya,cAAgB,CAAC,EAC9Cza,OAAOya,aAAanP,QAAOtP,EAAAA,EAAA,GACpBgE,OAAOya,aAAanP,SAAW,CAAC,GAChC6N,EAAQ7N,SAGXtL,OAAOya,aAAarB,YAAWpd,EAAAA,EAAA,GAC5BgE,OAAOya,aAAarB,aAAe,CAAC,GACpCD,EAAQC,aAEY,MAAMsB,EAAiB,CAAC,EAC/BA,EAAe,yDAA2D,CAClFd,EAAGA,IAAMC,EAAQ,MACjBc,GAAI,oCAEpB3a,OAAOya,aAAeza,OAAOya,cAAgB,CAAC,EAC9Cza,OAAOya,aAAaC,eAAc1e,EAAAA,EAAA,GACPgE,OAAOya,aAAaC,gBAAkB,CAAC,GACvCA,4MClJpB,MAAeE,EAyBlBrmB,cAVmB,KAAAsmB,iBAAsC,CAAEC,aAAa,EAAMC,YAAY,GAQzE,KAAAC,8BAAwC,6BAGrDrlB,KAAKslB,mBAAoB,EACzB,MAAMviB,EAAQ/C,KAAKulB,kBAAkBvlB,KAAKqlB,+BAC1C,IACI,MAAMG,EAAoCziB,EAAQ0iB,KAAKC,MAAM3iB,QAAShD,EAClEylB,IACAxlB,KAAK2lB,eAAiBH,EAGM,CADlC,MAAAI,GACE5lB,KAAK2lB,oBAAiB5lB,CAAU,CAExC,CAnCqB8lB,mBACjB,YAAyB9lB,IAAlBC,KAAK8lB,QAChB,CAEqBriB,cACjB,OAAOzD,KAAK8lB,QAChB,CAoCO5mB,+BACHc,KAAKklB,iBAAmB,CACpBC,aAAcnlB,KAAKklB,iBAAiBC,YACpCC,YAAaplB,KAAKklB,iBAAiBE,WAE3C,CAGOlmB,yBAAyBC,GAC5Ba,KAAKslB,kBAAoBnmB,CAC7B,CAGOD,iCAAiCC,GACpCa,KAAK8lB,SAAW3mB,CACpB,CAGOD,iCAAiC6mB,GACpC/lB,KAAKgmB,wBAA0BD,CACnC,CAGO7mB,gCACH6mB,EACAE,GAGkB,IAFlBC,EAAAzE,UAAAhc,OAAA,QAAA1F,IAAA0hB,UAAA,IAAAA,UAAA,GAIA,MAAM+D,EAAwB,CAAEW,QAASJ,EAASK,UAAWH,EAAWI,SAHvD5E,UAAAhc,OAAA,EAAAgc,UAAA,QAAA1hB,EAG2EumB,UAF1E7E,UAAAhc,OAAA,EAAAgc,UAAA,QAAA1hB,GAGlBC,KAAK2lB,eAAiBH,EAClBU,GACAlmB,KAAKumB,eAAevmB,KAAKqlB,8BAA+BI,KAAKe,UAAUhB,GAE/E,CAGOtmB,6BAA6BunB,EAAmBC,GACnD,MAAMlB,EAAwB,CAAEW,QAAS,GAAIC,UAAW,GAAIC,SAAUI,EAAUH,UAAWI,GAC3F1mB,KAAK2mB,yBAA2BnB,CACpC,CAGOtmB,0BAA0BgnB,GAC7BlmB,KAAK2lB,oBAAiB5lB,EAClBmmB,GACAlmB,KAAK4mB,cAAc5mB,KAAKqlB,8BAEhC,CAGOnmB,iBAAiBC,GACpB,GAAIa,KAAK8lB,UAAY9lB,KAAK8lB,SAASxmB,KAAOH,EAAMG,GAC5C,MAAM,IAAIwkB,MAAM,4BAGpB9jB,KAAK8lB,SAAW3mB,CACpB,CAGOD,oBACHc,KAAK8lB,cAAW/lB,CACpB,CAEQ6mB,cAAcpU,GAClB,GAAKA,GAGDqU,EAAAA,GAAAA,UAAoB,CACJxc,OAAOyc,aACfC,WAAWvU,EAAK,CAEhC,CAEQ+T,eAAe/T,EAAazP,GAChC,GAAKyP,GAAQzP,GAGT8jB,EAAAA,GAAAA,UAAoB,CACJxc,OAAOyc,aACfE,QAAQxU,EAAKzP,EAAO,CAEpC,CAEQwiB,kBAAkB/S,GACtB,GAAKA,GAGDqU,EAAAA,GAAAA,UAAoB,CACpB,MACMI,EADU5c,OAAOyc,aACKI,QAAQ1U,GACpC,GAAIyU,EACA,OAAOA,CAAW,CAK9B,GA5IU1iB,EAAAA,EAAAA,IAAA,CAAT4iB,EAAAA,IAAQ,kCAIC5iB,EAAAA,EAAAA,IAAA,CAAT4iB,EAAAA,IAAQ,6BAIG5iB,EAAAA,EAAAA,IAAA,CAAX6iB,EAAAA,IAAU,sCAEC7iB,EAAAA,EAAAA,IAAA,CAAX6iB,EAAAA,IAAU,+CAEC7iB,EAAAA,EAAAA,IAAA,CAAX6iB,EAAAA,IAAU,sCAEC7iB,EAAAA,EAAAA,IAAA,CAAX6iB,EAAAA,IAAU,wCAEC7iB,EAAAA,EAAAA,IAAA,CAAX6iB,EAAAA,IAAU,yCAEC7iB,EAAAA,EAAAA,IAAA,CAAX6iB,EAAAA,IAAU,gDAEC7iB,EAAAA,EAAAA,IAAA,CAAX6iB,EAAAA,IAAU,gCAsBX7iB,EAAAA,EAAAA,IAAA,CADCtF,EAAAA,IAAM,4CASPsF,EAAAA,EAAAA,IAAA,CADCtF,EAAAA,IAAM,wCAMPsF,EAAAA,EAAAA,IAAA,CADCtF,EAAAA,IAAM,gDAMPsF,EAAAA,EAAAA,IAAA,CADCtF,EAAAA,IAAM,gDAMPsF,EAAAA,EAAAA,IAAA,CADCtF,EAAAA,IAAM,+CAgBPsF,EAAAA,EAAAA,IAAA,CADCtF,EAAAA,IAAM,4CAOPsF,EAAAA,EAAAA,IAAA,CADCtF,EAAAA,IAAM,yCASPsF,EAAAA,EAAAA,IAAA,CADCtF,EAAAA,IAAM,gCAUPsF,EAAAA,EAAAA,IAAA,CADCtF,EAAAA,IAAM,gCCzGJ,MAAMooB,UAAqCpC,EAAlDrmB,cAAA,oBACqB,KAAA0oB,iBAA2B,wCAE3B,KAAAC,iBAA2B,+DA2FhD,CAxFWroB,gBAAgBsoB,EAAoB3hB,GACvC,KACK2hB,GACA3hB,EAAcC,eAAeC,SAC7BF,EAAcC,eAAeC,QAAQ0hB,gBACrC5hB,EAAcC,eAAeC,QAAQ2hB,iBAEtC,OAGJ,IAAIC,EAAwBH,EAE5B,MAAMI,EAAQ,qBAAqBC,OAAOC,gBAAgB,IAAIC,YAAY,IAAI,KAE1EliB,EAAcC,eAAeC,QAAQiiB,8BACrCL,EAAgB,GAAGH,EAAWS,UAAUpiB,EAAcC,eAAeC,QAAQiiB,+BAGjF,MAAME,EAAQC,UAAUR,GAClBnV,EAAM2V,UAAUtiB,EAAcC,eAAeC,QAAQ0hB,gBAErDW,EACFviB,EAAcC,eAAeS,KAC7BV,EAAcC,eAAeS,IAAIC,QACjCX,EAAcC,eAAeS,IAAIC,OAAO4hB,kBACtCC,EAAa,GACfD,GAAwCpoB,KAAKsnB,oCAC7BY,SAAa1V,WAAaoV,IAE9C,OAAO,IAAInR,SAA4CC,IACnD,MAAM4R,EAASnX,SAASoX,cAAc,UACtCD,EAAOlkB,aAAa,OAAQ,mBAC5BkkB,EAAOlkB,aAAa,MAAOikB,GAE3Bhe,OAAOud,GAAU5f,WACNqC,OAAOud,GACdU,EAAOE,SAEHxgB,GAAQA,EAAKygB,cAAgBzgB,EAAKygB,aAAahjB,OAAS,GAAKuC,EAAKygB,aAAa,GAAG7jB,UAAUa,OAAS,GACrGiR,EAAQ,CACJ+P,SAAUze,EAAKygB,aAAa,GAAG7jB,UAAU,GAAG8jB,MAAMC,YAAY,GAC9DjC,UAAW1e,EAAKygB,aAAa,GAAG7jB,UAAU,GAAG8jB,MAAMC,YAAY,KAIvEjS,OAAQ3W,EAAU,EAGtBoR,SAASyX,KAAKC,YAAYP,EAAO,GAEzC,CAGOppB,iBAAiBC,GAAuB,IAAA2pB,EAC3C,GAAIC,EAAAA,iBAAAA,cAA+B5pB,EAAMqT,KACrC,OAAOiE,QAAQC,UAKnB,KAFwC,QAAToS,EAAC3X,gBAAQ,IAAA2X,IAARA,EAAUE,eAAe,yBAIrD,OAAOvS,QAAQC,UAGnB,MAAMuS,EAAM,GAAGjpB,KAAKunB,mBAAmBpoB,EAAMqT,IAAM,QAAQrT,EAAMqT,MAAQ,KAAKrT,EAAM+pB,KAAO,YAAY/pB,EAAM+pB,OAAS,KAClH/pB,EAAMgqB,OAAS,WAAWhqB,EAAMgqB,SAAW,KAG/C,OAAO,IAAI1S,SAAQ,CAACC,EAAS6G,KAAU,IAAA6L,EAAAC,EAAAC,EACnC,MAAMhB,EAAiB,QAAXc,EAAGjY,gBAAQ,IAAAiY,OAAA,EAARA,EAAUb,cAAc,UACvCD,EAAOzlB,KAAO,kBACdylB,EAAOppB,OAAQ,EACfopB,EAAOiB,OAAQ,EACfjB,EAAOkB,IAAMP,EACbX,EAAOhpB,GAAK,uBACR+K,SACAA,OAAOof,YAAc,KACjBzpB,KAAK0pB,gBAAiB,EACtBhT,GAAS,GAGjB4R,EAAOqB,iBAAiB,SAAUvS,IAC9BmG,EAAOnG,EAAM,IAET,QAARiS,EAAAlY,gBAAQ,IAAAkY,GAAM,QAANC,EAARD,EAAUT,YAAI,IAAAU,GAAdA,EAAgBT,YAAYP,EAAO,GAE3C,ECrGG,SAASsB,EAA8BllB,GAC1C,OAAO,IAAImlB,EAAAA,aAAyC,UAAWnlB,EAAQ,6BAC3E,EDYIH,EAAAA,EAAAA,IAAA,CADCtF,EAAAA,IAAM,+BAsDPsF,EAAAA,EAAAA,IAAA,CADCtF,EAAAA,IAAM,+BC9DX,MAIa6qB,GAA6BC,EAAAA,EAAAA,IAA2B,CACjE9qB,OAA6C+qB,EAAAA,iBAC7C7qB,MAN2C8qB,GACpCL,EAA8B,IAAIvC,KAQ7C,aCvBA6C,EAAOC,QAAgC,oBAAfC,aAAiD,oBAAZC,oCCA7D,IAmCIC,EAAMC,EAAaC,EAnCnBC,EAAsB,EAAQ,KAC9BC,EAAc,EAAQ,IACtBC,EAAS,EAAQ,IACjBC,EAAa,EAAQ,IACrBC,EAAW,EAAQ,IACnBC,EAAS,EAAQ,IACjBC,EAAU,EAAQ,IAClBC,EAAc,EAAQ,IACtBC,EAA8B,EAAQ,IACtCC,EAAgB,EAAQ,KACxBC,EAAwB,EAAQ,KAChCC,EAAgB,EAAQ,IACxBC,EAAiB,EAAQ,KACzBC,EAAiB,EAAQ,KACzBC,EAAkB,EAAQ,IAC1BC,EAAM,EAAQ,IACdC,EAAsB,EAAQ,KAE9BC,EAAuBD,EAAoBE,QAC3CC,EAAmBH,EAAoBI,IACvCC,EAAYnB,EAAOmB,UACnBC,EAAqBD,GAAaA,EAAU/H,UAC5CiI,EAAoBrB,EAAOqB,kBAC3BC,EAA6BD,GAAqBA,EAAkBjI,UACpEmI,EAAaJ,GAAaT,EAAeS,GACzCK,EAAsBJ,GAAsBV,EAAeU,GAC3DK,EAAkB9pB,OAAOyhB,UACzBsI,EAAY1B,EAAO0B,UAEnBC,EAAgBf,EAAgB,eAChCgB,EAAkBf,EAAI,mBACtBgB,EAA0B,wBAE1BC,EAA4BhC,KAAyBa,GAA4C,UAA1BP,EAAQJ,EAAO+B,OACtFC,GAA2B,EAG3BC,EAA6B,CAC/Bd,UAAW,EACXe,WAAY,EACZb,kBAAmB,EACnBc,WAAY,EACZC,YAAa,EACbC,WAAY,EACZjF,YAAa,EACbkF,aAAc,EACdC,aAAc,GAGZC,EAA8B,CAChCC,cAAe,EACfC,eAAgB,GAWdC,EAA2B,SAAUC,GACvC,IAAIC,EAAQnC,EAAekC,GAC3B,GAAK1C,EAAS2C,GAAd,CACA,IAAIrtB,EAAQyrB,EAAiB4B,GAC7B,OAAQrtB,GAAS2qB,EAAO3qB,EAAOqsB,GAA4BrsB,EAA6B,sBAAImtB,EAAyBE,EAFzF,CAG9B,EAEIC,EAAe,SAAUF,GAC3B,IAAK1C,EAAS0C,GAAK,OAAO,EAC1B,IAAIG,EAAQ3C,EAAQwC,GACpB,OAAOzC,EAAO8B,EAA4Bc,IACrC5C,EAAOqC,EAA6BO,EAC3C,EAwDA,IAAKpD,KAAQsC,GAEXpC,GADAD,EAAcI,EAAOL,KACMC,EAAYxG,WACxB2H,EAAqBlB,GAAkC,sBAAID,EACrEkC,GAA4B,EAGnC,IAAKnC,KAAQ6C,GAEX3C,GADAD,EAAcI,EAAOL,KACMC,EAAYxG,aACxB2H,EAAqBlB,GAAkC,sBAAID,GAI5E,KAAKkC,IAA8B7B,EAAWsB,IAAeA,IAAeyB,SAAS5J,aAEnFmI,EAAa,WACX,MAAMG,EAAU,uBAClB,EACII,GAA2B,IAAKnC,KAAQsC,EACtCjC,EAAOL,IAAOgB,EAAeX,EAAOL,GAAO4B,GAInD,KAAKO,IAA8BN,GAAuBA,IAAwBC,KAChFD,EAAsBD,EAAWnI,UAC7B0I,GAA2B,IAAKnC,KAAQsC,EACtCjC,EAAOL,IAAOgB,EAAeX,EAAOL,GAAMvG,UAAWoI,GAS7D,GAJIM,GAA6BpB,EAAeY,KAAgCE,GAC9Eb,EAAeW,EAA4BE,GAGzCzB,IAAgBI,EAAOqB,EAAqBG,GAQ9C,IAAKhC,KAPLqC,GAA2B,EAC3BxB,EAAsBgB,EAAqBG,EAAe,CACxDsB,cAAc,EACd/B,IAAK,WACH,OAAOhB,EAAS7qB,MAAQA,KAAKusB,QAAmBxsB,CAClD,IAEW6sB,EAAgCjC,EAAOL,IAClDW,EAA4BN,EAAOL,GAAOiC,EAAiBjC,GAI/DJ,EAAOC,QAAU,CACfsC,0BAA2BA,EAC3BF,gBAAiBI,GAA4BJ,EAC7CsB,YA1GgB,SAAUN,GAC1B,GAAIE,EAAaF,GAAK,OAAOA,EAC7B,MAAMlB,EAAU,8BAClB,EAwGEyB,uBAtG2B,SAAUC,GACrC,GAAInD,EAAWmD,MAAQzC,GAAkBF,EAAcc,EAAY6B,IAAK,OAAOA,EAC/E,MAAM1B,EAAUrB,EAAY+C,GAAK,oCACnC,EAoGEC,uBAlG2B,SAAUC,EAAKC,EAAUC,EAAQC,GAC5D,GAAK1D,EAAL,CACA,GAAIyD,EAAQ,IAAK,IAAIE,KAASzB,EAA4B,CACxD,IAAI0B,EAAwB3D,EAAO0D,GACnC,GAAIC,GAAyBxD,EAAOwD,EAAsBvK,UAAWkK,GAAM,WAClEK,EAAsBvK,UAAUkK,EAMzC,CALE,MAAO7W,GAEP,IACEkX,EAAsBvK,UAAUkK,GAAOC,CACV,CAA7B,MAAOK,GAAsB,CACjC,CACF,CACKpC,EAAoB8B,KAAQE,GAC/BjD,EAAciB,EAAqB8B,EAAKE,EAASD,EAC7CzB,GAA6BV,EAAmBkC,IAAQC,EAAUE,EAdhD,CAgB1B,EAkFEI,6BAhFiC,SAAUP,EAAKC,EAAUC,GAC1D,IAAIE,EAAOC,EACX,GAAK5D,EAAL,CACA,GAAIY,EAAgB,CAClB,GAAI6C,EAAQ,IAAKE,KAASzB,EAExB,IADA0B,EAAwB3D,EAAO0D,KACFvD,EAAOwD,EAAuBL,GAAM,WACxDK,EAAsBL,EACD,CAA5B,MAAO7W,GAAqB,CAEhC,GAAK8U,EAAW+B,KAAQE,EAKjB,OAHL,IACE,OAAOjD,EAAcgB,EAAY+B,EAAKE,EAASD,EAAWzB,GAA6BP,EAAW+B,IAAQC,EAC9E,CAA5B,MAAO9W,GAAqB,CAElC,CACA,IAAKiX,KAASzB,IACZ0B,EAAwB3D,EAAO0D,KACAC,EAAsBL,KAAQE,GAC3DjD,EAAcoD,EAAuBL,EAAKC,EAlBtB,CAqB1B,EA0DEZ,yBAA0BA,EAC1BmB,OArIW,SAAgBlB,GAC3B,IAAK1C,EAAS0C,GAAK,OAAO,EAC1B,IAAIG,EAAQ3C,EAAQwC,GACpB,MAAiB,aAAVG,GACF5C,EAAO8B,EAA4Bc,IACnC5C,EAAOqC,EAA6BO,EAC3C,EAgIED,aAAcA,EACdvB,WAAYA,EACZC,oBAAqBA,+BC9LvB,IAAIuC,EAAW,EAAQ,IACnBC,EAAkB,EAAQ,KAC1BC,EAAoB,EAAQ,IAIhC1E,EAAOC,QAAU,SAAcpnB,GAO7B,IANA,IAAI8rB,EAAIH,EAAS1uB,MACbyF,EAASmpB,EAAkBC,GAC3BC,EAAkBrN,UAAUhc,OAC5B8M,EAAQoc,EAAgBG,EAAkB,EAAIrN,UAAU,QAAK1hB,EAAW0F,GACxEspB,EAAMD,EAAkB,EAAIrN,UAAU,QAAK1hB,EAC3CivB,OAAiBjvB,IAARgvB,EAAoBtpB,EAASkpB,EAAgBI,EAAKtpB,GACxDupB,EAASzc,GAAOsc,EAAEtc,KAAWxP,EACpC,OAAO8rB,CACT,iBChBA,IAAII,EAAc,EAAQ,IAEtBC,EAAa7C,UAIjBnC,EAAOC,QAAU,SAAUgF,GACzB,IAAIC,EAAOH,EAAYE,EAAU,UACjC,GAAmB,iBAARC,EAAkB,MAAMF,EAAW,kCAE9C,OAAOG,OAAOD,EAChB,iBCXA,IAAIE,EAAoB,EAAQ,KAE5BC,EAAcC,WAElBtF,EAAOC,QAAU,SAAUoD,EAAIkC,GAC7B,IAAIC,EAASJ,EAAkB/B,GAC/B,GAAImC,EAASD,EAAO,MAAMF,EAAY,gBACtC,OAAOG,CACT,iBCRA,IAAIC,EAAsB,EAAQ,IAE9BJ,EAAcC,WAElBtF,EAAOC,QAAU,SAAUoD,GACzB,IAAI7oB,EAASirB,EAAoBpC,GACjC,GAAI7oB,EAAS,EAAG,MAAM6qB,EAAY,qCAClC,OAAO7qB,CACT,8BCPA,IAAIkrB,EAAsB,EAAQ,IAC9BC,EAAQ,EAAQ,KAChBC,EAAW,EAAQ,KACnB/E,EAAU,EAAQ,IAClBgF,EAAO,EAAQ,IACfC,EAAc,EAAQ,IACtBC,EAAQ,EAAQ,IAEhBpC,EAAc+B,EAAoB/B,YAClCG,EAAyB4B,EAAoB5B,uBAC7CkC,EAAQF,EAAY,GAAGE,OAY3BlC,EAAuB,QAAQ,SAAcjrB,GAC3C,IAAI0C,EAASgc,UAAUhc,OACvBooB,EAAY7tB,MACZ,IAAImwB,EAA6C,QAA/BD,EAAMnF,EAAQ/qB,MAAO,EAAG,GAAe8vB,EAAS/sB,IAAUA,EAC5E,OAAOgtB,EAAKF,EAAO7vB,KAAMmwB,EAAa1qB,EAAS,EAAIgc,UAAU,QAAK1hB,EAAW0F,EAAS,EAAIgc,UAAU,QAAK1hB,EAC3G,GAdqBkwB,GAAM,WACzB,IAAInZ,EAAQ,EAGZ,OADA,IAAIgV,UAAU,GAAGsE,KAAK,CAAEC,QAAS,WAAc,OAAOvZ,GAAS,IAC9C,IAAVA,CACT,iCClBA,IAAI6T,EAAS,EAAQ,IACjBoF,EAAO,EAAQ,IACfH,EAAsB,EAAQ,IAC9BhB,EAAoB,EAAQ,IAC5B0B,EAAW,EAAQ,KACnBC,EAAkB,EAAQ,IAC1BN,EAAQ,EAAQ,IAEhBT,EAAa7E,EAAO6E,WACpB1D,EAAYnB,EAAOmB,UACnBC,EAAqBD,GAAaA,EAAU/H,UAC5CyM,EAAOzE,GAAsBA,EAAmB0E,IAChD5C,EAAc+B,EAAoB/B,YAClCG,EAAyB4B,EAAoB5B,uBAE7C0C,GAAkDT,GAAM,WAE1D,IAAIU,EAAQ,IAAI3E,kBAAkB,GAElC,OADA+D,EAAKS,EAAMG,EAAO,CAAElrB,OAAQ,EAAG,EAAG,GAAK,GACnB,IAAbkrB,EAAM,EACf,IAGIC,EAAgBF,GAAkDd,EAAoBnD,2BAA6BwD,GAAM,WAC3H,IAAIU,EAAQ,IAAI7E,EAAU,GAG1B,OAFA6E,EAAMF,IAAI,GACVE,EAAMF,IAAI,IAAK,GACK,IAAbE,EAAM,IAAyB,IAAbA,EAAM,EACjC,IAIA3C,EAAuB,OAAO,SAAa6C,GACzChD,EAAY7tB,MACZ,IAAI0vB,EAASY,EAAS7O,UAAUhc,OAAS,EAAIgc,UAAU,QAAK1hB,EAAW,GACnEypB,EAAM+G,EAAgBM,GAC1B,GAAIH,EAAgD,OAAOX,EAAKS,EAAMxwB,KAAMwpB,EAAKkG,GACjF,IAAIjqB,EAASzF,KAAKyF,OACdqrB,EAAMlC,EAAkBpF,GACxBjX,EAAQ,EACZ,GAAIue,EAAMpB,EAASjqB,EAAQ,MAAM+pB,EAAW,gBAC5C,KAAOjd,EAAQue,GAAK9wB,KAAK0vB,EAASnd,GAASiX,EAAIjX,IACjD,IAAIme,GAAkDE,+BC1CtD,IAAIjG,EAAS,EAAQ,IACjBqF,EAAc,EAAQ,IACtBC,EAAQ,EAAQ,IAChBc,EAAY,EAAQ,IACpBC,EAAe,EAAQ,KACvBpB,EAAsB,EAAQ,IAC9BqB,EAAK,EAAQ,KACbC,EAAa,EAAQ,KACrBC,EAAK,EAAQ,IACbC,EAAS,EAAQ,KAEjBvD,EAAc+B,EAAoB/B,YAClCG,EAAyB4B,EAAoB5B,uBAC7CjB,EAAcpC,EAAOoC,YACrBsE,EAAatE,GAAeiD,EAAYjD,EAAYhJ,UAAUuN,MAG9DC,KAA+BF,GAAgBpB,GAAM,WACvDoB,EAAW,IAAItE,EAAY,GAAI,KACjC,KAAMkD,GAAM,WACVoB,EAAW,IAAItE,EAAY,GAAI,CAAC,EAClC,KAEIyE,IAAgBH,IAAepB,GAAM,WAEvC,GAAIkB,EAAI,OAAOA,EAAK,GACpB,GAAIF,EAAI,OAAOA,EAAK,GACpB,GAAIC,EAAY,OAAO,EACvB,GAAIE,EAAQ,OAAOA,EAAS,IAE5B,IAEI7e,EAAOkf,EAFPd,EAAQ,IAAI5D,EAAY,KACxB2E,EAAWC,MAAM,KAGrB,IAAKpf,EAAQ,EAAGA,EAAQ,IAAKA,IAC3Bkf,EAAMlf,EAAQ,EACdoe,EAAMpe,GAAS,IAAMA,EACrBmf,EAASnf,GAASA,EAAQ,EAAIkf,EAAM,EAOtC,IAJAJ,EAAWV,GAAO,SAAUiB,EAAGC,GAC7B,OAAQD,EAAI,EAAI,IAAMC,EAAI,EAAI,EAChC,IAEKtf,EAAQ,EAAGA,EAAQ,IAAKA,IAC3B,GAAIoe,EAAMpe,KAAWmf,EAASnf,GAAQ,OAAO,CAEjD,IAgBAyb,EAAuB,QAAQ,SAAc8D,GAE3C,YADkB/xB,IAAd+xB,GAAyBf,EAAUe,GACnCN,EAAoBH,EAAWrxB,KAAM8xB,GAElCd,EAAanD,EAAY7tB,MAlBb,SAAU8xB,GAC7B,OAAO,SAAUC,EAAGC,GAClB,YAAkBjyB,IAAd+xB,GAAiCA,EAAUC,EAAGC,IAAM,EAEpDA,GAAMA,GAAW,EAEjBD,GAAMA,EAAU,EACV,IAANA,GAAiB,IAANC,EAAgB,EAAID,EAAI,GAAK,EAAIC,EAAI,EAAI,GAAK,EACtDD,EAAIC,CACb,CACF,CAQyCC,CAAeH,GACxD,IAAIN,GAAeD,+BCpEnB,IAAI5G,EAAS,EAAQ,IACjBuH,EAAQ,EAAQ,KAChBtC,EAAsB,EAAQ,IAC9BK,EAAQ,EAAQ,IAChBkC,EAAa,EAAQ,KAErBrG,EAAYnB,EAAOmB,UACnB+B,EAAc+B,EAAoB/B,YAClCG,EAAyB4B,EAAoB5B,uBAC7CoE,EAAkB,GAAGC,eAGrBC,IAAyBxG,GAAamE,GAAM,WAC9CmC,EAAgBrC,KAAK,IAAIjE,EAAU,GACrC,IAUAkC,EAAuB,kBAAkB,WACvC,OAAOkE,EACLE,EACAE,EAAuBH,EAAWtE,EAAY7tB,OAAS6tB,EAAY7tB,MACnEmyB,EAAW1Q,WAEf,GAdawO,GAAM,WACjB,MAAO,CAAC,EAAG,GAAGoC,kBAAoB,IAAIvG,EAAU,CAAC,EAAG,IAAIuG,gBAC1D,MAAOpC,GAAM,WACXnE,EAAU/H,UAAUsO,eAAetC,KAAK,CAAC,EAAG,GAC9C,yBCrBA7F,EAAOC,QAAU1qB,2BCAjByqB,EAAOC,QAAUoI","sources":["webpack://Msdyn365.Commerce.Online/./src/actions/BuyBoxSelectedQuantity/ecomm-buybox-selected-quantity.ts?a3aa","webpack://Msdyn365.Commerce.Online/./src/modules/ecomm-buybox/components/Quantity.tsx?5de7","webpack://Msdyn365.Commerce.Online/./src/modules/ecomm-buybox/utilities/error-utilities.ts?5740","webpack://Msdyn365.Commerce.Online/./src/modules/ecomm-buybox/components/ecomm-buybox-small-components.tsx?34a6","webpack://Msdyn365.Commerce.Online/./src/modules/ecomm-buybox/components/ecomm-buybox-find-in-store.tsx?c597","webpack://Msdyn365.Commerce.Online/./src/modules/ecomm-buybox/components/dropdown/dropdown.tsx?1ff1","webpack://Msdyn365.Commerce.Online/./src/modules/ecomm-buybox/components/ecomm-buybox-product-configure.tsx?e067","webpack://Msdyn365.Commerce.Online/./src/modules/ecomm-buybox/ecomm-buybox.tsx?3035","webpack://Msdyn365.Commerce.Online/./src/modules/ecomm-buybox/ecomm-buybox.view.tsx?c8e7","webpack://Msdyn365.Commerce.Online/./lib/ecomm-buybox/module-registration.js?f326","webpack://Msdyn365.Commerce.Online/./src/store-selector-state-manager/base-store-selector-state-manager.ts?281e","webpack://Msdyn365.Commerce.Online/./src/store-selector-state-manager/map-store-selector-state-manager.ts?2ae0","webpack://Msdyn365.Commerce.Online/./src/store-selector-state-manager/store-selector-state-manager-data-action.ts?bd3e","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/array-buffer-basic-detection.js?f54a","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/array-buffer-view-core.js?ec3e","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/array-fill.js?e9e8","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/to-big-int.js?fe6c","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/to-offset.js?28dc","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/to-positive-integer.js?9b91","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.typed-array.fill.js?0858","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.typed-array.set.js?4e03","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.typed-array.sort.js?733e","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.typed-array.to-locale-string.js?3d1c","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\n/**\r\n * GetActivecategorymenustate Input Action\r\n */\r\nexport class GetSelectedQuantityValuesInput implements Msdyn365.IActionInput {\r\n // TODO: Determine if the results of this get action should cache the results and if so provide\r\n // a cache object type and an appropriate cache key\r\n public getCacheKey = () => `SelectedProductQuamtity`;\r\n public getCacheObjectType = () => 'SelectedProductQuamtity';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface IGetSelectedQuantityStateData {\r\n selectedQuantity: number;\r\n}\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nconst createInput = (args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {\r\n return new GetSelectedQuantityValuesInput();\r\n};\r\n\r\n/**\r\n * TODO: Use this function to call your action and process the results as needed\r\n */\r\nasync function getSelectedQuantityValuesStateAction(input: GetSelectedQuantityValuesInput, ctx: Msdyn365.IActionContext):Promise {\r\n // const apiSettings = Msdyn365.msdyn365Commerce.apiSettings;\r\n\r\n // TODO: Uncomment the below line to get the value from a service\r\n // const response = await Msdyn365.sendRequest('/get/example/id/1', 'get');\r\n return { selectedQuantity: 1 };\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >getSelectedQuantityValuesStateAction,\r\n // TODO: Give your data action a unique id\r\n id: 'GetSelectedQuantityValuesStateActionState',\r\n input: createInput\r\n // TODO: Uncomment the below line if this is a meant to be a batched data action\r\n // isBatched: true\r\n});","import { getPayloadObject, getTelemetryAttributes, IPayLoad, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport { debounce } from 'lodash';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IQuantityProps } from './Quantity.props';\r\nimport { GetSelectedQuantityValuesInput } from '../../../actions/BuyBoxSelectedQuantity/ecomm-buybox-selected-quantity';\r\n\r\ninterface IQuantityState {\r\n currentInput: number;\r\n isUpdateing: boolean;\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 Quantity 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 inputRef: React.RefObject = React.createRef();\r\n private payLoad: IPayLoad;\r\n\r\n constructor(props: IQuantityProps) {\r\n super(props);\r\n this.state = { currentInput: props.currentCount || 1, isUpdateing: false };\r\n this._onIncrement = this._onIncrement.bind(this);\r\n this._onDecrement = this._onDecrement.bind(this);\r\n this._handleChange = this._handleChange.bind(this);\r\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, '');\r\n }\r\n\r\n public componentDidUpdate(prevProps: IQuantityProps): void {\r\n if (!this.props.disabled && this.state.currentInput !== this.props.currentCount && prevProps.currentCount !== this.props.currentCount) {\r\n this.setState({ currentInput: this.props.currentCount || 1});\r\n }\r\n\r\n if (this.props.disabled && !this.state.isUpdateing) {\r\n this.setState({ isUpdateing: true });\r\n }\r\n\r\n if (!this.props.disabled && this.state.isUpdateing) {\r\n this.setState({ currentInput: this.props.currentCount || 1, isUpdateing: false });\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n min,\r\n max,\r\n } = this.props;\r\n\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 decrementDisabled = this.state.currentInput <= (min || 1) || this.props.isGiftCard;\r\n const incrementDisabled = this.state.currentInput >= max || this.props.isGiftCard;\r\n const currentValue = this.state.currentInput;\r\n this.payLoad.contentAction.etext = TelemetryConstant.DecrementQuantity;\r\n const decrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = TelemetryConstant.IncrementQuantity;\r\n const incrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n\r\n let extraClassDecrement = '';\r\n if (decrementDisabled) {\r\n // The quantity has reached its boundaries (max or min)\r\n extraClassDecrement ='disabled';\r\n\r\n } else if (this.props.disabled) {\r\n // this.props.disabled shows if the state is not succeded yet\r\n extraClassDecrement = 'transition';\r\n }\r\n let extraClassIncrement = '';\r\n if (incrementDisabled) {\r\n // The quantity has reached its boundaries (max or min)\r\n extraClassIncrement ='disabled';\r\n } else if (this.props.disabled) {\r\n // this.props.disabled shows if the state is not succeded yet\r\n extraClassIncrement = 'transition';\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 }\r\n\r\n private _onIncrement(): void {\r\n let invokeCallback = false;\r\n const currQuantity = this.state.currentInput;\r\n let updatedQuantity: number;\r\n\r\n if (currQuantity < this.props.max) {\r\n invokeCallback = true;\r\n updatedQuantity = currQuantity + 1 ;\r\n } else {\r\n invokeCallback = false;\r\n updatedQuantity = this.props.max;\r\n }\r\n\r\n if (invokeCallback && this.props.onChange) {\r\n if (this.props.onChange(updatedQuantity)) {\r\n this.setState({ currentInput: updatedQuantity });\r\n this.props.context?.update(new GetSelectedQuantityValuesInput(), { selectedQuantity: updatedQuantity });\r\n }\r\n }\r\n }\r\n\r\n private _onDecrement(): void {\r\n let invokeCallback = false;\r\n const currQuantity = this.state.currentInput;\r\n let updatedQuantity: number;\r\n\r\n if (currQuantity > 1) {\r\n invokeCallback = true;\r\n updatedQuantity = currQuantity - 1;\r\n } else {\r\n invokeCallback = false;\r\n updatedQuantity = 1;\r\n }\r\n\r\n if (invokeCallback && this.props.onChange) {\r\n if (this.props.onChange(updatedQuantity)) {\r\n this.setState({ currentInput: updatedQuantity });\r\n this.props.context?.update(new GetSelectedQuantityValuesInput(), { selectedQuantity: updatedQuantity });\r\n }\r\n }\r\n }\r\n\r\n private _handleChange(e: React.ChangeEvent): void {\r\n const currentValue = parseInt((e.target.value), 10);\r\n this.props.context?.update(new GetSelectedQuantityValuesInput(), { selectedQuantity: currentValue });\r\n const minValue = this.props.min === undefined ? 1 : this.props.min;\r\n const inputElement = 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(\r\n { currentInput: this.props.max },\r\n () => {\r\n debounce(\r\n () => {\r\n // due of usage debouncer, we may ignore onChange return value\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n },\r\n 200)();\r\n }\r\n );\r\n } else {\r\n this.setState(\r\n { currentInput: currentValue },\r\n () => {\r\n debounce(\r\n () => {\r\n if (!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue)) {\r\n // due of usage debouncer, we may ignore onChange return value\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n\r\n if (inputElement) {\r\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\r\n inputElement.setAttribute('value', currentValue.toString());\r\n }\r\n }\r\n },\r\n 200)();\r\n }\r\n );\r\n }\r\n }\r\n\r\n private _validateMin = (): void => {\r\n const minValue = this.props.min === undefined ? 1 : this.props.min;\r\n if (isNaN(this.state.currentInput) || (this.state.currentInput < minValue)) {\r\n this.setState({ currentInput: minValue }, () => { this.props.onChange && this.props.onChange(this.state.currentInput); });\r\n } else {\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n }\r\n }\r\n}","/* tslint:disable: no-duplicate-imports */\r\nimport { IAddToCartFailureResult } from '@msdyn365-commerce/components';\r\nimport { IAny, ICoreContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { OrgUnitLocation, ProductAvailableQuantity , ProductDimension, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { IEcommBuyboxResources } from '../ecomm-buybox.props.autogenerated';\r\n\r\nexport function getQuantityError(stockLeft: number | undefined, resources: IEcommBuyboxResources): string | undefined {\r\n if (!stockLeft || stockLeft <= 0) {\r\n return resources.errorMessageOutOfStock;\r\n } else if (stockLeft === 1) {\r\n return resources.errorMessageOutOfRangeOneLeft;\r\n } else {\r\n return resources.errorMessageOutOfRangeFormat.replace('{numLeft}', stockLeft.toString());\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:cyclomatic-complexity\r\nexport function getGenericError(\r\n result: IAddToCartFailureResult,\r\n cart: ICartState | undefined,\r\n resources: IEcommBuyboxResources,\r\n context: ICoreContext>,\r\n product: SimpleProduct | undefined,\r\n productAvailability: ProductAvailableQuantity | undefined,\r\n location: OrgUnitLocation | undefined)\r\n : string | undefined {\r\n if (result.failureReason === 'EMPTYINPUT') {\r\n return resources.addedToCartFailureMessage;\r\n } else if (result.failureReason === 'CARTACTIONFAILED') {\r\n if (result.cartActionResult && result.cartActionResult.substatus === 'MAXQUANTITY') {\r\n // get the quantity of the product in cart\r\n let elementFoundAt:number = -1;\r\n const productIdToFind = product?.RecordId;\r\n\r\n for (let i = 0; i < cart!.cart.CartLines!.length; i++) {\r\n if (cart!.cart.CartLines![`${i}`].ProductId === productIdToFind &&\r\n (cart!.cart.CartLines![`${i}`].DeliveryMode || '') === (location && context.actionContext.requestContext.channel?.PickupDeliveryModeCode || '') &&\r\n (cart!.cart.CartLines![`${i}`].FulfillmentStoreId || '') === (location?.OrgUnitNumber || '')) {\r\n elementFoundAt = i;\r\n\r\n break;\r\n }\r\n }\r\n\r\n let curQuantity: number = 0;\r\n\r\n if (elementFoundAt !== -1) {\r\n const cartLineToUpdate = {...cart!.cart.CartLines![`${elementFoundAt}`]};\r\n curQuantity = cartLineToUpdate.Quantity || 0;\r\n }\r\n\r\n // get the quantity limit for the product\r\n const maxQuantityForCartLineItem = context.app.config.maxQuantityForCartLineItem;\r\n const availableQty = productAvailability?.AvailableQuantity;\r\n\r\n let quantityLimit: number;\r\n\r\n if (maxQuantityForCartLineItem === undefined && availableQty === undefined) {\r\n quantityLimit = 10;\r\n } else if (availableQty === undefined) {\r\n quantityLimit = maxQuantityForCartLineItem;\r\n } else if (maxQuantityForCartLineItem === undefined) {\r\n quantityLimit = availableQty;\r\n } else {\r\n quantityLimit = Math.min(maxQuantityForCartLineItem, availableQty);\r\n }\r\n\r\n return resources.maxQuantityLimitText.replace('{curQuantity}', curQuantity.toString()).replace('{maxQuantity}', quantityLimit.toString());\r\n } else if (result.cartActionResult && result.cartActionResult.substatus === 'QUANTITYLIMITS') {\r\n return result.cartActionResult?.errorDetails?.LocalizedMessage;\r\n }\r\n\r\n return resources.addedToCartFailureMessage;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nexport function getConfigureErrors(result: ProductDimension[] | undefined, resources: IEcommBuyboxResources, isGiftCard?: Boolean): { [configureId: string]: string | undefined } {\r\n if (!result) {\r\n return {};\r\n }\r\n\r\n const dimensions: { [configureId: string]: string | undefined } = {};\r\n\r\n result.forEach(dimension => {\r\n dimensions[dimension.DimensionTypeValue] = getDimensionErrorString(dimension.DimensionTypeValue, resources, isGiftCard);\r\n });\r\n\r\n return dimensions;\r\n}\r\n\r\nexport function getDimensionErrorString(dimensionTypeValue: number, resources: IEcommBuyboxResources, isGiftCard?: Boolean): string {\r\n switch (dimensionTypeValue) {\r\n case 1: // ProductDimensionType.Color\r\n return resources.productDimensionTypeColorErrorMessage;\r\n case 2: // ProductDimensionType.Configuration\r\n return resources.productDimensionTypeConfigurationErrorMessage;\r\n case 3: // ProductDimensionType.Size\r\n return resources.productDimensionTypeSizeErrorMessage;\r\n case 4: // ProductDimensionType.Style\r\n return isGiftCard ? resources.productDimensionTypeAmountErrorMessage : resources.productDimensionTypeStyleErrorMessage;\r\n default:\r\n return '';\r\n }\r\n}","/* tslint:disable: no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\n// import { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Alert, Button, format, getPayloadObject, getTelemetryAttributes, getTelemetryObject, Heading, INodeProps, ITelemetryContent, Node, /*Quantity,*/ TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport Quantity from './Quantity';\r\nimport {\r\n AddToOrderTemplateComponent,\r\n AddToWishlistComponent,\r\n IAddToOrderTemplateDialogResources,\r\n IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\r\n IItemAddedToOrderTemplateDialogResources,\r\n IOrderTemplateActionErrorResult,\r\n IOrderTemplateNameDialogResources,\r\n IWishlistActionErrorResult,\r\n PriceComponent,\r\n RatingComponent\r\n} from '@msdyn365-commerce/components';\r\nimport { getUrlSync } from '@msdyn365-commerce/core';\r\nimport { IBuyboxState } from '@msdyn365-commerce-modules/buybox';\r\nimport { IBuyboxCallbacks } from '../ecomm-buybox';\r\nimport { getConfigureErrors } from '../utilities/error-utilities';\r\nimport { IEcommBuyboxData } from '../ecomm-buybox.data';\r\nimport { IEcommBuyboxProps, IEcommBuyboxResources } from '../ecomm-buybox.props.autogenerated';\r\n\r\nexport function getBuyBoxInventoryLabel(props: IEcommBuyboxProps): React.ReactElement | undefined {\r\n const {\r\n data: { productAvailableQuantity: { result: productAvailableQuantity } },\r\n } = props;\r\n if (!productAvailableQuantity || !productAvailableQuantity.length) {\r\n return undefined;\r\n }\r\n if (productAvailableQuantity &&\r\n productAvailableQuantity.length &&\r\n productAvailableQuantity[0].StockLevelLabel) {\r\n const inventoryClassName = productAvailableQuantity[0].StockLevelCode ?\r\n `ms-buybox__inventory-label ms-buybox__inventory-code-${productAvailableQuantity[0].StockLevelCode.toLowerCase()}` :\r\n 'ms-buybox__inventory-label';\r\n return (
{productAvailableQuantity[0].StockLevelLabel}
);\r\n }\r\n\r\n return undefined;\r\n\r\n}\r\nexport function getBuyboxProductTitle(props: IEcommBuyboxProps): React.ReactElement | undefined {\r\n const {\r\n data: { product: { result: product } },\r\n config: { titleHeadingTag = 'h1' }\r\n } = props;\r\n\r\n return product && (\r\n \r\n );\r\n}\r\n\r\nexport function getBuyboxProductDescription(props: IEcommBuyboxProps): React.ReactElement | undefined {\r\n const {\r\n data: { product: { result: product } }\r\n } = props;\r\n\r\n return product && (\r\n

{product.Description}

\r\n );\r\n}\r\n\r\nexport interface IBuyboxAddToCartViewProps {\r\n ContainerProps: INodeProps;\r\n errorBlock?: React.ReactNode;\r\n button?: React.ReactNode;\r\n button2?: React.ReactNode;\r\n}\r\n\r\nlet telemetryContent: ITelemetryContent;\r\n\r\n// tslint:disable-next-line:max-func-body-length\r\nexport function getBuyboxAddToCart(props: IEcommBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks,\r\n defaultMinimumKeyInPrice: number, defaultMaximumKeyInPrice: number): IBuyboxAddToCartViewProps {\r\n const {\r\n typeName,\r\n data: { productAvailableQuantity: {} },\r\n resources,\r\n config: {}\r\n } = props;\r\n\r\n const {\r\n // quantity,\r\n errorState: {\r\n configureErrors,\r\n quantityError,\r\n customAmountError,\r\n otherError,\r\n errorHost\r\n },\r\n } = state;\r\n\r\n const isLoading = props.data.productAvailableQuantity.status === 'LOADING';\r\n if (isLoading) {\r\n callbacks.changeUpdatingDimension(false);\r\n }\r\n\r\n const isLoadingDeliveryOptions = typeName !== 'quickview' && props.data.deliveryOptions?.status === 'LOADING';\r\n if (isLoadingDeliveryOptions && callbacks.changeUpdatingDeliveryOptions) {\r\n callbacks.changeUpdatingDeliveryOptions(false);\r\n }\r\n\r\n telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!,\r\n props.friendlyName,\r\n props.telemetry);\r\n\r\n return {\r\n ContainerProps: {\r\n className: 'ecomm-buybox-action-wrapper'\r\n },\r\n button: (\r\n \r\n ),\r\n errorBlock: (\r\n \r\n )\r\n };\r\n}\r\n\r\nexport function getBuyboxProductPrice(props: IEcommBuyboxProps, state: IBuyboxState): React.ReactElement | undefined {\r\n const { id, typeName, context, resources } = props;\r\n\r\n const priceComponent = state.productPrice && state.productPrice.BasePrice != 0 && (\r\n
\r\n \r\n

{props.config.pricePerUnitTitle ? props.config.pricePerUnitTitle : 'Price Per Unit'}

\r\n
\r\n ) || undefined;\r\n\r\n return state.productPrice && priceComponent && (\r\n priceComponent\r\n );\r\n}\r\n\r\nexport function getBuyboxProductRating(props: IEcommBuyboxProps): React.ReactElement | undefined {\r\n const {\r\n id,\r\n typeName,\r\n context,\r\n data: { ratingsSummary: { result: ratingsSummary } },\r\n resources\r\n } = props;\r\n\r\n const ratingComponent = ratingsSummary && ratingsSummary.averageRating && (\r\n \r\n ) || undefined;\r\n\r\n return ratingsSummary && ratingComponent && (\r\n ratingComponent\r\n );\r\n}\r\n\r\nexport interface IBuyboxAddToOrderTemplateViewProps {\r\n ContainerProps: INodeProps;\r\n errorBlock?: React.ReactNode;\r\n button?: React.ReactNode;\r\n}\r\n\r\nfunction generateAddToOrderTemplateDialogResources(resources: IEcommBuyboxResources): IAddToOrderTemplateDialogResources {\r\n return {\r\n addToOrderTemplateHeader: resources.addToOrderTemplateHeader,\r\n\r\n noOrderTemplatesMessage: resources.noOrderTemplatesMessage,\r\n noOrderTemplatesDescription: resources.noOrderTemplatesDescription,\r\n\r\n createAnOrderTemplateButtonText: resources.createAnOrderTemplateButtonText,\r\n createNewOrderTemplateButtonText: resources.createNewOrderTemplateButtonText,\r\n cancelOrderTemplateCreationButtonText: resources.cancelOrderTemplateCreationButtonText,\r\n\r\n selectTemplatesText: resources.selectTemplatesText,\r\n addToTemplateButtonText: resources.addToTemplateButtonText,\r\n lineItemsText: resources.lineItemsText\r\n };\r\n}\r\n\r\nfunction generateOrderTemplateNameDialogResources(resources: IEcommBuyboxResources): 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\nfunction generateItemAddedToOrderTemplateDialogResources(resources: IEcommBuyboxResources): IItemAddedToOrderTemplateDialogResources {\r\n return {\r\n viewOrderTemplateButtonText: resources.viewOrderTemplateButtonText,\r\n continueShoppingButtonText: resources.continueShoppingButtonText,\r\n itemAddedToOrderTemplateHeaderItemOneText: resources.itemAddedToOrderTemplateHeaderItemOneText,\r\n itemAddedToOrderTemplateHeaderItemFormatText: resources.itemAddedToOrderTemplateHeaderItemFormatText,\r\n itemAddedToOrderTemplateHeaderMessageText: resources.itemAddedToOrderTemplateHeaderMessageText,\r\n freePriceText: resources.priceFree,\r\n originalPriceText: resources.originalPriceText,\r\n currentPriceText: resources.currentPriceText\r\n };\r\n}\r\n\r\nfunction generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(resources: IEcommBuyboxResources): IDuplicateItemsWhenAddingToOrderTemplateDialogResources {\r\n return {\r\n duplicatedProductsHeader: resources.duplicatedProductsHeader,\r\n duplicatedProductsDescription: resources.duplicatedProductsDescription,\r\n updateQuantityButtonText: resources.updateQuantityButtonText,\r\n cancelDuplicateItemsButtonText: resources.cancelDuplicateItemsButtonText\r\n };\r\n}\r\n\r\nexport function getBuyboxProductAddToOrderTemplate(props: IEcommBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): IBuyboxAddToOrderTemplateViewProps | undefined {\r\n const {\r\n id,\r\n typeName,\r\n context,\r\n data: {\r\n product: { result: product },\r\n orderTemplates: { result: orderTemplates },\r\n customerInformation: { result: customerInformation }\r\n },\r\n resources\r\n } = props;\r\n\r\n const\r\n {\r\n errorState: {\r\n configureErrors,\r\n quantityError,\r\n customAmountError,\r\n otherError,\r\n errorHost\r\n },\r\n quantity\r\n } = state;\r\n\r\n // If custom amount is selected, add-to-orderTemplate is disabled\r\n if (state.isCustomPriceSelected) {\r\n return undefined;\r\n }\r\n\r\n const onAddToOrderTemplateFailed = (result: IOrderTemplateActionErrorResult) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'ORDER_TEMPLATE',\r\n configureErrors: result.status === 'MISSING_DIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {},\r\n });\r\n };\r\n\r\n return {\r\n ContainerProps: {\r\n className: 'ms-buybox__add-to-order-template-container'\r\n },\r\n button: product && orderTemplates && (\r\n \r\n ),\r\n errorBlock: (\r\n \r\n )\r\n };\r\n}\r\n\r\nexport interface IBuyboxAddToWishlistViewProps {\r\n ContainerProps: INodeProps;\r\n errorBlock?: React.ReactNode;\r\n button?: React.ReactNode;\r\n}\r\nexport function getBuyboxProductAddToWishlist(props: IEcommBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): IBuyboxAddToWishlistViewProps | undefined {\r\n const {\r\n id,\r\n typeName,\r\n context,\r\n data: {\r\n product: { result: product },\r\n wishlists: { result: wishlists }\r\n },\r\n resources\r\n } = props;\r\n\r\n const\r\n {\r\n errorState: {\r\n configureErrors,\r\n quantityError,\r\n customAmountError,\r\n otherError,\r\n errorHost\r\n },\r\n selectedProduct\r\n } = state;\r\n\r\n // If custom amount is selected, add-to-wishlist is disabled\r\n if (state.isCustomPriceSelected) {\r\n return undefined;\r\n }\r\n\r\n const onAddToWishlistFailed = (result: IWishlistActionErrorResult) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'WISHLIST',\r\n configureErrors: result.status === 'MISSINGDIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {},\r\n });\r\n };\r\n\r\n return {\r\n ContainerProps: {\r\n className: 'ms-buybox__add-to-wishlist-container'\r\n },\r\n button: product && (\r\n \r\n ),\r\n errorBlock: (\r\n \r\n )\r\n };\r\n}\r\n\r\nexport interface IBuyboxProductQuantityViewProps {\r\n ContainerProps: INodeProps;\r\n LabelContainerProps: INodeProps;\r\n\r\n heading: React.ReactNode;\r\n errors?: React.ReactNode;\r\n\r\n input: React.ReactNode;\r\n}\r\nexport function getBuyboxProductQuantity(props: IEcommBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): IBuyboxProductQuantityViewProps {\r\n const {\r\n resources,\r\n context\r\n } = props;\r\n\r\n const\r\n {\r\n quantity,\r\n max,\r\n errorState: {\r\n quantityError,\r\n }\r\n } = state;\r\n\r\n const onChange = (newValue: number): boolean => {\r\n if (callbacks.updateQuantity) {\r\n return callbacks.updateQuantity(newValue);\r\n }\r\n return true;\r\n };\r\n\r\n return {\r\n ContainerProps: {\r\n className: 'ms-buybox__quantity'\r\n },\r\n LabelContainerProps: {\r\n tag: 'label',\r\n className: 'ms-buybox__product-quantity-label',\r\n htmlFor: 'ms-buybox__product-quantity-input'\r\n },\r\n heading: (\r\n
{resources.productQuantityHeading}
\r\n ),\r\n errors: quantityError && (\r\n \r\n \r\n ),\r\n input: (\r\n \r\n )\r\n };\r\n}\r\n\r\nexport interface IBuyboxShopSimilarLookViewProps {\r\n ContainerProps: INodeProps;\r\n errors?: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\nexport function getBuyboxShopSimilarLook(props: IEcommBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): IBuyboxShopSimilarLookViewProps {\r\n const {\r\n resources,\r\n context,\r\n data: {\r\n product: { result: product }\r\n },\r\n } = props;\r\n\r\n const\r\n {\r\n errorState: { }\r\n } = state;\r\n\r\n const navigationUrl = () => {\r\n const searchURL = getUrlSync('search', context && context.actionContext);\r\n const separator = searchURL!.includes('?') ? '&' : '?';\r\n document.location.href = `${searchURL}${separator}productId=${product && product.RecordId}`;\r\n };\r\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.ShopSimliarLooks);\r\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\r\n\r\n return {\r\n ContainerProps: {\r\n className: 'ms-buybox__shopsimilarlooks'\r\n },\r\n input: (\r\n \r\n {resources.shopSimilarLooksText}\r\n \r\n )\r\n };\r\n}\r\n\r\nexport interface IBuyboxKeyInPriceViewProps {\r\n ContainerProps: INodeProps;\r\n LabelContainerProps: INodeProps;\r\n heading: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\nexport function getBuyboxKeyInPrice(props: IEcommBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): IBuyboxKeyInPriceViewProps {\r\n const {\r\n config,\r\n resources\r\n } = props;\r\n\r\n const\r\n {\r\n errorState: { }\r\n } = state;\r\n\r\n const onChange = (e: React.ChangeEvent) => {\r\n const value = e.currentTarget.value;\r\n callbacks.updateKeyInPrice(value.length ? Number(value) : parseFloat(value));\r\n };\r\n\r\n return {\r\n ContainerProps: {\r\n className: 'ms-buybox__key_in_price'\r\n },\r\n LabelContainerProps: {\r\n tag: 'label',\r\n className: 'ms-buybox__key_in_price-label',\r\n htmlFor: 'ms-buybox__key_in_price'\r\n },\r\n heading: (\r\n
{resources.buyboxKeyInPriceLabelHeading}
\r\n ),\r\n input: (\r\n \r\n )\r\n };\r\n\r\n}\r\n\r\nexport interface IBuyboxErrorBlockProps {\r\n configureErrors: { [configureId: string]: string | undefined };\r\n quantityError?: string;\r\n customAmountError?: string;\r\n otherError?: string;\r\n resources: IEcommBuyboxResources;\r\n showError: boolean;\r\n}\r\nexport const BuyboxErrorBlock: React.FC = ({ showError, configureErrors, quantityError, customAmountError, otherError, resources }) => {\r\n let errorMessages: (string | undefined)[] = [];\r\n\r\n errorMessages = Object.values(configureErrors).filter(message => message !== undefined);\r\n\r\n if (quantityError) {\r\n errorMessages.push(quantityError);\r\n }\r\n\r\n if (customAmountError) {\r\n errorMessages.push(customAmountError);\r\n }\r\n\r\n if (otherError) {\r\n errorMessages.push(otherError);\r\n }\r\n\r\n return (\r\n 0} color='danger' assertive={true} aria-label={resources.buyboxErrorMessageHeader} >\r\n \r\n {errorMessages.map((message, index) => {\r\n return (\r\n
{message}
\r\n );\r\n })}\r\n
\r\n );\r\n};\r\n\r\nexport function getQuantityLimitsMessages(props: IEcommBuyboxProps, state: IBuyboxState): React.ReactElement | undefined {\r\n const {\r\n resources\r\n } = props;\r\n\r\n const\r\n {\r\n min,\r\n max,\r\n } = state;\r\n\r\n if (!_isOrderQuantityLimitsFeatureEnabled(props)) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n \r\n {_renderMaxLabel(max, resources.maxQuantityText)}\r\n {_renderMinLabel(min, resources.minQuantityText)}\r\n \r\n );\r\n}\r\n\r\nexport const RetailDefaultOrderQuantityLimitsFeatureName: string = 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature';\r\n\r\nconst _renderMaxLabel = (max: number | undefined, maxQuantityText: string): React.ReactElement | undefined => {\r\n if (max && max !== 0 && max !== Number.MAX_VALUE) {\r\n return(\r\n

\r\n {maxQuantityText.replace('{max}', max.toString())}\r\n

\r\n );\r\n } else {\r\n return undefined;\r\n }\r\n};\r\n\r\nconst _renderMinLabel = (min: number | undefined, minQuantityText: string): JSX.Element | undefined => {\r\n if (min && min > 1) {\r\n return(\r\n

\r\n {minQuantityText.replace('{min}', min.toString())}\r\n

\r\n );\r\n } else {\r\n return undefined;\r\n }\r\n};\r\n\r\nconst _isOrderQuantityLimitsFeatureEnabled = (props: IEcommBuyboxProps): boolean | undefined => {\r\n const isFeatureEnabledInHq = props.data.featureState.result\r\n ?.find(featureState => featureState.Name === RetailDefaultOrderQuantityLimitsFeatureName)?.IsEnabled;\r\n if (!isFeatureEnabledInHq) {\r\n return false;\r\n }\r\n const defaultOrderQuantityLimitsFeatureConfig = props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\r\n if (defaultOrderQuantityLimitsFeatureConfig === 'none') {\r\n return false;\r\n }\r\n\r\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\r\n return true;\r\n }\r\n\r\n const customerInfo = props.data.customerInformation.result;\r\n return customerInfo &&\r\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\r\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b));\r\n};\r\n","/* tslint:disable: no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nimport { Heading, INodeProps, IPopupProps, Popup } from '@msdyn365-commerce-modules/utilities';\r\nimport { getUrlSync, IImageSettings } from '@msdyn365-commerce/core';\r\nimport { DeliveryOption, ProductDimension } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { IAddToCartFailureResult, PriceComponent } from '@msdyn365-commerce/components';\r\nimport { IBuyboxState } from '@msdyn365-commerce-modules/buybox';\r\nimport { IBuyboxCallbacks } from '../ecomm-buybox';\r\nimport { getConfigureErrors, getGenericError } from '../utilities/error-utilities';\r\nimport { BuyboxErrorBlock } from './index';\r\nimport { IEcommBuyboxData } from '../ecomm-buybox.data';\r\nimport { IEcommBuyboxProps } from '../ecomm-buybox.props.autogenerated';\r\n\r\nexport interface IFindInStoreFailureResult {\r\n missingDimensions?: ProductDimension[];\r\n}\r\n\r\nexport interface IBuyboxFindInStoreViewProps {\r\n storeSelector?: React.ReactNode;\r\n heading?: React.ReactNode;\r\n description?: React.ReactNode;\r\n errors?: React.ReactNode;\r\n button?: React.ReactNode;\r\n productPickupOptionList?: React.ReactNode;\r\n\r\n modal?: React.ReactNode;\r\n\r\n ContainerProps: INodeProps;\r\n\r\n openFindInStoreDialog(): Promise;\r\n}\r\n\r\n// tslint:disable-next-line:max-func-body-length\r\nexport function getBuyboxFindInStore(props: IEcommBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): IBuyboxFindInStoreViewProps | undefined {\r\n const {\r\n data,\r\n slots: {\r\n storeSelector\r\n },\r\n resources : {\r\n priceFree,\r\n originalPriceText,\r\n currentPriceText,\r\n findInStoreHeaderText,\r\n findInStoreDescriptionText,\r\n findInStoreLinkText,\r\n buyBoxGoToCartText,\r\n buyBoxContinueShoppingText,\r\n buyBoxSingleItemText,\r\n buyBoxMultiLineItemFormatText,\r\n buyBoxHeaderMessageText,\r\n descriptionTextToShowAllPickupOptions\r\n },\r\n context: {\r\n request: {\r\n channel: {\r\n PickupDeliveryModeCode\r\n } = { PickupDeliveryModeCode: undefined }\r\n }\r\n }\r\n } = props;\r\n\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const product = data?.product?.result;\r\n const price = data?.productPrice?.result;\r\n const storeSelectorStateManager = data?.storeSelectorStateManager?.result;\r\n const cart = data?.cart?.result;\r\n const deliveryOptions = data?.deliveryOptions?.result;\r\n const retailMulitplePickupMFeatureState = data?.featureState?.result?.\r\n find(featureState => featureState.Name === multiplePickupStoreSwitchName)?.IsEnabled;\r\n\r\n const\r\n {\r\n errorState: {\r\n configureErrors,\r\n quantityError,\r\n otherError,\r\n errorHost\r\n },\r\n modalOpen,\r\n quantity\r\n } = state;\r\n\r\n const onClick = () => findInStoreOnClick(props, state, callbacks);\r\n\r\n if (!product || !storeSelectorStateManager || !storeSelector || storeSelector.length === 0) {\r\n return undefined;\r\n }\r\n\r\n // If no delivery options present on the product, or none of the delivery options\r\n // match the PickupDeliveryModeCode, that means the item cannot be used for BOPIS\r\n if (!deliveryOptions ||\r\n !deliveryOptions.DeliveryOptions ||\r\n !PickupDeliveryModeCode ||\r\n !deliveryOptions.DeliveryOptions.find(option => option.Code === PickupDeliveryModeCode)) {\r\n return undefined;\r\n }\r\n\r\n const dialogStrings = {\r\n goToCartText: buyBoxGoToCartText,\r\n continueShoppingText: buyBoxContinueShoppingText,\r\n headerItemOneText: buyBoxSingleItemText,\r\n headerItemFormatText: buyBoxMultiLineItemFormatText,\r\n headerMessageText: buyBoxHeaderMessageText,\r\n freePriceText: priceFree,\r\n originalPriceText: originalPriceText,\r\n currentPriceText: currentPriceText\r\n };\r\n\r\n const priceComponent = price ? (\r\n ) : '';\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=240&h=240&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=240&h=240&m=6`, w: 0, h: 0 },\r\n xl: { q: `w=240&h=240&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n const popupProps: IPopupProps = {\r\n context: props.context,\r\n className: 'ms-buybox',\r\n id: props.id,\r\n typeName: props.typeName,\r\n data: {product: props.data.product?.result, price: props.data.productPrice?.result},\r\n dialogStrings: dialogStrings,\r\n imageSettings: defaultImageSettings,\r\n gridSettings: props.context.request.gridSettings,\r\n productQuantity: quantity,\r\n priceComponent: priceComponent,\r\n navigationUrl: getUrlSync('cart', props.context.actionContext),\r\n modalOpen: modalOpen,\r\n setModalOpen: callbacks.changeModalOpen\r\n };\r\n const renderModalPopup = ;\r\n\r\n return {\r\n ContainerProps: {\r\n className: 'ms-buybox__find-in-store'\r\n },\r\n\r\n storeSelector: storeSelector[0],\r\n\r\n openFindInStoreDialog: onClick,\r\n\r\n heading: (\r\n \r\n ),\r\n\r\n description: (\r\n

\r\n {findInStoreDescriptionText}\r\n

\r\n ),\r\n productPickupOptionList: retailMulitplePickupMFeatureState ? (\r\n \r\n

\r\n {descriptionTextToShowAllPickupOptions}\r\n

\r\n
    \r\n {deliveryOptions.DeliveryOptions.map((item:DeliveryOption) => {\r\n return
  • {item.Description}
  • ;\r\n })\r\n }\r\n
\r\n
\r\n ): null,\r\n errors: (\r\n \r\n ),\r\n\r\n button: (\r\n \r\n {findInStoreLinkText}\r\n \r\n ),\r\n\r\n modal: renderModalPopup\r\n };\r\n}\r\n\r\n// tslint:disable-next-line: max-func-body-length\r\nasync function findInStoreOnClick(props: IEcommBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): Promise {\r\n const {\r\n data: {\r\n storeSelectorStateManager: {result: storeSelectorStateManager },\r\n cart: {result: cart },\r\n productAvailableQuantity: { result: productAvailableQuantity}\r\n },\r\n resources,\r\n context,\r\n modules,\r\n } = props;\r\n\r\n const {\r\n selectedProduct,\r\n quantity\r\n } = state;\r\n\r\n let dataProduct = props.data.product.result;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const retailMulitplePickupMFeatureState = props.data?.featureState?.result?.\r\n find(featureState => featureState.Name === multiplePickupStoreSwitchName)?.IsEnabled;\r\n\r\n if (selectedProduct) {\r\n dataProduct = (await selectedProduct) || dataProduct;\r\n }\r\n\r\n if (!dataProduct || !storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n const product = dataProduct;\r\n\r\n const missingDimensions = product.Dimensions && product.Dimensions.filter(dimension => !(dimension.DimensionValue && dimension.DimensionValue.Value));\r\n\r\n let storeSelectorId: string = '';\r\n if (modules && Object.keys(modules).length > 0 && modules.storeSelector && modules.storeSelector.length > 0) {\r\n storeSelectorId = modules.storeSelector[0].id;\r\n }\r\n\r\n if (missingDimensions && missingDimensions.length > 0) {\r\n if (callbacks.updateErrorState) {\r\n callbacks.updateErrorState(\r\n {\r\n errorHost: 'FINDINSTORE',\r\n configureErrors: getConfigureErrors(missingDimensions, resources),\r\n }\r\n );\r\n }\r\n } else {\r\n storeSelectorStateManager.openDialog({\r\n product,\r\n id : storeSelectorId,\r\n deliveryOptions: retailMulitplePickupMFeatureState ? props.data.deliveryOptions.result: undefined,\r\n onLocationSelected: (orgUnitLocation, deliveryMode) => {\r\n if (!cart) {\r\n return Promise.resolve();\r\n }\r\n\r\n const behavior = props.context?.app?.config?.addToCartBehavior;\r\n\r\n return cart.addProductToCart({product: product, count: quantity, location: orgUnitLocation, deliveryMode: deliveryMode})\r\n .then(result => {\r\n if (result.status === 'FAILED' && result.substatus === 'MAXQUANTITY') {\r\n callbacks.changeModalOpen(false);\r\n\r\n const productAvailability = state.productAvailableQuantity ?\r\n state.productAvailableQuantity.ProductAvailableQuantity :\r\n productAvailableQuantity && productAvailableQuantity.length?\r\n productAvailableQuantity[0].ProductAvailableQuantity: undefined;\r\n\r\n const failureResult: IAddToCartFailureResult = {failureReason: 'CARTACTIONFAILED', cartActionResult: {status: result.status, substatus: result.substatus}};\r\n callbacks.updateErrorState({\r\n errorHost: 'ADDTOCART',\r\n configureErrors: {},\r\n otherError: getGenericError(failureResult, cart, resources, context, product, productAvailability, orgUnitLocation)\r\n });\r\n } else {\r\n if ((behavior === undefined || behavior === 'goToCart')) {\r\n const navigationUrl = getUrlSync('cart', context.actionContext);\r\n\r\n if (result.status === 'SUCCESS' && navigationUrl) {\r\n window.location.assign(navigationUrl);\r\n }\r\n } else if (behavior === 'showModal') {\r\n callbacks.updateErrorState({\r\n configureErrors: {}\r\n });\r\n callbacks.changeModalOpen(true);\r\n }\r\n }\r\n }).catch((error: Error) => {\r\n if (props.telemetry) {\r\n props.telemetry.exception(error);\r\n props.telemetry.debug('Unable to add product to cart');\r\n }\r\n return;\r\n });\r\n }\r\n }).catch((error: Error) => {\r\n if (props.telemetry) {\r\n props.telemetry.error(error.message);\r\n props.telemetry.debug('Unable to find in store');\r\n }\r\n return;\r\n });\r\n }\r\n\r\n return;\r\n}","/**\r\n * Copyright (c) 2018 Microsoft Corporation\r\n */\r\n/* tslint:disable: no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IDropdownProps } from './';\r\nimport { IDropdownItemProps } from './dropdown.props';\r\n\r\ntype IDropdownState = {\r\n /**\r\n * @friendlyName selectedIndex\r\n * @description selected index\r\n */\r\n selectedIndex: 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 selectMenu: React.RefObject = React.createRef();\r\n private payLoad: IPayLoad;\r\n\r\n constructor(props: IDropdownProps, state: IDropdownState) {\r\n super(props);\r\n this.state = {\r\n selectedIndex: ''\r\n };\r\n this.payLoad = getPayloadObject('click', props.telemetryContent!, this.props.dropdownName);\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, dropdownToggleName} = this.props;\r\n const attribute = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n return (\r\n \r\n \r\n {dropdownList.map(\r\n (item: IDropdownItemProps) => item && \r\n )}\r\n \r\n );\r\n }\r\n\r\n private _onChanged = async (event: React.ChangeEvent) => {\r\n this.setState({selectedIndex: event.target.value});\r\n\r\n if (this.props.onChange) {\r\n await 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}","/* tslint:disable: no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nimport { getTelemetryObject, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { IBuyboxState } from '@msdyn365-commerce-modules/buybox';\r\nimport { IBuyboxCallbacks } from '../ecomm-buybox';\r\nimport { Dropdown, IDropdownItemProps, IDropdownOnSelectionChangeNotification } from './dropdown';\r\nimport { IEcommBuyboxData } from '../ecomm-buybox.data';\r\nimport { IEcommBuyboxProps, IEcommBuyboxResources } from '../ecomm-buybox.props.autogenerated';\r\n\r\nexport interface IBuyboxProductConfigureProps {\r\n product: SimpleProduct;\r\n productDimensions: ProductDimensionFull[];\r\n resources: IEcommBuyboxResources;\r\n channelId: number;\r\n actionContext: IActionContext;\r\n errors: { [configureId: string]: string | undefined };\r\n\r\n dimensionChanged?(newValue: number): void;\r\n}\r\n\r\nexport interface IBuyboxProductConfigureDropdownViewProps {\r\n ContainerProps: INodeProps;\r\n LabelContainerProps: INodeProps;\r\n\r\n heading: React.ReactNode;\r\n errors?: React.ReactNode;\r\n\r\n select: React.ReactNode;\r\n}\r\n\r\nexport interface IBuyboxProductConfigureViewProps {\r\n ContainerProps: INodeProps;\r\n\r\n dropdowns: IBuyboxProductConfigureDropdownViewProps[];\r\n}\r\n\r\nlet telemetryContent: ITelemetryContent;\r\n\r\nexport function getBuyboxProductConfigure(props: IEcommBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): IBuyboxProductConfigureViewProps | undefined {\r\n const {\r\n data: {\r\n product: {result: product },\r\n productDimensions: {result: productDimensions },\r\n },\r\n resources\r\n } = props;\r\n\r\n const\r\n {\r\n errorState: {\r\n configureErrors,\r\n }\r\n } = state;\r\n\r\n const\r\n {\r\n getDropdownName\r\n } = callbacks;\r\n\r\n if (!product || !productDimensions) {\r\n return undefined;\r\n }\r\n\r\n const onChanged = async (notification: IDropdownOnSelectionChangeNotification) =>\r\n _onChanged(notification, callbacks.dimensionSelectedAsync);\r\n\r\n telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n const dropdowns = productDimensions.map(productDimensionFull => _mapProductDimensionFullToDropdownViewProps(productDimensionFull, resources, configureErrors, getDropdownName, onChanged));\r\n\r\n if (!dropdowns || dropdowns.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n ContainerProps: {\r\n className: 'ms-buybox__configure'\r\n },\r\n dropdowns: dropdowns\r\n };\r\n}\r\n\r\nconst _onChanged = async (\r\n notification: IDropdownOnSelectionChangeNotification,\r\n dimensionChanged: (newValue: number, selectedDimensionValue: string) => Promise,\r\n ): Promise => {\r\n await dimensionChanged(+notification.dropdownId, notification.selectId);\r\n};\r\n\r\nconst _mapProductDimensionFullToDropdownViewProps =\r\n (\r\n productDimensionFull: ProductDimensionFull,\r\n resources: IEcommBuyboxResources,\r\n configureErrors: {[configureId: string]: string | undefined},\r\n getDropdownName: (dimensionType: number, resources: IEcommBuyboxResources) => string,\r\n dropdownCallback: (notification: IDropdownOnSelectionChangeNotification) => Promise\r\n ): IBuyboxProductConfigureDropdownViewProps => {\r\n const dropdownName = getDropdownName(productDimensionFull.DimensionTypeValue, resources);\r\n const dropdownId = productDimensionFull.DimensionTypeValue.toString();\r\n const dropdownToggleName = resources.selectDimensionFormatString.replace('{0}', dropdownName.toLocaleLowerCase());\r\n const dropdownList: IDropdownItemProps[] = productDimensionFull.DimensionValues\r\n ? productDimensionFull.DimensionValues.map(dimensionValue => {\r\n return {\r\n value: dimensionValue.Value || '',\r\n id: dimensionValue.RecordId.toString()\r\n };\r\n })\r\n : [];\r\n const errorMessage = configureErrors[`${dropdownId}`];\r\n\r\n return {\r\n ContainerProps: {\r\n className: 'ms-buybox__dropdown'\r\n },\r\n LabelContainerProps: {\r\n tag: 'label',\r\n className: 'ms-buybox__dropdown-quantity-label',\r\n htmlFor: `ms-buybox__dropown-quantity-input-${dropdownId}`\r\n },\r\n errors: errorMessage && (\r\n \r\n \r\n ),\r\n heading: (\r\n
{dropdownName}
\r\n ),\r\n select: (\r\n \r\n )\r\n };\r\n};","import * as React from 'react';\r\n\r\nimport {\r\n getDeliveryOptionsForSelectedVariant,\r\n GetDeliveryOptionsForSelectedVariantInput,\r\n getDimensionsForSelectedVariant,\r\n GetDimensionsForSelectedVariantInput,\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\n// tslint:disable-next-line:no-duplicate-imports\r\nimport { FinitePromiseQueue, FinitePromiseQueueError, IPromiseQueue } from '@msdyn365-commerce-modules/retail-actions';\r\n\r\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\n/* tslint:disable: no-duplicate-imports */\r\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\r\nimport { ProductDeliveryOptions, ProductDimensionValue, ProductPrice, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport { IEcommBuyboxData } from './ecomm-buybox.data';\r\nimport { IEcommBuyboxProps } from './ecomm-buybox.props.autogenerated';\r\nimport { IEcommBuyboxResources } from './ecomm-buybox.props.autogenerated';\r\nimport {\r\n getBuyboxAddToCart,\r\n getBuyboxFindInStore,\r\n getBuyBoxInventoryLabel,\r\n getBuyboxKeyInPrice,\r\n getBuyboxProductAddToOrderTemplate,\r\n getBuyboxProductAddToWishlist,\r\n getBuyboxProductConfigure,\r\n getBuyboxProductDescription,\r\n getBuyboxProductPrice,\r\n getBuyboxProductQuantity,\r\n getBuyboxProductRating,\r\n getBuyboxProductTitle,\r\n getBuyboxShopSimilarLook,\r\n getQuantityLimitsMessages,\r\n IBuyboxAddToCartViewProps,\r\n IBuyboxAddToOrderTemplateViewProps,\r\n IBuyboxAddToWishlistViewProps,\r\n IBuyboxFindInStoreViewProps,\r\n IBuyboxKeyInPriceViewProps,\r\n IBuyboxProductConfigureViewProps,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxShopSimilarLookViewProps,\r\n RetailDefaultOrderQuantityLimitsFeatureName\r\n} from './components';\r\nimport { Overlay } from 'react-portal-overlay';\r\n\r\nexport declare type IBuyboxErrorHost = 'ADDTOCART' | 'FINDINSTORE' | 'WISHLIST' | 'SHOPSIMILARITEM' | 'ORDER_TEMPLATE';\r\n\r\nexport interface IErrorState {\r\n errorHost?: IBuyboxErrorHost;\r\n\r\n configureErrors: { [configureId: string]: string | undefined };\r\n quantityError?: string;\r\n customAmountError?: string;\r\n otherError?: string;\r\n}\r\n\r\nexport interface IBuyboxCallbacks {\r\n updateQuantity(newQuantity: number): boolean;\r\n updateKeyInPrice(keyInPrice: number): void;\r\n updateErrorState(newErrorState: IErrorState): void;\r\n updateSelectedProduct(\r\n selectedProduct: Promise,\r\n newInventory: IProductInventoryInformation | undefined,\r\n newPrice: ProductPrice | undefined,\r\n newDeliveryOptions: ProductDeliveryOptions | undefined): void;\r\n getDropdownName(dimensionType: number, resources: IEcommBuyboxResources): string;\r\n dimensionSelectedAsync(selectedDimensionId: number, selectedDimensionValueId: string): Promise;\r\n changeModalOpen(isModalOpen: boolean): void;\r\n changeUpdatingDimension(isUpdatingDimension: boolean): void;\r\n changeUpdatingDeliveryOptions?(isUpdatingDeliveryOptions: boolean): void;\r\n}\r\n\r\nexport interface IBuyboxState {\r\n quantity: number;\r\n min: number | undefined;\r\n max: number | undefined;\r\n errorState: IErrorState;\r\n selectedProduct?: Promise;\r\n productAvailableQuantity?: IProductInventoryInformation;\r\n productPrice?: ProductPrice;\r\n productDeliveryOptions?: ProductDeliveryOptions;\r\n modalOpen?: boolean;\r\n isUpdatingDimension?: boolean;\r\n isUpdatingDeliveryOptions?: boolean;\r\n isServiceItem?: boolean;\r\n isPriceKeyedIn?: boolean;\r\n keyInPriceAmount?: number;\r\n isCustomPriceSelected?: boolean;\r\n openOverlay:boolean;\r\n}\r\n\r\nexport interface IBuyboxViewProps extends IEcommBuyboxProps {\r\n state: IBuyboxState;\r\n\r\n ModuleProps: IModuleProps;\r\n ProductInfoContainerProps: INodeProps;\r\n MediaGalleryContainerProps: INodeProps;\r\n\r\n callbacks: IBuyboxCallbacks;\r\n\r\n mediaGallery?: React.ReactNode;\r\n\r\n title?: React.ReactNode;\r\n description?: React.ReactNode;\r\n rating?: React.ReactNode;\r\n price?: React.ReactNode;\r\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps;\r\n addToWishlist?: IBuyboxAddToWishlistViewProps;\r\n max: number | undefined;\r\n\r\n addToCart: IBuyboxAddToCartViewProps;\r\n findInStore?: IBuyboxFindInStoreViewProps;\r\n quantity?: IBuyboxProductQuantityViewProps;\r\n configure?: IBuyboxProductConfigureViewProps;\r\n inventoryLabel?: React.ReactNode;\r\n shopSimilarLook?: IBuyboxShopSimilarLookViewProps;\r\n quantityLimitsMessages: React.ReactNode;\r\n telemetryContent?: ITelemetryContent;\r\n keyInPrice?: IBuyboxKeyInPriceViewProps;\r\n}\r\n\r\n/**\r\n * Buybox Module\r\n */\r\nclass Buybox extends React.PureComponent, IBuyboxState> {\r\n /**\r\n * A queue of tasks of processing the changes in the dimensions.\r\n * Limit to two processes:\r\n * 1 - for the current process, which is under execution at the moment.\r\n * 2 - next process, which will process the latest version of data.\r\n * @remark Enqueueing new promises will discard the previous ones (except the one which is under processing).\r\n */\r\n private dimensionUpdateQueue: IPromiseQueue = new FinitePromiseQueue(2);\r\n private dimensions: { [id: number]: string } = {};\r\n\r\n private buyboxCallbacks: IBuyboxCallbacks = {\r\n updateQuantity: (newQuantity: number): boolean => {\r\n const errorState = {...this.state.errorState};\r\n errorState.quantityError = undefined;\r\n errorState.otherError = undefined;\r\n\r\n this.setState({quantity: newQuantity, errorState: errorState});\r\n\r\n return true;\r\n },\r\n updateErrorState: (newErrorState: IErrorState): void => {\r\n this.setState({errorState: newErrorState});\r\n },\r\n updateSelectedProduct: (\r\n newSelectedProduct: Promise,\r\n newInventory: IProductInventoryInformation | undefined,\r\n newPrice: ProductPrice | undefined,\r\n newDeliveryOptions: ProductDeliveryOptions | undefined\r\n ): void => {\r\n this.setState({\r\n selectedProduct: newSelectedProduct,\r\n productAvailableQuantity: newInventory,\r\n productDeliveryOptions: newDeliveryOptions\r\n });\r\n \r\n this._updatePrice(newPrice);\r\n },\r\n dimensionSelectedAsync: (selectedDimensionId: number, selectedDimensionValueId: string): Promise => {\r\n this.dimensions[`${selectedDimensionId}`] = selectedDimensionValueId;\r\n \r\n return this.dimensionUpdateQueue.enqueue(() => {\r\n return this._updateDimensions();\r\n }).catch((reason: any) => { // tslint:disable-line:no-any\r\n // Ignore discarded processes.\r\n if (reason !== FinitePromiseQueueError.ProcessWasDiscardedFromTheQueue) {\r\n throw reason;\r\n }\r\n });\r\n },\r\n getDropdownName: (dimensionType: number, resources: IEcommBuyboxResources): string => {\r\n return this._getDropdownName(dimensionType, resources);\r\n },\r\n changeModalOpen: (isModalOpen: boolean): void => {\r\n this.setState({modalOpen: isModalOpen});\r\n },\r\n changeUpdatingDimension: (isUpdatingDimension: boolean): void => {\r\n this.setState({isUpdatingDimension: isUpdatingDimension});\r\n },\r\n /**\r\n * Update isUpdatingDeliveryOptions state.\r\n *\r\n * @param isUpdatingDeliveryOptions - The status of updating delivery options.\r\n */\r\n changeUpdatingDeliveryOptions: (isUpdatingDeliveryOptions: boolean): void => {\r\n this.setState({ isUpdatingDeliveryOptions });\r\n },\r\n updateKeyInPrice: (customPrice: number): void => {\r\n // Remove custom amount error when updating the custom price\r\n const errorState = {...this.state.errorState};\r\n errorState.customAmountError = undefined;\r\n\r\n this.setState({isPriceKeyedIn: true, keyInPriceAmount: customPrice, errorState: errorState});\r\n this._updatePrice(this.state.productPrice, customPrice);\r\n }\r\n };\r\n\r\n private telemetryContent: ITelemetryContent;\r\n\r\n constructor(props: IEcommBuyboxProps, state: IBuyboxState) {\r\n super(props);\r\n \r\n this.state = {\r\n errorState: {\r\n configureErrors: {}\r\n },\r\n quantity: 1,\r\n min: undefined,\r\n max: undefined,\r\n selectedProduct: undefined,\r\n productPrice: undefined,\r\n productDeliveryOptions: undefined,\r\n\r\n modalOpen: false,\r\n isUpdatingDimension: false,\r\n isUpdatingDeliveryOptions: false,\r\n openOverlay:props.context.request.user.isAuthenticated?false:true\r\n };\r\n \r\n this.telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n data: {\r\n product: { result: product },\r\n productPrice\r\n },\r\n } = this.props;\r\n\r\n productPrice.then(async (result) => {\r\n this._updatePrice(result);\r\n });\r\n\r\n if (product) {\r\n // Check if the product is service or not by product type.\r\n const PRODUCTASSERVICE = 2 as ReleasedProductType.Service;\r\n\r\n if (product.ItemTypeValue === PRODUCTASSERVICE) {\r\n this.setState({isServiceItem: true});\r\n }\r\n\r\n await this._updateQuantitiesInState(product);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n slots: {\r\n mediaGallery,\r\n },\r\n data: {\r\n product: { result: product },\r\n selectedQuantity: { result: selectedQuantity }\r\n },\r\n config: { className = '' },\r\n context: { request: { user } }\r\n } = this.props;\r\n\r\n const{ max } = this.state;\r\n\r\n if (!product) {\r\n this.props.context.telemetry.error('Product content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n if (!selectedQuantity) {\r\n this.props.context.telemetry.error('Selected quantity is 0');\r\n return null;\r\n }\r\n\r\n const defaultMinimumKeyInPrice = 10;\r\n const defaultMaximumKeyInPrice = 100;\r\n\r\n if (this.props.data.selectedQuantity&&this.props.data.selectedQuantity.result&&this.state.quantity!==this.props.data.selectedQuantity.result.selectedQuantity) {\r\n if (this.state.quantity > 0) {\r\n this.setState({quantity: this.props.data.selectedQuantity.result.selectedQuantity});\r\n }\r\n }\r\n\r\n const viewProps: IBuyboxViewProps = {\r\n ...(this.props as IEcommBuyboxProps),\r\n state: this.state,\r\n mediaGallery: mediaGallery && mediaGallery.length > 0 ? mediaGallery[0] : undefined,\r\n ModuleProps: {\r\n moduleProps: this.props,\r\n className: classnames('ecomm-buybox ms-buybox row', className)\r\n },\r\n MediaGalleryContainerProps: {\r\n className: 'ms-buybox__media-gallery col-sm-6'\r\n },\r\n ProductInfoContainerProps: {\r\n className: 'ms-buybox__content col-sm-6'\r\n },\r\n telemetryContent: this.telemetryContent,\r\n callbacks: this.buyboxCallbacks,\r\n title: getBuyboxProductTitle(this.props),\r\n description: getBuyboxProductDescription(this.props),\r\n configure: getBuyboxProductConfigure(this.props, this.state, this.buyboxCallbacks),\r\n findInStore: getBuyboxFindInStore(this.props, this.state, this.buyboxCallbacks),\r\n price: getBuyboxProductPrice(this.props, this.state),\r\n addToCart: getBuyboxAddToCart(this.props, this.state, this.buyboxCallbacks, defaultMinimumKeyInPrice, defaultMaximumKeyInPrice),\r\n addToOrderTemplate: getBuyboxProductAddToOrderTemplate(this.props, this.state, this.buyboxCallbacks),\r\n addToWishlist: getBuyboxProductAddToWishlist(this.props, this.state, this.buyboxCallbacks),\r\n rating: !this.props.context.app.config.hideRating && getBuyboxProductRating(this.props),\r\n quantity: product.IsGiftCard ? undefined : getBuyboxProductQuantity(this.props, this.state, this.buyboxCallbacks),\r\n inventoryLabel: getBuyBoxInventoryLabel(this.props),\r\n shopSimilarLook: this.props.config.enableShopSimilarLooks && !product.IsGiftCard ? getBuyboxShopSimilarLook(this.props, this.state, this.buyboxCallbacks) : undefined,\r\n keyInPrice: this.props.config.enableKeyInPrice && this.state.isCustomPriceSelected?getBuyboxKeyInPrice(this.props, this.state, this.buyboxCallbacks):undefined,\r\n quantityLimitsMessages: getQuantityLimitsMessages(this.props, this.state),\r\n max: max\r\n };\r\n\r\n return <>\r\n {this.props.renderView(viewProps) as React.ReactElement}\r\n \r\n
this.setState({openOverlay:false})}>\r\n
{\r\n console.log(event.target)\r\n console.log(event.currentTarget)\r\n if (event.target !== event.currentTarget) {\r\n event.stopPropagation();\r\n } \r\n }}>\r\n
{this.props.context.request.locale=='zh-Hans'?'事先请登入':'Please Sign in First'}
\r\n
{this.props.context.request.locale=='zh-Hans'?'请先登入户口以避免失去在此页注入的数据':'If you have an account with us, please sign in first to avoid losing any information entered on this page'}
\r\n
\r\n {this.props.context.request.locale=='zh-Hans'?'登入户口':'Go to Sign In Page'}\r\n
this.setState({openOverlay:false})} className='dismiss-popup'>{this.props.context.request.locale=='zh-Hans'?'也许稍后':'Maybe Later'}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n }\r\n\r\n private _updatePrice(\r\n newPrice: ProductPrice | undefined,\r\n customPrice: number | undefined = this.state.keyInPriceAmount): void {\r\n\r\n if (this.state.isCustomPriceSelected && newPrice) {\r\n newPrice.CustomerContextualPrice = customPrice;\r\n }\r\n \r\n this.setState({productPrice: newPrice});\r\n }\r\n\r\n // tslint:disable-next-line:max-func-body-length\r\n private _updateDimensions = async (): Promise => {\r\n const {\r\n data: {\r\n product: {result: product },\r\n productDimensions: {result: productDimensions },\r\n },\r\n context: {\r\n actionContext,\r\n request: {\r\n apiSettings: { channelId }\r\n }\r\n }\r\n } = this.props;\r\n\r\n if (!product || !productDimensions) {\r\n return;\r\n }\r\n\r\n const dimensionsToUpdate: { [id: number]: string } = {...this.dimensions};\r\n this.setState({isUpdatingDimension: true, isUpdatingDeliveryOptions: true });\r\n\r\n // Step 1: Update state to indicate which dimensions are selected\r\n if (this.state.errorState.otherError) {\r\n const clearOtherErrorState = {...this.state.errorState};\r\n clearOtherErrorState.otherError = undefined;\r\n this.setState({errorState: clearOtherErrorState});\r\n }\r\n\r\n // Step 2: Clear any errors indicating the dimension wasn't selected\r\n for (const key of Object.keys(dimensionsToUpdate)) {\r\n if (this.state.errorState.configureErrors[`${key}`]) {\r\n const errorState = {...this.state.errorState};\r\n errorState.configureErrors[`${key}`] = undefined;\r\n\r\n this.setState({errorState: errorState});\r\n }\r\n }\r\n\r\n // Step 3, Build the actually selected dimensions, prioritizing the information in state\r\n // over the information in data\r\n const mappedDimensions = productDimensions.map(dimension => {\r\n return {\r\n DimensionTypeValue: dimension.DimensionTypeValue,\r\n DimensionValue: this._updateDimensionValue(dimension, dimensionsToUpdate[dimension.DimensionTypeValue]) || dimension.DimensionValue,\r\n ExtensionProperties: dimension.ExtensionProperties\r\n };\r\n }).filter(dimension => {\r\n return dimension && dimension.DimensionValue;\r\n });\r\n // Step 4. Use these dimensions hydrate the product. Wrap this in a promise\r\n // so that places like add to cart can await it\r\n const selectedProduct = new Promise(async (resolve, reject) => {\r\n const newProduct = (await getSelectedVariant(\r\n new SelectedVariantInput(\r\n product.MasterProductId ? product.MasterProductId : product.RecordId,\r\n channelId,\r\n mappedDimensions\r\n ),\r\n actionContext\r\n ));\r\n \r\n if (newProduct) {\r\n await getDimensionsForSelectedVariant(\r\n new GetDimensionsForSelectedVariantInput(\r\n newProduct.MasterProductId ? newProduct.MasterProductId : newProduct.RecordId,\r\n channelId,\r\n mappedDimensions\r\n ),\r\n actionContext\r\n );\r\n }\r\n\r\n resolve(newProduct);\r\n });\r\n this.setState({selectedProduct: selectedProduct});\r\n const variantProduct = await selectedProduct;\r\n\r\n if (variantProduct) {\r\n // Step 5. Use these dimensions hydrate the inventory. Wrap this in a promise\r\n // so that places like add to cart can await it\r\n const newAvailableQuantity = await getProductAvailabilitiesForSelectedVariant(\r\n new ProductAvailabilitiesForSelectedVariantInput(\r\n variantProduct.RecordId,\r\n channelId\r\n ),\r\n actionContext\r\n );\r\n\r\n const isCustompriceSelected = variantProduct && variantProduct.Dimensions && variantProduct.Dimensions.find(dimension => dimension.DimensionTypeValue === 4 && dimension.DimensionValue && dimension.DimensionValue.Value === 'Custom');\r\n \r\n if (isCustompriceSelected) {\r\n this.setState({isCustomPriceSelected: true});\r\n } else {\r\n // Remove custom amount error when unselect the custom amount\r\n const errorState = {...this.state.errorState};\r\n errorState.customAmountError = undefined;\r\n\r\n this.setState({isCustomPriceSelected: false, isPriceKeyedIn: false, errorState: errorState});\r\n }\r\n\r\n if (newAvailableQuantity && newAvailableQuantity.length) {\r\n this.setState({productAvailableQuantity: newAvailableQuantity[0]});\r\n } else {\r\n this.setState({productAvailableQuantity: undefined});\r\n }\r\n\r\n // Step 6. Use these dimensions hydrate the product price.\r\n const newPrice = await getPriceForSelectedVariant(\r\n new PriceForSelectedVariantInput(\r\n variantProduct.RecordId,\r\n channelId\r\n ),\r\n actionContext\r\n );\r\n\r\n if (newPrice) {\r\n this._updatePrice(newPrice);\r\n }\r\n\r\n const RetailMulitplePickupMFeatureState = this.props.data.featureState.result?.find(featureState => featureState.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature');\r\n // Step 7. Use these dimensions hydrate the product delivery options.\r\n const newDeliveryOptions = await getDeliveryOptionsForSelectedVariant(\r\n new GetDeliveryOptionsForSelectedVariantInput(\r\n variantProduct.RecordId,\r\n channelId,\r\n undefined,\r\n undefined,\r\n RetailMulitplePickupMFeatureState?.IsEnabled\r\n ),\r\n actionContext\r\n );\r\n\r\n if (newDeliveryOptions) {\r\n this.setState({productDeliveryOptions: newDeliveryOptions});\r\n }\r\n\r\n await this._updateQuantitiesInState(variantProduct);\r\n }\r\n }\r\n\r\n private async _updateQuantitiesInState(product: SimpleProduct): Promise {\r\n const isOrderQuantityLimitsFeatureEnabled = await this._isOrderQuantityLimitsFeatureEnabled();\r\n \r\n if (isOrderQuantityLimitsFeatureEnabled && product) {\r\n this.setState({\r\n quantity: product.Behavior?.DefaultQuantity || 1,\r\n min: product.Behavior?.MinimumQuantity || 1,\r\n max: (product.Behavior?.MaximumQuantity && product.Behavior?.MaximumQuantity > 0)\r\n ? product.Behavior?.MaximumQuantity\r\n : Number.MAX_VALUE,\r\n });\r\n } else {\r\n this.setState({\r\n min: 1,\r\n max: this.props.context.app.config.maxQuantityForCartLineItem || 10,\r\n });\r\n }\r\n }\r\n\r\n private _updateDimensionValue = (productDimensionFull: ProductDimensionFull, newValueId: string | undefined): 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 private _getDropdownName = (dimensionType: number, resources: IEcommBuyboxResources): string => {\r\n const isGiftCard = this.props.data.product.result?.IsGiftCard;\r\n\r\n switch (dimensionType) {\r\n case 1: // ProductDimensionType.Color\r\n return resources.productDimensionTypeColor;\r\n case 2: // ProductDimensionType.Configuration\r\n return resources.productDimensionTypeConfiguration;\r\n case 3: // ProductDimensionType.Size\r\n return resources.productDimensionTypeSize;\r\n case 4: // ProductDimensionType.Style\r\n return isGiftCard ? resources.productDimensionTypeAmount : resources.productDimensionTypeStyle;\r\n default:\r\n return '';\r\n }\r\n };\r\n\r\n private async _isOrderQuantityLimitsFeatureEnabled(): Promise {\r\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\r\n \r\n if (defaultOrderQuantityLimitsFeatureConfig === 'none') {\r\n return false;\r\n }\r\n\r\n const featureStatuses = await this.props.data.featureState;\r\n const isFeatureEnabledInHq = featureStatuses?.find(featureState => featureState.Name === RetailDefaultOrderQuantityLimitsFeatureName)?.IsEnabled;\r\n \r\n if (!isFeatureEnabledInHq) {\r\n return false;\r\n }\r\n\r\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\r\n return true;\r\n }\r\n \r\n let customerInfo;\r\n \r\n try {\r\n customerInfo = await this.props.data.customerInformation;\r\n } catch (error) {\r\n const msg = error as unknown as string;\r\n\r\n this.props.telemetry.information(msg);\r\n this.props.telemetry.debug('Unable to receive Customer Information. May be user is not authorized');\r\n \r\n return false;\r\n }\r\n\r\n return customerInfo &&\r\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\r\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b));\r\n }\r\n}\r\n\r\nexport default Buybox;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* tslint:disable: no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nimport { isMobile } from 'react-device-detect';\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { IBuyboxViewProps } from '@msdyn365-commerce-modules/buybox';\r\nimport {\r\n IBuyboxAddToCartViewProps,\r\n IBuyboxAddToOrderTemplateViewProps,\r\n // IBuyboxAddToWishlistViewProps,\r\n IBuyboxFindInStoreViewProps,\r\n IBuyboxKeyInPriceViewProps,\r\n IBuyboxProductConfigureDropdownViewProps,\r\n IBuyboxProductConfigureViewProps,\r\n IBuyboxProductQuantityViewProps\r\n // IBuyboxShopSimilarLookViewProps\r\n } from './components';\r\n\r\nconst BuyboxView: React.FC = props => {\r\n const { ModuleProps, MediaGalleryContainerProps, ProductInfoContainerProps, addToCart, addToOrderTemplate, configure, description, findInStore, quantity, price, title, rating, inventoryLabel, keyInPrice } = props;\r\n /*{shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\r\n {addToWishlist && _renderAddToWishlist(addToWishlist)}*/\r\n return (\r\n \r\n {props.mediaGallery}\r\n \r\n {title}\r\n {price}\r\n {description}\r\n {rating}\r\n {configure && _renderConfigure(configure)}\r\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\r\n {quantity && _renderQuantity(quantity)}\r\n {inventoryLabel}\r\n {!isMobile && (addToCart && _renderAddToCart(addToCart))}\r\n {findInStore && _renderFindInStore(findInStore)}\r\n {addToOrderTemplate && _renderAddToOrderTemplate(addToOrderTemplate)}\r\n { _renderSocialShare(props.slots && props.slots.socialShare)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button, button2 } = addToCart;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n {button2}\r\n \r\n );\r\n};\r\n\r\nconst _renderAddToOrderTemplate = (addToOrderTemplate: IBuyboxAddToOrderTemplateViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToOrderTemplate;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return {dropdowns.map(_renderConfigureDropdown)};\r\n};\r\n\r\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!socialShare || socialShare.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return <>{socialShare[0]};\r\n};\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {select}\r\n \r\n );\r\n};\r\n\r\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\r\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\r\n\r\n return (\r\n \r\n {storeSelector}\r\n {heading}\r\n {productPickupOptionList}\r\n {description}\r\n {errors}\r\n {button}\r\n {modal}\r\n \r\n );\r\n};\r\n\r\nconst _renderQuantity = (quantity: IBuyboxProductQuantityViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input, errors } = quantity;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const {ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return(\r\n \r\n {heading}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nexport default BuyboxView;","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['ecomm-buybox'] = {\n c: () => require('partner/modules/ecomm-buybox/ecomm-buybox.tsx'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productAvailableQuantity', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant', runOn: 0},{name:'productDimensions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant', runOn: 0},{name:'productPrice', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant', runOn: 0},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 0},{name:'selectedQuantity', path:'actions/BuyBoxSelectedQuantity/ecomm-buybox-selected-quantity', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'ecomm-buybox',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/ecomm-buybox'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = 'actions/BuyBoxSelectedQuantity/ecomm-buybox-selected-quantity';\n let dataAction = require('partner/actions/BuyBoxSelectedQuantity/ecomm-buybox-selected-quantity');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|ecomm-buybox|ecomm-buybox'] = {\n c: () => require('partner/modules/ecomm-buybox/ecomm-buybox.view.tsx'),\n cn: '__local__-__local__-ecomm-buybox'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IActionContext } from '@msdyn365-commerce/core';\nimport { action, computed, observable } from 'mobx';\n\nimport {\n IListMapViewState,\n ILoadMapApiInput,\n IStoreInfo,\n IStoreSelectionStateContext,\n IStoreSelectorLocation,\n IStoreSelectorStateManager\n} from './i-store-selection-state-manager';\n\n/**\n * Abstract instance of IStoreSelectorStateManager with base implementation\n * of everything except the geoLocate function.\n */\nexport abstract class BaseStoreSelectorStateManager implements IStoreSelectorStateManager {\n @computed public get isDialogOpen(): Readonly {\n return this._context !== undefined;\n }\n\n @computed public get context(): Readonly {\n return this._context;\n }\n\n @observable public isMapApiLoaded?: boolean;\n\n @observable public selectedStoreLocationId?: string;\n\n @observable public preferredStore?: IStoreInfo;\n\n @observable public listMapViewState: IListMapViewState = { displayList: true, displayMap: false };\n\n @observable public isMapModuleLoaded?: boolean;\n\n @observable public lastInlineShownStoreInfo?: IStoreInfo;\n\n @observable protected _context?: IStoreSelectionStateContext;\n\n private readonly preferredStoreLocalStorageKey: string = '_msdyn365__preferredStore_';\n\n constructor() {\n this.isMapModuleLoaded = false;\n const value = this._readFromToCookie(this.preferredStoreLocalStorageKey);\n try {\n const storeInfo: IStoreInfo | undefined = value ? JSON.parse(value) : undefined;\n if (storeInfo) {\n this.preferredStore = storeInfo;\n }\n } catch {\n this.preferredStore = undefined;\n }\n }\n\n public abstract geoLocate(searchTerm: string, actionContext: IActionContext): Promise;\n\n public abstract loadMapApi(input: ILoadMapApiInput): Promise;\n\n @action\n public async toggleListMapViewState(): Promise {\n this.listMapViewState = {\n displayList: !this.listMapViewState.displayList,\n displayMap: !this.listMapViewState.displayMap\n };\n }\n\n @action\n public async setMapModuleLoaded(input: boolean): Promise {\n this.isMapModuleLoaded = input;\n }\n\n @action\n public async setOrgUnitStoreInformation(input: IStoreSelectionStateContext): Promise {\n this._context = input;\n }\n\n @action\n public async setSelectedStoreLocationId(storeId: string | undefined): Promise {\n this.selectedStoreLocationId = storeId;\n }\n\n @action\n public async setPreferredStoreLocation(\n storeId?: string,\n storeName?: string | undefined,\n writeToCookie: boolean = false,\n latitude?: number,\n longitude?: number\n ): Promise {\n const storeInfo: IStoreInfo = { StoreId: storeId, StoreName: storeName, Latitude: latitude, Longitude: longitude };\n this.preferredStore = storeInfo;\n if (writeToCookie) {\n this._writeToCookie(this.preferredStoreLocalStorageKey, JSON.stringify(storeInfo));\n }\n }\n\n @action\n public async setLastInlineStoreInfo(latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: '', StoreName: '', Latitude: latitude, Longitude: longitude };\n this.lastInlineShownStoreInfo = storeInfo;\n }\n\n @action\n public async clearPreferredStore(writeToCookie: boolean): Promise {\n this.preferredStore = undefined;\n if (writeToCookie) {\n this._removeCookie(this.preferredStoreLocalStorageKey);\n }\n }\n\n @action\n public async openDialog(input: IStoreSelectionStateContext): Promise {\n if (this._context && this._context.id === input.id) {\n throw new Error('Dialog is already opened');\n }\n\n this._context = input;\n }\n\n @action\n public async closeDialog(): Promise {\n this._context = undefined;\n }\n\n private _removeCookie(key: string): void {\n if (!key) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.removeItem(key);\n }\n }\n\n private _writeToCookie(key: string, value: string | undefined): void {\n if (!key || !value) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.setItem(key, value);\n }\n }\n\n private _readFromToCookie(key: string): string | undefined {\n if (!key) {\n return undefined;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n const cookieValue = storage.getItem(key);\n if (cookieValue) {\n return cookieValue;\n }\n }\n\n return undefined;\n }\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 { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { action } from 'mobx';\n\nimport { BaseStoreSelectorStateManager } from './base-store-selector-state-manager';\nimport { ILoadMapApiInput, IStoreSelectorLocation } from './i-store-selection-state-manager';\nimport { IMapWindow, MapLocationsResult } from './models/map-data';\n\ndeclare const window: IMapWindow;\n\n/**\n * Instance of IStoreSelectorStateManager manager that uses Map service\n * for geo location.\n */\nexport class MapStoreSelectorStateManager extends BaseStoreSelectorStateManager {\n private readonly SERVICE_ENDPOINT: string = 'https://dev.virtualearth.net/REST/v1/';\n\n private readonly MAP_API_ENDPOINT: string = 'https://www.bing.com/api/maps/mapcontrol?callback=mapAPIReady';\n\n @action\n public async geoLocate(searchTerm: string, actionContext: IActionContext): Promise {\n if (\n !searchTerm ||\n !actionContext.requestContext.channel ||\n !actionContext.requestContext.channel.BingMapsApiKey ||\n !actionContext.requestContext.channel.BingMapsEnabled\n ) {\n return undefined;\n }\n\n let searchContent: string = searchTerm;\n\n const jsonp = `mapSearchCallback_${crypto.getRandomValues(new Uint32Array(1))[0]}`;\n\n if (actionContext.requestContext.channel.ChannelCountryRegionISOCode) {\n searchContent = `${searchTerm.trim()} ${actionContext.requestContext.channel.ChannelCountryRegionISOCode}`;\n }\n\n const query = encodeURI(searchContent);\n const key = encodeURI(actionContext.requestContext.channel.BingMapsApiKey);\n\n const geolocationApiUrl =\n actionContext.requestContext.app &&\n actionContext.requestContext.app.config &&\n actionContext.requestContext.app.config.geolocationApiUrl;\n const requestUrl = `${\n geolocationApiUrl ? geolocationApiUrl : this.SERVICE_ENDPOINT\n }/Locations?query=${query}&key=${key}&jsonp=${jsonp}`;\n\n return new Promise(resolve => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', requestUrl);\n\n window[jsonp] = (data: MapLocationsResult) => {\n delete window[jsonp];\n script.remove();\n\n if (data && data.resourceSets && data.resourceSets.length > 0 && data.resourceSets[0].resources.length > 0) {\n resolve({\n latitude: data.resourceSets[0].resources[0].point.coordinates[0],\n longitude: data.resourceSets[0].resources[0].point.coordinates[1]\n });\n }\n\n resolve(undefined);\n };\n\n document.body.appendChild(script);\n });\n }\n\n @action\n public async loadMapApi(input: ILoadMapApiInput): Promise {\n if (StringExtensions.isNullOrEmpty(input.key)) {\n return Promise.resolve();\n }\n\n const isScriptAlreadyLoaded = !!document?.getElementById('msdyn_map-api-script');\n\n if (isScriptAlreadyLoaded) {\n // Prevents from loading multiple script into the body\n return Promise.resolve();\n }\n\n const url = `${this.MAP_API_ENDPOINT}${input.key ? `&key=${input.key}` : ''}${input.lang ? `&setLang=${input.lang}` : ''}${\n input.market ? `&setMkt=${input.market}` : ''\n }`;\n\n return new Promise((resolve, reject) => {\n const script = document?.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n script.id = 'msdyn_map-api-script';\n if (window) {\n window.mapAPIReady = () => {\n this.isMapApiLoaded = true;\n resolve();\n };\n }\n script.addEventListener('error', (error: string | Event) => {\n reject(error);\n });\n document?.body?.appendChild(script);\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 { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IStoreSelectorStateManager } from './i-store-selection-state-manager';\nimport { MapStoreSelectorStateManager } from './map-store-selector-state-manager';\n\nexport function createStoreSelectorStateInput(result: IStoreSelectorStateManager): GenericInput {\n return new GenericInput('mapSSSM', result, 'IStoreSelectorStateManager');\n}\n\nconst createStoreSelectorStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createStoreSelectorStateInput(new MapStoreSelectorStateManager());\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createStoreSelectorStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","var toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw $RangeError('Wrong offset');\n return offset;\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\nvar toBigInt = require('../internals/to-big-int');\nvar classof = require('../internals/classof');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar slice = uncurryThis(''.slice);\n\n// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18\nvar CONVERSION_BUG = fails(function () {\n var count = 0;\n // eslint-disable-next-line es/no-typed-arrays -- safe\n new Int8Array(2).fill({ valueOf: function () { return count++; } });\n return count !== 1;\n});\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n var length = arguments.length;\n aTypedArray(this);\n var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;\n return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);\n}, CONVERSION_BUG);\n","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n var array = new Uint8ClampedArray(2);\n call($set, array, { length: 1, 0: 3 }, 1);\n return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n var array = new Int8Array(2);\n array.set(1);\n array.set('2', 1);\n return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var src = toIndexedObject(arrayLike);\n if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n var length = this.length;\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\n nativeSort(new Uint16Array(2), null);\n}) && fails(function () {\n nativeSort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n nativeSort(array, function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n if (STABLE_SORT) return nativeSort(this, comparefn);\n\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return apply(\n $toLocaleString,\n TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n arraySlice(arguments)\n );\n}, FORCED);\n","module.exports = React;","module.exports = ReactDOM;"],"names":["GetSelectedQuantityValuesInput","constructor","getCacheKey","getCacheObjectType","dataCacheType","Msdyn365","action","async","input","ctx","selectedQuantity","id","args","Quantity","React","props","super","inputRef","_validateMin","minValue","undefined","this","min","isNaN","state","currentInput","setState","onChange","currentCount","isUpdateing","_onIncrement","bind","_onDecrement","_handleChange","payLoad","getPayloadObject","telemetryContent","componentDidUpdate","prevProps","disabled","render","max","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","decrementDisabled","isGiftCard","incrementDisabled","currentValue","contentAction","etext","TelemetryConstant","decrementAttributes","getTelemetryAttributes","incrementAttributes","extraClassDecrement","extraClassIncrement","className","Object","assign","title","decrementButtonAriaLabel","onClick","tabIndex","color","type","pattern","value","onBlur","inputQuantityAriaLabel","role","ref","incrementButtonAriaLabel","invokeCallback","currQuantity","updatedQuantity","_this$props$context","context","update","_this$props$context2","e","_this$props$context3","parseInt","target","inputElement","current","HTMLInputElement","_debounce","setAttribute","toString","defaultProps","__decorate","observer","getGenericError","result","cart","resources","product","productAvailability","location","failureReason","addedToCartFailureMessage","cartActionResult","substatus","elementFoundAt","productIdToFind","RecordId","i","CartLines","length","_context$actionContex","ProductId","DeliveryMode","actionContext","requestContext","channel","PickupDeliveryModeCode","FulfillmentStoreId","OrgUnitNumber","curQuantity","cartLineToUpdate","_objectSpread","maxQuantityForCartLineItem","app","config","availableQty","AvailableQuantity","quantityLimit","Math","maxQuantityLimitText","replace","_result$cartActionRes","_result$cartActionRes2","errorDetails","LocalizedMessage","getConfigureErrors","dimensions","forEach","dimension","DimensionTypeValue","dimensionTypeValue","productDimensionTypeColorErrorMessage","productDimensionTypeConfigurationErrorMessage","productDimensionTypeSizeErrorMessage","productDimensionTypeAmountErrorMessage","productDimensionTypeStyleErrorMessage","getDimensionErrorString","getBuyBoxInventoryLabel","data","productAvailableQuantity","StockLevelLabel","inventoryClassName","StockLevelCode","toLowerCase","getBuyboxProductTitle","titleHeadingTag","Heading","headingTag","text","Name","getBuyboxProductDescription","Description","getBuyboxAddToCart","callbacks","defaultMinimumKeyInPrice","defaultMaximumKeyInPrice","_props$data$deliveryO","typeName","errorState","configureErrors","quantityError","customAmountError","otherError","errorHost","status","changeUpdatingDimension","deliveryOptions","changeUpdatingDeliveryOptions","getTelemetryObject","request","telemetryPageName","friendlyName","telemetry","ContainerProps","button","window","href","learnUrl","learnTitle","errorBlock","BuyboxErrorBlock","showError","getBuyboxProductPrice","priceComponent","productPrice","BasePrice","PriceComponent","price","freePriceText","priceFree","originalPriceText","currentPriceText","pricePerUnitTitle","getBuyboxProductRating","ratingsSummary","ratingComponent","averageRating","RatingComponent","avgRating","readOnly","ariaLabel","format","averageRatingAriaLabel","ratingCount","reviewsCount","generateAddToOrderTemplateDialogResources","addToOrderTemplateHeader","noOrderTemplatesMessage","noOrderTemplatesDescription","createAnOrderTemplateButtonText","createNewOrderTemplateButtonText","cancelOrderTemplateCreationButtonText","selectTemplatesText","addToTemplateButtonText","lineItemsText","generateOrderTemplateNameDialogResources","orderTemplateHeaderLabel","createOrderTemplateHeader","orderTemplateTitleLabel","orderTemplateTitle","orderTemplateNameAriaLabel","orderTemplateDescription","createOrderTemplateDescription","defaultOrderTemplateName","orderTemplateButtonLabel","createOrderTemplateButtonText","orderTemplateCancelButtonLabel","cancelNewOrderTemplateCreationButtonText","generateItemAddedToOrderTemplateDialogResources","viewOrderTemplateButtonText","continueShoppingButtonText","itemAddedToOrderTemplateHeaderItemOneText","itemAddedToOrderTemplateHeaderItemFormatText","itemAddedToOrderTemplateHeaderMessageText","generateDuplicateItemsWhenAddingToOrderTemplateDialogResources","duplicatedProductsHeader","duplicatedProductsDescription","updateQuantityButtonText","cancelDuplicateItemsButtonText","getBuyboxProductAddToOrderTemplate","orderTemplates","customerInformation","quantity","isCustomPriceSelected","AddToOrderTemplateComponent","addToOrderTemplateButtonText","addToOrderTemplateDialogResources","createOrderTemplateDialogResources","itemAddedToOrderTemplateDialogResources","addToOrderTemplateButtonTooltip","duplicateItemsWhenAddingToOrderTemplateDialogResources","onError","updateErrorState","missingDimensions","IsGiftCard","getBuyboxProductAddToWishlist","wishlists","selectedProduct","AddToWishlistComponent","addToWishlistButtonText","removeFromWishlistButtonText","addToWishlistMessage","removedFromWishlistMessage","addItemToWishlistError","removeItemFromWishlistError","nameOfWishlist","getSelectedProduct","getBuyboxProductQuantity","LabelContainerProps","tag","htmlFor","heading","productQuantityHeading","errors","newValue","updateQuantity","getBuyboxShopSimilarLook","attribute","Button","shopSimilarLooksText","navigationUrl","searchURL","getUrlSync","separator","includes","document","getBuyboxKeyInPrice","buyboxKeyInPriceLabelHeading","currentTarget","updateKeyInPrice","Number","parseFloat","minimumKeyInPrice","keyInPriceAmount","_ref","errorMessages","values","filter","message","push","Alert","isOpen","assertive","buyboxErrorMessageHeader","map","index","key","getQuantityLimitsMessages","_isOrderQuantityLimitsFeatureEnabled","Node","_renderMaxLabel","maxQuantityText","_renderMinLabel","minQuantityText","RetailDefaultOrderQuantityLimitsFeatureName","MAX_VALUE","_props$data$featureSt","_props$data$featureSt2","_props$context","_props$context$reques","_props$context$reques2","_props$context$reques3","featureState","find","IsEnabled","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","customerInfo","IsB2b","getBuyboxFindInStore","_data$product","_data$productPrice","_data$storeSelectorSt","_data$cart","_data$deliveryOptions","_data$featureState","_data$featureState$re","_data$featureState$re2","_props$data$product","_props$data$productPr","slots","storeSelector","findInStoreHeaderText","findInStoreDescriptionText","findInStoreLinkText","buyBoxGoToCartText","buyBoxContinueShoppingText","buyBoxSingleItemText","buyBoxMultiLineItemFormatText","buyBoxHeaderMessageText","descriptionTextToShowAllPickupOptions","storeSelectorStateManager","retailMulitplePickupMFeatureState","modalOpen","_props$data","_props$data$featureSt3","modules","dataProduct","multiplePickupStoreSwitchName","Dimensions","DimensionValue","Value","storeSelectorId","keys","openDialog","onLocationSelected","orgUnitLocation","deliveryMode","_props$context$app","_props$context$app$co","Promise","resolve","behavior","addToCartBehavior","addProductToCart","count","then","changeModalOpen","ProductAvailableQuantity","failureResult","catch","error","exception","debug","findInStoreOnClick","DeliveryOptions","option","Code","dialogStrings","goToCartText","continueShoppingText","headerItemOneText","headerItemFormatText","headerMessageText","defaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","popupProps","imageSettings","gridSettings","productQuantity","setModalOpen","renderModalPopup","Popup","openFindInStoreDialog","description","productPickupOptionList","item","modal","Dropdown","selectMenu","_onChanged","selectedIndex","event","dropdownId","selectId","selectedValue","innerText","dropdownName","componentDidMount","dropdownList","dropdownToggleName","selected","hidden","getBuyboxProductConfigure","productDimensions","getDropdownName","onChanged","notification","dimensionSelectedAsync","dropdowns","productDimensionFull","_mapProductDimensionFullToDropdownViewProps","dimensionChanged","dropdownCallback","selectDimensionFormatString","toLocaleLowerCase","DimensionValues","dimensionValue","errorMessage","select","Buybox","dimensionUpdateQueue","FinitePromiseQueue","buyboxCallbacks","newQuantity","newErrorState","updateSelectedProduct","newSelectedProduct","newInventory","newPrice","newDeliveryOptions","productDeliveryOptions","_updatePrice","selectedDimensionId","selectedDimensionValueId","enqueue","_updateDimensions","reason","FinitePromiseQueueError","dimensionType","_getDropdownName","isModalOpen","isUpdatingDimension","isUpdatingDeliveryOptions","customPrice","isPriceKeyedIn","apiSettings","channelId","dimensionsToUpdate","clearOtherErrorState","mappedDimensions","_updateDimensionValue","ExtensionProperties","reject","newProduct","getSelectedVariant","SelectedVariantInput","MasterProductId","getDimensionsForSelectedVariant","GetDimensionsForSelectedVariantInput","variantProduct","_this$props$data$feat","newAvailableQuantity","getProductAvailabilitiesForSelectedVariant","ProductAvailabilitiesForSelectedVariantInput","getPriceForSelectedVariant","PriceForSelectedVariantInput","RetailMulitplePickupMFeatureState","getDeliveryOptionsForSelectedVariant","GetDeliveryOptionsForSelectedVariantInput","_updateQuantitiesInState","newValueId","_this$props$data$prod","productDimensionTypeColor","productDimensionTypeConfiguration","productDimensionTypeSize","productDimensionTypeAmount","productDimensionTypeStyle","openOverlay","user","isAuthenticated","PRODUCTASSERVICE","ItemTypeValue","isServiceItem","mediaGallery","viewProps","ModuleProps","moduleProps","classnames","MediaGalleryContainerProps","ProductInfoContainerProps","configure","findInStore","addToCart","addToOrderTemplate","addToWishlist","rating","hideRating","inventoryLabel","shopSimilarLook","enableShopSimilarLooks","keyInPrice","enableKeyInPrice","quantityLimitsMessages","renderView","Overlay","open","closeOnClick","console","log","stopPropagation","locale","style","display","flexDirection","justifyContent","alignItems","width","signInUrl","arguments","CustomerContextualPrice","_product$Behavior","_product$Behavior2","_product$Behavior3","_product$Behavior4","_product$Behavior5","Behavior","DefaultQuantity","MinimumQuantity","MaximumQuantity","_this$props$context$r","_this$props$context$r2","_this$props$context$r3","_featureStatuses$find","featureStatuses","msg","information","_renderAddToCart","button2","_renderAddToOrderTemplate","_renderConfigure","_renderConfigureDropdown","_renderSocialShare","socialShare","dropdown","_renderFindInStore","_renderQuantity","_renderKeyInPrice","Module","isMobile","binding","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","__bindings__","viewDictionary","cn","BaseStoreSelectorStateManager","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","isMapModuleLoaded","_readFromToCookie","storeInfo","JSON","parse","preferredStore","_unused","isDialogOpen","_context","storeId","selectedStoreLocationId","storeName","writeToCookie","StoreId","StoreName","Latitude","Longitude","_writeToCookie","stringify","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","MsDyn365","localStorage","removeItem","setItem","cookieValue","getItem","computed","observable","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","BingMapsApiKey","BingMapsEnabled","searchContent","jsonp","crypto","getRandomValues","Uint32Array","ChannelCountryRegionISOCode","trim","query","encodeURI","geolocationApiUrl","requestUrl","script","createElement","remove","resourceSets","point","coordinates","body","appendChild","_document","StringExtensions","getElementById","url","lang","market","_document2","_document3","_document3$body","defer","src","mapAPIReady","isMapApiLoaded","addEventListener","createStoreSelectorStateInput","GenericInput","getGenericActionDataAction","createObservableDataAction","getGenericAction","inputData","module","exports","ArrayBuffer","DataView","NAME","Constructor","Prototype","NATIVE_ARRAY_BUFFER","DESCRIPTORS","global","isCallable","isObject","hasOwn","classof","tryToString","createNonEnumerableProperty","defineBuiltIn","defineBuiltInAccessor","isPrototypeOf","getPrototypeOf","setPrototypeOf","wellKnownSymbol","uid","InternalStateModule","enforceInternalState","enforce","getInternalState","get","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","TypeError","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","getTypedArrayConstructor","it","proto","isTypedArray","klass","Function","configurable","aTypedArray","aTypedArrayConstructor","C","exportTypedArrayMethod","KEY","property","forced","options","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","isView","toObject","toAbsoluteIndex","lengthOfArrayLike","O","argumentsLength","end","endPos","toPrimitive","$TypeError","argument","prim","BigInt","toPositiveInteger","$RangeError","RangeError","BYTES","offset","toIntegerOrInfinity","ArrayBufferViewCore","$fill","toBigInt","call","uncurryThis","fails","slice","actualValue","fill","valueOf","toOffset","toIndexedObject","$set","set","WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS","array","TO_OBJECT_BUG","arrayLike","len","aCallable","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","nativeSort","sort","ACCEPT_INCORRECT_ARGUMENTS","STABLE_SORT","mod","expected","Array","a","b","comparefn","x","y","getSortCompare","apply","arraySlice","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","ReactDOM"],"sourceRoot":""}